diff --git a/compiler/literate/html.ml b/compiler/literate/html.ml
index e618f4b4..2e87baa5 100644
--- a/compiler/literate/html.ml
+++ b/compiler/literate/html.ml
@@ -75,7 +75,6 @@ let wrap_html
Format.fprintf fmt
"
\n\
\n\
\n\
@@ -185,15 +184,22 @@ let rec law_structure_to_html
| A.CodeBlock _ -> ()
| A.LawHeading (heading, children) ->
let h_number = heading.law_heading_precedence + 1 in
+ let is_a_section_to_collapse =
+ (* Only 2 depth sections are collasped in a tag. Indeed, this
+ allow to significantly reduce rendering time (~= 100x for the
+ [aides_logement] example in the catala-website), while remaining
+ practicable. *)
+ h_number = 2
+ in
let h_name = Marked.unmark heading.law_heading_name in
let complete_headings = parents_headings @ [h_name] in
let id = complete_headings |> String.concat "-" |> sanitize_html_href in
let fmt_details_open fmt () =
- if 2 = h_number then
+ if is_a_section_to_collapse then
Format.fprintf fmt "%s
" h_name
in
let fmt_details_close fmt () =
- if 2 = h_number then Format.fprintf fmt " "
+ if is_a_section_to_collapse then Format.fprintf fmt " "
in
Format.fprintf fmt
"%s%s@\n\
diff --git a/compiler/utils/string_common.mli b/compiler/utils/string_common.mli
index 9a83a3e9..07bdc521 100644
--- a/compiler/utils/string_common.mli
+++ b/compiler/utils/string_common.mli
@@ -14,8 +14,7 @@
License for the specific language governing permissions and limitations under
the License. *)
-(** Helper functions manipulating strings common to all Catala compiler
- internals. *)
+(** Helper functions used for string manipulation. *)
val to_ascii : string -> string
(** Removes all non-ASCII diacritics from a string by converting them to their
diff --git a/compiler/utils/utils.mld b/compiler/utils/utils.mld
index 3fbf7d4a..17fb6c01 100644
--- a/compiler/utils/utils.mld
+++ b/compiler/utils/utils.mld
@@ -37,8 +37,8 @@ Related modules:
{!modules: Utils.Errors}
-{1 File utilities}
+{1 Other utilies}
Related modules:
-{!modules: Utils.File}
+{!modules: Utils.File Utils.String_common}
diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js
index 4d48f40f..0363886e 100644
--- a/french_law/js/french_law.js
+++ b/french_law/js/french_law.js
@@ -1,136361 +1,9630 @@
-//# 1 "api_web.bc.runtime.js"
// Generated by js_of_ocaml 4.0.0+git-0.5.0-666-g0ac754b7-dirty
-(function
- (Object)
- {typeof globalThis
- !==
- "object"
- &&
- (this
- ?get()
- :(Object.defineProperty
- (Object.prototype,"_T_",{configurable:true,get:get}),
- _T_));
- function get()
- {var global=this || self;
- global.globalThis = global;
- delete Object.prototype._T_}}
- (Object));
-(function(globalThis)
- {"use strict";
- var joo_global_object=globalThis;
- function caml_int64_is_zero(x){return + x.isZero()}
- function caml_str_repeat(n,s)
- {if(n == 0)return "";
- if(s.repeat)return s.repeat(n);
- var r="",l=0;
- for(;;)
- {if(n & 1)r += s;
- n >>= 1;
- if(n == 0)return r;
- s += s;
- l++;
- if(l == 9)s.slice(0,1)}}
- var caml_int64_offset=Math.pow(2,- 24);
- function caml_raise_constant(tag){throw tag}
- var caml_global_data=[0];
- function caml_raise_zero_divide()
- {caml_raise_constant(caml_global_data.Division_by_zero)}
- function MlInt64(lo,mi,hi)
- {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff}
- MlInt64.prototype.caml_custom = "_j";
- MlInt64.prototype.copy
- =
- function(){return new MlInt64(this.lo,this.mi,this.hi)};
- MlInt64.prototype.ucompare
- =
- function(x)
- {if(this.hi > x.hi)return 1;
- if(this.hi < x.hi)return - 1;
- if(this.mi > x.mi)return 1;
- if(this.mi < x.mi)return - 1;
- if(this.lo > x.lo)return 1;
- if(this.lo < x.lo)return - 1;
- return 0};
- MlInt64.prototype.compare
- =
- function(x)
- {var hi=this.hi << 16,xhi=x.hi << 16;
- if(hi > xhi)return 1;
- if(hi < xhi)return - 1;
- if(this.mi > x.mi)return 1;
- if(this.mi < x.mi)return - 1;
- if(this.lo > x.lo)return 1;
- if(this.lo < x.lo)return - 1;
- return 0};
- MlInt64.prototype.neg
- =
- function()
- {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24);
- return new MlInt64(lo,mi,hi)};
- MlInt64.prototype.add
- =
- function(x)
- {var
- lo=this.lo + x.lo,
- mi=this.mi + x.mi + (lo >> 24),
- hi=this.hi + x.hi + (mi >> 24);
- return new MlInt64(lo,mi,hi)};
- MlInt64.prototype.sub
- =
- function(x)
- {var
- lo=this.lo - x.lo,
- mi=this.mi - x.mi + (lo >> 24),
- hi=this.hi - x.hi + (mi >> 24);
- return new MlInt64(lo,mi,hi)};
- MlInt64.prototype.mul
- =
- function(x)
- {var
- lo=this.lo * x.lo,
- mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi,
- hi=
- (mi * caml_int64_offset | 0)
- +
- this.hi
- *
- x.lo
- +
- this.mi
- *
- x.mi
- +
- this.lo
- *
- x.hi;
- return new MlInt64(lo,mi,hi)};
- MlInt64.prototype.isZero
- =
- function(){return (this.lo | this.mi | this.hi) == 0};
- MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0};
- MlInt64.prototype.and
- =
- function(x)
- {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)};
- MlInt64.prototype.or
- =
- function(x)
- {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)};
- MlInt64.prototype.xor
- =
- function(x)
- {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)};
- MlInt64.prototype.shift_left
- =
- function(s)
- {s = s & 63;
- if(s == 0)return this;
- if(s < 24)
- return new
- MlInt64
- (this.lo << s,
- this.mi << s | this.lo >> 24 - s,
- this.hi << s | this.mi >> 24 - s);
- if(s < 48)
- return new
- MlInt64
- (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s);
- return new MlInt64(0,0,this.lo << s - 48)};
- MlInt64.prototype.shift_right_unsigned
- =
- function(s)
- {s = s & 63;
- if(s == 0)return this;
- if(s < 24)
- return new
- MlInt64
- (this.lo >> s | this.mi << 24 - s,
- this.mi >> s | this.hi << 24 - s,
- this.hi >> s);
- if(s < 48)
- return new
- MlInt64
- (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0);
- return new MlInt64(this.hi >> s - 48,0,0)};
- MlInt64.prototype.shift_right
- =
- function(s)
- {s = s & 63;
- if(s == 0)return this;
- var h=this.hi << 16 >> 16;
- if(s < 24)
- return new
- MlInt64
- (this.lo >> s | this.mi << 24 - s,
- this.mi >> s | h << 24 - s,
- this.hi << 16 >> s >>> 16);
- var sign=this.hi << 16 >> 31;
- if(s < 48)
- return new
- MlInt64
- (this.mi >> s - 24 | this.hi << 48 - s,
- this.hi << 16 >> s - 24 >> 16,
- sign & 0xffff);
- return new MlInt64(this.hi << 16 >> s - 32,sign,sign)};
- MlInt64.prototype.lsl1
- =
- function()
- {this.hi = this.hi << 1 | this.mi >> 23;
- this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff;
- this.lo = this.lo << 1 & 0xffffff};
- MlInt64.prototype.lsr1
- =
- function()
- {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff;
- this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff;
- this.hi = this.hi >>> 1};
- MlInt64.prototype.udivmod
- =
- function(x)
- {var
- offset=0,
- modulus=this.copy(),
- divisor=x.copy(),
- quotient=new MlInt64(0,0,0);
- while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()}
- while(offset >= 0)
- {offset--;
- quotient.lsl1();
- if(modulus.ucompare(divisor) >= 0)
- {quotient.lo++;modulus = modulus.sub(divisor)}
- divisor.lsr1()}
- return {quotient:quotient,modulus:modulus}};
- MlInt64.prototype.div
- =
- function(y)
- {var x=this;
- if(y.isZero())caml_raise_zero_divide();
- var sign=x.hi ^ y.hi;
- if(x.hi & 0x8000)x = x.neg();
- if(y.hi & 0x8000)y = y.neg();
- var q=x.udivmod(y).quotient;
- if(sign & 0x8000)q = q.neg();
- return q};
- MlInt64.prototype.mod
- =
- function(y)
- {var x=this;
- if(y.isZero())caml_raise_zero_divide();
- var sign=x.hi;
- if(x.hi & 0x8000)x = x.neg();
- if(y.hi & 0x8000)y = y.neg();
- var r=x.udivmod(y).modulus;
- if(sign & 0x8000)r = r.neg();
- return r};
- MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24};
- MlInt64.prototype.toFloat
- =
- function()
- {return (this.hi << 16)
- *
- Math.pow(2,32)
- +
- this.mi
- *
- Math.pow(2,24)
- +
- this.lo};
- MlInt64.prototype.toArray
- =
- function()
- {return [this.hi >> 8,
- this.hi & 0xff,
- this.mi >> 16,
- this.mi >> 8 & 0xff,
- this.mi & 0xff,
- this.lo >> 16,
- this.lo >> 8 & 0xff,
- this.lo & 0xff]};
- MlInt64.prototype.lo32
- =
- function(){return this.lo | (this.mi & 0xff) << 24};
- MlInt64.prototype.hi32
- =
- function(){return this.mi >>> 8 & 0xffff | this.hi << 16};
- function caml_int64_of_int32(x)
- {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)}
- function caml_int64_to_int32(x){return x.toInt()}
- function caml_int64_is_negative(x){return + x.isNeg()}
- function caml_int64_neg(x){return x.neg()}
- function caml_subarray_to_jsbytes(a,i,len)
- {var f=String.fromCharCode;
- if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a);
- var s="";
- for(;0 < len;i += 1024,len -= 1024)
- s += f.apply(null,a.slice(i,i + Math.min(len,1024)));
- return s}
- function caml_convert_string_to_bytes(s)
- {if(s.t == 2)
- s.c += caml_str_repeat(s.l - s.c.length,"\0");
- else
- s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length);
- s.t = 0}
- function caml_jsbytes_of_string(s)
- {s.t & 6 && caml_convert_string_to_bytes(s);return s.c}
- function caml_raise_with_arg(tag,arg){throw [0,tag,arg]}
- function jsoo_is_ascii(s)
- {if(s.length < 24)
- {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false;
- return true}
- else
- return ! /[^\x00-\x7f]/.test(s)}
- function caml_utf16_of_utf8(s)
- {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++)
- {c1 = s.charCodeAt(i);
- if(c1 < 0x80)
- {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++);
- if(j - i > 512)
- {t.substr(0,1);b += t;t = "";b += s.slice(i,j)}
- else
- t += s.slice(i,j);
- if(j == l)break;
- i = j}
- v = 1;
- if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128)
- {c = c2 + (c1 << 6);
- if(c1 < 0xe0)
- {v = c - 0x3080;if(v < 0x80)v = 1}
- else
- {v = 2;
- if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128)
- {c = c2 + (c << 6);
- if(c1 < 0xf0)
- {v = c - 0xe2080;
- if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2}
- else
- {v = 3;
- if
- (++i
- <
- l
- &&
- ((c2 = s.charCodeAt(i)) & - 64)
- ==
- 128
- &&
- c1
- <
- 0xf5)
- {v = c2 - 0x3c82080 + (c << 6);
- if(v < 0x10000 || v > 0x10ffff)v = 3}}}}}
- if(v < 4)
- {i -= v;t += "\ufffd"}
- else
- if(v > 0xffff)
- t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF));
- else
- t += String.fromCharCode(v);
- if(t.length > 1024){t.substr(0,1);b += t;t = ""}}
- return b + t}
- function MlBytes(tag,contents,length)
- {this.t = tag;this.c = contents;this.l = length}
- MlBytes.prototype.toString
- =
- function()
- {switch(this.t)
- {case 9:return this.c;
- default:caml_convert_string_to_bytes(this);case 0:
- if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8;
- case 8:return this.c
- }};
- MlBytes.prototype.toUtf16
- =
- function()
- {var r=this.toString();
- if(this.t == 9)return r;
- return caml_utf16_of_utf8(r)};
- MlBytes.prototype.slice
- =
- function()
- {var content=this.t == 4?this.c.slice():this.c;
- return new MlBytes(this.t,content,this.l)};
- function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)}
- function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)}
- function caml_raise_with_string(tag,msg)
- {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))}
- function caml_invalid_argument(msg)
- {caml_raise_with_string(caml_global_data.Invalid_argument,msg)}
- function caml_parse_format(fmt)
- {fmt = caml_jsbytes_of_string(fmt);
- var len=fmt.length;
- if(len > 31)caml_invalid_argument("format_int: format too long");
- var
- f=
- {justify:"+",
- signstyle:"-",
- filler:" ",
- alternate:false,
- base:0,
- signedconv:false,
- width:0,
- uppercase:false,
- sign:1,
- prec:- 1,
- conv:"f"};
- for(var i=0;i < len;i++)
- {var c=fmt.charAt(i);
- switch(c)
- {case "-":f.justify = "-";break;
- case "+":
- case " ":f.signstyle = c;break;
- case "0":f.filler = "0";break;
- case "#":f.alternate = true;break;
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- case "6":
- case "7":
- case "8":
- case "9":
- f.width = 0;
- while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9)
- {f.width = f.width * 10 + c;i++}
- i--;
- break;
- case ".":
- f.prec = 0;
- i++;
- while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9)
- {f.prec = f.prec * 10 + c;i++}
- i--;
- case "d":
- case "i":f.signedconv = true;
- case "u":f.base = 10;break;
- case "x":f.base = 16;break;
- case "X":f.base = 16;f.uppercase = true;break;
- case "o":f.base = 8;break;
- case "e":
- case "f":
- case "g":f.signedconv = true;f.conv = c;break;
- case "E":
- case "F":
- case "G":
- f.signedconv = true;
- f.uppercase = true;
- f.conv = c.toLowerCase();
- break
- }}
- return f}
- function caml_finish_formatting(f,rawbuffer)
- {if(f.uppercase)rawbuffer = rawbuffer.toUpperCase();
- var len=rawbuffer.length;
- if(f.signedconv && (f.sign < 0 || f.signstyle != "-"))len++;
- if(f.alternate){if(f.base == 8)len += 1;if(f.base == 16)len += 2}
- var buffer="";
- if(f.justify == "+" && f.filler == " ")
- for(var i=len;i < f.width;i++)buffer += " ";
- if(f.signedconv)
- if(f.sign < 0)
- buffer += "-";
- else
- if(f.signstyle != "-")buffer += f.signstyle;
- if(f.alternate && f.base == 8)buffer += "0";
- if(f.alternate && f.base == 16)buffer += "0x";
- if(f.justify == "+" && f.filler == "0")
- for(var i=len;i < f.width;i++)buffer += "0";
- buffer += rawbuffer;
- if(f.justify == "-")for(var i=len;i < f.width;i++)buffer += " ";
- return caml_string_of_jsbytes(buffer)}
- function caml_int64_format(fmt,x)
- {var f=caml_parse_format(fmt);
- if(f.signedconv && caml_int64_is_negative(x))
- {f.sign = - 1;x = caml_int64_neg(x)}
- var
- buffer="",
- wbase=caml_int64_of_int32(f.base),
- cvtbl="0123456789abcdef";
- do
- {var p=x.udivmod(wbase);
- x = p.quotient;
- buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + buffer}
- while
- (! caml_int64_is_zero(x));
- if(f.prec >= 0)
- {f.filler = " ";
- var n=f.prec - buffer.length;
- if(n > 0)buffer = caml_str_repeat(n,"0") + buffer}
- return caml_finish_formatting(f,buffer)}
- function caml_expm1_float(x){return Math.expm1(x)}
- function caml_jsstring_of_string(s){return s.toUtf16()}
- function fs_node_supported()
- {return typeof globalThis.process
- !==
- "undefined"
- &&
- typeof globalThis.process.versions
- !==
- "undefined"
- &&
- typeof globalThis.process.versions.node
- !==
- "undefined"}
- function make_path_is_absolute()
- {function posix(path)
- {if(path.charAt(0) === "/")return ["",path.substring(1)];return}
- function win32(path)
- {var
- splitDeviceRe=
- /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,
- result=splitDeviceRe.exec(path),
- device=result[1] || "",
- isUnc=Boolean(device && device.charAt(1) !== ":");
- if(Boolean(result[2] || isUnc))
- {var root=result[1] || "",sep=result[2] || "";
- return [root,path.substring(root.length + sep.length)]}
- return}
- return fs_node_supported()
- &&
- globalThis.process
- &&
- globalThis.process.platform
- ?globalThis.process.platform === "win32"?win32:posix
- :posix}
- var path_is_absolute=make_path_is_absolute();
- function caml_trailing_slash(name)
- {return name.slice(- 1) !== "/"?name + "/":name}
- if(fs_node_supported() && globalThis.process && globalThis.process.cwd)
- var caml_current_dir=globalThis.process.cwd().replace(/\\/g,"/");
- else
- var caml_current_dir="/static";
- caml_current_dir = caml_trailing_slash(caml_current_dir);
- function caml_make_path(name)
- {name = caml_jsstring_of_string(name);
- if(! path_is_absolute(name))name = caml_current_dir + name;
- var comp0=path_is_absolute(name),comp=comp0[1].split("/"),ncomp=[];
- for(var i=0;i < comp.length;i++)
- switch(comp[i])
- {case "..":if(ncomp.length > 1)ncomp.pop();break;
- case ".":break;
- default:ncomp.push(comp[i]);break}
- ncomp.unshift(comp0[0]);
- ncomp.orig = name;
- return ncomp}
- function caml_utf8_of_utf16(s)
- {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++)
- {c = s.charCodeAt(i);
- if(c < 0x80)
- {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++);
- if(j - i > 512)
- {t.substr(0,1);b += t;t = "";b += s.slice(i,j)}
- else
- t += s.slice(i,j);
- if(j == l)break;
- i = j}
- if(c < 0x800)
- {t += String.fromCharCode(0xc0 | c >> 6);
- t += String.fromCharCode(0x80 | c & 0x3f)}
- else
- if(c < 0xd800 || c >= 0xdfff)
- t
- +=
- String.fromCharCode
- (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f);
- else
- if
- (c
- >=
- 0xdbff
- ||
- i
- +
- 1
- ==
- l
- ||
- (d = s.charCodeAt(i + 1))
- <
- 0xdc00
- ||
- d
- >
- 0xdfff)
- t += "\xef\xbf\xbd";
- else
- {i++;
- c = (c << 10) + d - 0x35fdc00;
- t
- +=
- String.fromCharCode
- (0xf0 | c >> 18,
- 0x80 | c >> 12 & 0x3f,
- 0x80 | c >> 6 & 0x3f,
- 0x80 | c & 0x3f)}
- if(t.length > 1024){t.substr(0,1);b += t;t = ""}}
- return b + t}
- function caml_bytes_of_utf16_jsstring(s)
- {var tag=9;
- if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s);
- return new MlBytes(tag,s,s.length)}
- function caml_string_of_jsstring(s)
- {return caml_bytes_of_utf16_jsstring(s)}
- var
- unix_error=
- ["E2BIG",
- "EACCES",
- "EAGAIN",
- "EBADF",
- "EBUSY",
- "ECHILD",
- "EDEADLK",
- "EDOM",
- "EEXIST",
- "EFAULT",
- "EFBIG",
- "EINTR",
- "EINVAL",
- "EIO",
- "EISDIR",
- "EMFILE",
- "EMLINK",
- "ENAMETOOLONG",
- "ENFILE",
- "ENODEV",
- "ENOENT",
- "ENOEXEC",
- "ENOLCK",
- "ENOMEM",
- "ENOSPC",
- "ENOSYS",
- "ENOTDIR",
- "ENOTEMPTY",
- "ENOTTY",
- "ENXIO",
- "EPERM",
- "EPIPE",
- "ERANGE",
- "EROFS",
- "ESPIPE",
- "ESRCH",
- "EXDEV",
- "EWOULDBLOCK",
- "EINPROGRESS",
- "EALREADY",
- "ENOTSOCK",
- "EDESTADDRREQ",
- "EMSGSIZE",
- "EPROTOTYPE",
- "ENOPROTOOPT",
- "EPROTONOSUPPORT",
- "ESOCKTNOSUPPORT",
- "EOPNOTSUPP",
- "EPFNOSUPPORT",
- "EAFNOSUPPORT",
- "EADDRINUSE",
- "EADDRNOTAVAIL",
- "ENETDOWN",
- "ENETUNREACH",
- "ENETRESET",
- "ECONNABORTED",
- "ECONNRESET",
- "ENOBUFS",
- "EISCONN",
- "ENOTCONN",
- "ESHUTDOWN",
- "ETOOMANYREFS",
- "ETIMEDOUT",
- "ECONNREFUSED",
- "EHOSTDOWN",
- "EHOSTUNREACH",
- "ELOOP",
- "EOVERFLOW"];
- function make_unix_err_args(code,syscall,path,errno)
- {var variant=unix_error.indexOf(code);
- if(variant < 0){if(errno == null)errno = - 9999;variant = [0,errno]}
- var
- args=
- [variant,
- caml_string_of_jsstring(syscall || ""),
- caml_string_of_jsstring(path || "")];
- return args}
- var caml_named_values={};
- function caml_named_value(nm){return caml_named_values[nm]}
- function caml_raise_with_args(tag,args){throw [0,tag].concat(args)}
- function caml_is_ml_bytes(s){return s instanceof MlBytes}
- function caml_is_ml_string(s){return caml_is_ml_bytes(s)}
- function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)}
- function caml_bytes_of_string(s){return s}
- function caml_raise_sys_error(msg)
- {caml_raise_with_string(caml_global_data.Sys_error,msg)}
- function caml_raise_no_such_file(name)
- {caml_raise_sys_error(name + ": No such file or directory")}
- function caml_bytes_bound_error()
- {caml_invalid_argument("index out of bounds")}
- function caml_bytes_unsafe_get(s,i)
- {switch(s.t & 6)
- {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i);
- case 4:return s.c[i]
- }}
- function caml_bytes_get(s,i)
- {if(i >>> 0 >= s.l)caml_bytes_bound_error();
- return caml_bytes_unsafe_get(s,i)}
- function caml_create_bytes(len)
- {if(len < 0)caml_invalid_argument("Bytes.create");
- return new MlBytes(len?2:9,"",len)}
- function caml_ml_bytes_length(s){return s.l}
- function caml_convert_bytes_to_array(s)
- {if(globalThis.Uint8Array)
- var a=new (globalThis.Uint8Array)(s.l);
- else
- var a=new Array(s.l);
- var b=s.c,l=b.length,i=0;
- for(;i < l;i++)a[i] = b.charCodeAt(i);
- for(l = s.l;i < l;i++)a[i] = 0;
- s.c = a;
- s.t = 4;
- return a}
- function caml_blit_bytes(s1,i1,s2,i2,len)
- {if(len == 0)return 0;
- if(i2 == 0 && (len >= s2.l || s2.t == 2 && len >= s2.c.length))
- {s2.c
- =
- s1.t == 4
- ?caml_subarray_to_jsbytes(s1.c,i1,len)
- :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len);
- s2.t = s2.c.length == s2.l?0:2}
- else
- if(s2.t == 2 && i2 == s2.c.length)
- {s2.c
- +=
- s1.t == 4
- ?caml_subarray_to_jsbytes(s1.c,i1,len)
- :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len);
- s2.t = s2.c.length == s2.l?0:2}
- else
- {if(s2.t != 4)caml_convert_bytes_to_array(s2);
- var c1=s1.c,c2=s2.c;
- if(s1.t == 4)
- if(i2 <= i1)
- for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i];
- else
- for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i];
- else
- {var l=Math.min(len,c1.length - i1);
- for(var i=0;i < l;i++)c2[i2 + i] = c1.charCodeAt(i1 + i);
- for(;i < len;i++)c2[i2 + i] = 0}}
- return 0}
- function caml_blit_string(a,b,c,d,e)
- {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0}
- function MlFile(){}
- function MlFakeFile(content){this.data = content}
- MlFakeFile.prototype = new MlFile();
- MlFakeFile.prototype.truncate
- =
- function(len)
- {var old=this.data;
- this.data = caml_create_bytes(len | 0);
- caml_blit_bytes(old,0,this.data,0,len)};
- MlFakeFile.prototype.length
- =
- function(){return caml_ml_bytes_length(this.data)};
- MlFakeFile.prototype.write
- =
- function(offset,buf,pos,len)
- {var clen=this.length();
- if(offset + len >= clen)
- {var new_str=caml_create_bytes(offset + len),old_data=this.data;
- this.data = new_str;
- caml_blit_bytes(old_data,0,this.data,0,clen)}
- caml_blit_string(buf,pos,this.data,offset,len);
- return 0};
- MlFakeFile.prototype.read
- =
- function(offset,buf,pos,len)
- {var clen=this.length();
- caml_blit_bytes(this.data,offset,buf,pos,len);
- return 0};
- MlFakeFile.prototype.read_one
- =
- function(offset){return caml_bytes_get(this.data,offset)};
- MlFakeFile.prototype.close = function(){};
- MlFakeFile.prototype.constructor = MlFakeFile;
- function MlFakeDevice(root,f)
- {this.content = {};this.root = root;this.lookupFun = f}
- MlFakeDevice.prototype.nm = function(name){return this.root + name};
- MlFakeDevice.prototype.create_dir_if_needed
- =
- function(name)
- {var comp=name.split("/"),res="";
- for(var i=0;i < comp.length - 1;i++)
- {res += comp[i] + "/";
- if(this.content[res])continue;
- this.content[res] = Symbol("directory")}};
- MlFakeDevice.prototype.slash
- =
- function(name){return /\/$/.test(name)?name:name + "/"};
- MlFakeDevice.prototype.lookup
- =
- function(name)
- {if(! this.content[name] && this.lookupFun)
- {var
- res=
- this.lookupFun
- (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name));
- if(res !== 0)
- {this.create_dir_if_needed(name);
- this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}}};
- MlFakeDevice.prototype.exists
- =
- function(name)
- {if(name == "")return 1;
- var name_slash=this.slash(name);
- if(this.content[name_slash])return 1;
- this.lookup(name);
- return this.content[name]?1:0};
- MlFakeDevice.prototype.mkdir
- =
- function(name,mode,raise_unix)
- {var unix_error=raise_unix && caml_named_value("Unix.Unix_error");
- if(this.exists(name))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("EEXIST","mkdir",this.nm(name)));
- else
- caml_raise_sys_error(name + ": File exists");
- var parent=/^(.*)\/[^/]+/.exec(name);
- parent = parent && parent[1] || "";
- if(! this.exists(parent))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("ENOENT","mkdir",this.nm(parent)));
- else
- caml_raise_sys_error(parent + ": No such file or directory");
- if(! this.is_dir(parent))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("ENOTDIR","mkdir",this.nm(parent)));
- else
- caml_raise_sys_error(parent + ": Not a directory");
- this.create_dir_if_needed(this.slash(name))};
- MlFakeDevice.prototype.rmdir
- =
- function(name,raise_unix)
- {var
- unix_error=raise_unix && caml_named_value("Unix.Unix_error"),
- name_slash=name == ""?"":this.slash(name),
- r=new RegExp("^" + name_slash + "([^/]+)");
- if(! this.exists(name))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("ENOENT","rmdir",this.nm(name)));
- else
- caml_raise_sys_error(name + ": No such file or directory");
- if(! this.is_dir(name))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("ENOTDIR","rmdir",this.nm(name)));
- else
- caml_raise_sys_error(name + ": Not a directory");
- for(var n in this.content)
- if(n.match(r))
- if(unix_error)
- caml_raise_with_args
- (unix_error,make_unix_err_args("ENOTEMPTY","rmdir",this.nm(name)));
- else
- caml_raise_sys_error(this.nm(name) + ": Directory not empty");
- delete this.content[name_slash]};
- MlFakeDevice.prototype.readdir
- =
- function(name)
- {var name_slash=name == ""?"":this.slash(name);
- if(! this.exists(name))
- caml_raise_sys_error(name + ": No such file or directory");
- if(! this.is_dir(name))caml_raise_sys_error(name + ": Not a directory");
- var r=new RegExp("^" + name_slash + "([^/]+)"),seen={},a=[];
- for(var n in this.content)
- {var m=n.match(r);
- if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}}
- return a};
- MlFakeDevice.prototype.is_dir
- =
- function(name)
- {if(name == "")return true;
- var name_slash=this.slash(name);
- return this.content[name_slash]?1:0};
- MlFakeDevice.prototype.unlink
- =
- function(name)
- {var ok=this.content[name]?true:false;
- delete this.content[name];
- return ok};
- MlFakeDevice.prototype.open
- =
- function(name,f)
- {if(f.rdonly && f.wronly)
- caml_raise_sys_error
- (this.nm(name)
- +
- " : flags Open_rdonly and Open_wronly are not compatible");
- if(f.text && f.binary)
- caml_raise_sys_error
- (this.nm(name)
- +
- " : flags Open_text and Open_binary are not compatible");
- this.lookup(name);
- if(this.content[name])
- {if(this.is_dir(name))
- caml_raise_sys_error(this.nm(name) + " : is a directory");
- if(f.create && f.excl)
- caml_raise_sys_error(this.nm(name) + " : file already exists");
- var file=this.content[name];
- if(f.truncate)file.truncate();
- return file}
- else
- if(f.create)
- {this.create_dir_if_needed(name);
- this.content[name] = new MlFakeFile(caml_create_bytes(0));
- return this.content[name]}
- else
- caml_raise_no_such_file(this.nm(name))};
- MlFakeDevice.prototype.register
- =
- function(name,content)
- {var file;
- if(this.content[name])
- caml_raise_sys_error(this.nm(name) + " : file already exists");
- if(caml_is_ml_bytes(content))file = new MlFakeFile(content);
- if(caml_is_ml_string(content))
- file = new MlFakeFile(caml_bytes_of_string(content));
- else
- if(content instanceof Array)
- file = new MlFakeFile(caml_bytes_of_array(content));
- else
- if(typeof content === "string")
- file = new MlFakeFile(caml_bytes_of_jsbytes(content));
- else
- if(content.toString)
- {var
- bytes=
- caml_bytes_of_string(caml_string_of_jsstring(content.toString()));
- file = new MlFakeFile(bytes)}
- if(file)
- {this.create_dir_if_needed(name);this.content[name] = file}
- else
- caml_raise_sys_error
- (this.nm(name) + " : registering file with invalid content type")};
- MlFakeDevice.prototype.constructor = MlFakeDevice;
- function caml_ml_string_length(s){return caml_ml_bytes_length(s)}
- function caml_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)}
- function caml_array_of_string(s)
- {var l=caml_ml_string_length(s),a=new Array(l),i=0;
- for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i);
- return a}
- function caml_array_of_bytes(s)
- {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c}
- function caml_bytes_unsafe_set(s,i,c)
- {c &= 0xff;
- if(s.t != 4)
- {if(i == s.c.length)
- {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0}
- caml_convert_bytes_to_array(s)}
- s.c[i] = c;
- return 0}
- function caml_bytes_set(s,i,c)
- {if(i >>> 0 >= s.l)caml_bytes_bound_error();
- return caml_bytes_unsafe_set(s,i,c)}
- function MlNodeFile(fd){this.fs = require("fs");this.fd = fd}
- MlNodeFile.prototype = new MlFile();
- MlNodeFile.prototype.truncate
- =
- function(len)
- {try
- {this.fs.ftruncateSync(this.fd,len | 0)}
- catch(err){caml_raise_sys_error(err.toString())}};
- MlNodeFile.prototype.length
- =
- function()
- {try
- {return this.fs.fstatSync(this.fd).size}
- catch(err){caml_raise_sys_error(err.toString())}};
- MlNodeFile.prototype.write
- =
- function(offset,buf,buf_offset,len)
- {var a=caml_array_of_string(buf);
- if(! (a instanceof globalThis.Uint8Array))
- a = new (globalThis.Uint8Array)(a);
- var buffer=globalThis.Buffer.from(a);
- try
- {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)}
- catch(err){caml_raise_sys_error(err.toString())}
- return 0};
- MlNodeFile.prototype.read
- =
- function(offset,buf,buf_offset,len)
- {var a=caml_array_of_bytes(buf);
- if(! (a instanceof globalThis.Uint8Array))
- a = new (globalThis.Uint8Array)(a);
- var buffer=globalThis.Buffer.from(a);
- try
- {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)}
- catch(err){caml_raise_sys_error(err.toString())}
- for(var i=0;i < len;i++)
- caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]);
- return 0};
- MlNodeFile.prototype.read_one
- =
- function(offset)
- {var a=new (globalThis.Uint8Array)(1),buffer=globalThis.Buffer.from(a);
- try
- {this.fs.readSync(this.fd,buffer,0,1,offset)}
- catch(err){caml_raise_sys_error(err.toString())}
- return buffer[0]};
- MlNodeFile.prototype.close
- =
- function()
- {try
- {this.fs.closeSync(this.fd)}
- catch(err){caml_raise_sys_error(err.toString())}};
- MlNodeFile.prototype.constructor = MlNodeFile;
- function MlNodeDevice(root){this.fs = require("fs");this.root = root}
- MlNodeDevice.prototype.nm = function(name){return this.root + name};
- MlNodeDevice.prototype.exists
- =
- function(name)
- {try {return this.fs.existsSync(this.nm(name))?1:0}catch(err){return 0}};
- MlNodeDevice.prototype.mkdir
- =
- function(name,mode,raise_unix)
- {try
- {this.fs.mkdirSync(this.nm(name),{mode:mode});return 0}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.rmdir
- =
- function(name,raise_unix)
- {try
- {this.fs.rmdirSync(this.nm(name));return 0}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.readdir
- =
- function(name,raise_unix)
- {try
- {return this.fs.readdirSync(this.nm(name))}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.is_dir
- =
- function(name)
- {try
- {return this.fs.statSync(this.nm(name)).isDirectory()?1:0}
- catch(err){caml_raise_sys_error(err.toString())}};
- MlNodeDevice.prototype.unlink
- =
- function(name,raise_unix)
- {try
- {var b=this.fs.existsSync(this.nm(name))?1:0;
- this.fs.unlinkSync(this.nm(name));
- return b}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.open
- =
- function(name,f,raise_unix)
- {var consts=require("constants"),res=0;
- for(var key in f)
- switch(key)
- {case "rdonly":res |= consts.O_RDONLY;break;
- case "wronly":res |= consts.O_WRONLY;break;
- case "append":res |= consts.O_WRONLY | consts.O_APPEND;break;
- case "create":res |= consts.O_CREAT;break;
- case "truncate":res |= consts.O_TRUNC;break;
- case "excl":res |= consts.O_EXCL;break;
- case "binary":res |= consts.O_BINARY;break;
- case "text":res |= consts.O_TEXT;break;
- case "nonblock":res |= consts.O_NONBLOCK;break
- }
- try
- {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.rename
- =
- function(o,n,raise_unix)
- {try
- {this.fs.renameSync(this.nm(o),this.nm(n))}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.stat
- =
- function(name,raise_unix)
- {try
- {var js_stats=this.fs.statSync(this.nm(name));
- return this.stats_from_js(js_stats)}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.lstat
- =
- function(name,raise_unix)
- {try
- {var js_stats=this.fs.lstatSync(this.nm(name));
- return this.stats_from_js(js_stats)}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.symlink
- =
- function(to_dir,target,path,raise_unix)
- {try
- {this.fs.symlinkSync(this.nm(target),this.nm(path),to_dir?"dir":"file");
- return 0}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.readlink
- =
- function(name,raise_unix)
- {try
- {var link=this.fs.readlinkSync(this.nm(name),"utf8");
- return caml_string_of_jsstring(link)}
- catch(err){this.raise_nodejs_error(err,raise_unix)}};
- MlNodeDevice.prototype.raise_nodejs_error
- =
- function(err,raise_unix)
- {var unix_error=caml_named_value("Unix.Unix_error");
- if(raise_unix && unix_error)
- {var args=make_unix_err_args(err.code,err.syscall,err.path,err.errno);
- caml_raise_with_args(unix_error,args)}
- else
- caml_raise_sys_error(err.toString())};
- MlNodeDevice.prototype.stats_from_js
- =
- function(js_stats)
- {var file_kind;
- if(js_stats.isFile())
- file_kind = 0;
- else
- if(js_stats.isDirectory())
- file_kind = 1;
- else
- if(js_stats.isCharacterDevice())
- file_kind = 2;
- else
- if(js_stats.isBlockDevice())
- file_kind = 3;
- else
- if(js_stats.isSymbolicLink())
- file_kind = 4;
- else
- if(js_stats.isFIFO())
- file_kind = 5;
- else
- if(js_stats.isSocket())file_kind = 6;
- return [0,
- js_stats.dev,
- js_stats.ino,
- file_kind,
- js_stats.mode,
- js_stats.nlink,
- js_stats.uid,
- js_stats.gid,
- js_stats.rdev,
- js_stats.size,
- js_stats.atimeMs,
- js_stats.mtimeMs,
- js_stats.ctimeMs]};
- MlNodeDevice.prototype.constructor = MlNodeDevice;
- function caml_get_root(path)
- {var x=path_is_absolute(path);if(! x)return;return x[0] + "/"}
- function caml_failwith(msg)
- {if(! caml_global_data.Failure)
- caml_global_data.Failure = [248,caml_string_of_jsbytes("Failure"),- 3];
- caml_raise_with_string(caml_global_data.Failure,msg)}
- var
- caml_root=
- caml_get_root(caml_current_dir)
- ||
- caml_failwith("unable to compute caml_root"),
- jsoo_mount_point=[];
- if(fs_node_supported())
- jsoo_mount_point.push
- ({path:caml_root,device:new MlNodeDevice(caml_root)});
- else
- jsoo_mount_point.push
- ({path:caml_root,device:new MlFakeDevice(caml_root)});
- jsoo_mount_point.push
- ({path:"/static/",device:new MlFakeDevice("/static/")});
- function resolve_fs_device(name)
- {var
- path=caml_make_path(name),
- name=path.join("/"),
- name_slash=caml_trailing_slash(name),
- res;
- for(var i=0;i < jsoo_mount_point.length;i++)
- {var m=jsoo_mount_point[i];
- if
- (name_slash.search(m.path)
- ==
- 0
- &&
- (! res || res.path.length < m.path.length))
- res
- =
- {path:m.path,
- device:m.device,
- rest:name.substring(m.path.length,name.length)}}
- if(! res && fs_node_supported())
- {var root=caml_get_root(name);
- if(root && root.match(/^[a-zA-Z]:\/$/))
- {var m={path:root,device:new MlNodeDevice(root)};
- jsoo_mount_point.push(m);
- res
- =
- {path:m.path,
- device:m.device,
- rest:name.substring(m.path.length,name.length)}}}
- if(res)return res;
- caml_raise_sys_error("no device found for " + name_slash)}
- function caml_sys_is_directory(name)
- {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest);
- return a?1:0}
- function caml_raise_not_found()
- {caml_raise_constant(caml_global_data.Not_found)}
- function caml_sys_getenv(name)
- {var g=globalThis,n=caml_jsstring_of_string(name);
- if(g.process && g.process.env && g.process.env[n] != undefined)
- return caml_string_of_jsstring(g.process.env[n]);
- if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n])
- return caml_string_of_jsstring(globalThis.jsoo_static_env[n]);
- caml_raise_not_found()}
- function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits)
- {if(nbits == 0){nat2.data[ofs2] = 0;return 0}
- var wrap=0;
- for(var i=len1 - 1;i >= 0;i--)
- {var a=nat1.data[ofs1 + i] >>> 0;
- nat1.data[ofs1 + i] = a >>> nbits | wrap;
- wrap = a << 32 - nbits}
- nat2.data[ofs2] = wrap;
- return 0}
- var caml_gr_state;
- function caml_gr_state_get()
- {if(caml_gr_state)return caml_gr_state;
- throw [0,
- caml_named_value("Graphics.Graphic_failure"),
- caml_string_of_jsbytes("Not initialized")]}
- function caml_gr_point_color(x,y)
- {var
- s=caml_gr_state_get(),
- im=s.context.getImageData(x,s.height - y,1,1),
- d=im.data;
- return (d[0] << 16) + (d[1] << 8) + d[2]}
- var MlObjectTable;
- if(typeof globalThis.WeakMap === "undefined")
- MlObjectTable
- =
- function()
- {function NaiveLookup(objs){this.objs = objs}
- NaiveLookup.prototype.get
- =
- function(v)
- {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i};
- NaiveLookup.prototype.set = function(){};
- return function()
- {this.objs = [];this.lookup = new NaiveLookup(this.objs)}}
- ();
- else
- MlObjectTable
- =
- function(){this.objs = [];this.lookup = new (globalThis.WeakMap)()};
- MlObjectTable.prototype.store
- =
- function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)};
- MlObjectTable.prototype.recall
- =
- function(v)
- {var i=this.lookup.get(v);
- return i === undefined?undefined:this.objs.length - i};
- function caml_sys_rename(o,n)
- {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n);
- if(o_root.device != n_root.device)
- caml_failwith
- ("caml_sys_rename: cannot move file between two filesystem");
- if(! o_root.device.rename)
- caml_failwith("caml_sys_rename: no implemented");
- o_root.device.rename(o_root.rest,n_root.rest)}
- function caml_log10_float(x){return Math.log10(x)}
- function unix_unlink(name)
- {var root=resolve_fs_device(name);
- if(! root.device.unlink)caml_failwith("unix_unlink: not implemented");
- return root.device.unlink(root.rest,true)}
- var caml_runtime_warnings=0;
- function caml_ml_enable_runtime_warnings(bool)
- {caml_runtime_warnings = bool;return 0}
- function caml_classify_float(x)
- {if(isFinite(x))
- {if(Math.abs(x) >= 2.2250738585072014e-308)return 0;
- if(x != 0)return 1;
- return 2}
- return isNaN(x)?4:3}
- function unix_rmdir(name)
- {var root=resolve_fs_device(name);
- if(! root.device.rmdir)caml_failwith("unix_rmdir: not implemented");
- return root.device.rmdir(root.rest,true)}
- function caml_ml_refill_input(chan)
- {var str=chan.refill(),str_len=caml_ml_string_length(str);
- if(str_len == 0)chan.refill = null;
- chan.file.write(chan.file.length(),str,0,str_len);
- return str_len}
- var caml_ml_channels=new Array();
- function caml_ml_may_refill_input(chanid)
- {var chan=caml_ml_channels[chanid];
- if(chan.refill == null)return;
- if(chan.file.length() != chan.offset)return;
- caml_ml_refill_input(chan)}
- function caml_array_bound_error()
- {caml_invalid_argument("index out of bounds")}
- function caml_ml_input_scan_line(chanid)
- {var chan=caml_ml_channels[chanid];
- caml_ml_may_refill_input(chanid);
- var p=chan.offset,len=chan.file.length();
- if(p >= len)return 0;
- while(true)
- {if(p >= len)return - (p - chan.offset);
- if(chan.file.read_one(p) == 10)return p - chan.offset + 1;
- p++}}
- function caml_gc_minor(){return 0}
- var
- bigInt=
- function(undefined)
- {"use strict";
- var
- BASE=1e7,
- LOG_BASE=7,
- MAX_INT=9007199254740992,
- MAX_INT_ARR=smallToArray(MAX_INT),
- DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz",
- BigInt=joo_global_object.BigInt,
- supportsNativeBigInt=typeof BigInt === "function";
- function Integer(v,radix,alphabet,caseSensitive)
- {if(typeof v === "undefined")return Integer[0];
- if(typeof radix !== "undefined")
- return + radix === 10 && ! alphabet
- ?parseValue(v)
- :parseBase(v,radix,alphabet,caseSensitive);
- return parseValue(v)}
- function BigInteger(value,sign)
- {this.value = value;
- this.sign = sign;
- this.isSmall = false;
- this.caml_custom = "_z"}
- BigInteger.prototype = Object.create(Integer.prototype);
- function SmallInteger(value)
- {this.value = value;
- this.sign = value < 0;
- this.isSmall = true;
- this.caml_custom = "_z"}
- SmallInteger.prototype = Object.create(Integer.prototype);
- function NativeBigInt(value)
- {this.value = value;this.caml_custom = "_z"}
- NativeBigInt.prototype = Object.create(Integer.prototype);
- function isPrecise(n){return - MAX_INT < n && n < MAX_INT}
- function smallToArray(n)
- {if(n < 1e7)return [n];
- if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)];
- return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]}
- function arrayToSmall(arr)
- {trim(arr);
- var length=arr.length;
- if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0)
- switch(length)
- {case 0:return 0;
- case 1:return arr[0];
- case 2:return arr[0] + arr[1] * BASE;
- default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE}
- return arr}
- function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1}
- function createArray(length)
- {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x}
- function truncate(n)
- {if(n > 0)return Math.floor(n);return Math.ceil(n)}
- function add(a,b)
- {var
- l_a=a.length,
- l_b=b.length,
- r=new Array(l_a),
- carry=0,
- base=BASE,
- sum,
- i;
- for(i = 0;i < l_b;i++)
- {sum = a[i] + b[i] + carry;
- carry = sum >= base?1:0;
- r[i] = sum - carry * base}
- while(i < l_a)
- {sum = a[i] + carry;
- carry = sum === base?1:0;
- r[i++] = sum - carry * base}
- if(carry > 0)r.push(carry);
- return r}
- function addAny(a,b)
- {if(a.length >= b.length)return add(a,b);return add(b,a)}
- function addSmall(a,carry)
- {var l=a.length,r=new Array(l),base=BASE,sum,i;
- for(i = 0;i < l;i++)
- {sum = a[i] - base + carry;
- carry = Math.floor(sum / base);
- r[i] = sum - carry * base;
- carry += 1}
- while(carry > 0)
- {r[i++] = carry % base;carry = Math.floor(carry / base)}
- return r}
- BigInteger.prototype.add
- =
- function(v)
- {var n=parseValue(v);
- if(this.sign !== n.sign)return this.subtract(n.negate());
- var a=this.value,b=n.value;
- if(n.isSmall)
- return new BigInteger(addSmall(a,Math.abs(b)),this.sign);
- return new BigInteger(addAny(a,b),this.sign)};
- BigInteger.prototype.plus = BigInteger.prototype.add;
- SmallInteger.prototype.add
- =
- function(v)
- {var n=parseValue(v),a=this.value;
- if(a < 0 !== n.sign)return this.subtract(n.negate());
- var b=n.value;
- if(n.isSmall)
- {if(isPrecise(a + b))return new SmallInteger(a + b);
- b = smallToArray(Math.abs(b))}
- return new BigInteger(addSmall(b,Math.abs(a)),a < 0)};
- SmallInteger.prototype.plus = SmallInteger.prototype.add;
- NativeBigInt.prototype.add
- =
- function(v)
- {return new NativeBigInt(this.value + parseValue(v).value)};
- NativeBigInt.prototype.plus = NativeBigInt.prototype.add;
- function subtract(a,b)
- {var
- a_l=a.length,
- b_l=b.length,
- r=new Array(a_l),
- borrow=0,
- base=BASE,
- i,
- difference;
- for(i = 0;i < b_l;i++)
- {difference = a[i] - borrow - b[i];
- if(difference < 0){difference += base;borrow = 1}else borrow = 0;
- r[i] = difference}
- for(i = b_l;i < a_l;i++)
- {difference = a[i] - borrow;
- if(difference < 0)
- difference += base;
- else
- {r[i++] = difference;break}
- r[i] = difference}
- for(;i < a_l;i++)r[i] = a[i];
- trim(r);
- return r}
- function subtractAny(a,b,sign)
- {var value;
- if(compareAbs(a,b) >= 0)
- value = subtract(a,b);
- else
- {value = subtract(b,a);sign = ! sign}
- value = arrayToSmall(value);
- if(typeof value === "number")
- {if(sign)value = - value;return new SmallInteger(value)}
- return new BigInteger(value,sign)}
- function subtractSmall(a,b,sign)
- {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference;
- for(i = 0;i < l;i++)
- {difference = a[i] + carry;
- carry = Math.floor(difference / base);
- difference %= base;
- r[i] = difference < 0?difference + base:difference}
- r = arrayToSmall(r);
- if(typeof r === "number")
- {if(sign)r = - r;return new SmallInteger(r)}
- return new BigInteger(r,sign)}
- BigInteger.prototype.subtract
- =
- function(v)
- {var n=parseValue(v);
- if(this.sign !== n.sign)return this.add(n.negate());
- var a=this.value,b=n.value;
- if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign);
- return subtractAny(a,b,this.sign)};
- BigInteger.prototype.minus = BigInteger.prototype.subtract;
- SmallInteger.prototype.subtract
- =
- function(v)
- {var n=parseValue(v),a=this.value;
- if(a < 0 !== n.sign)return this.add(n.negate());
- var b=n.value;
- if(n.isSmall)return new SmallInteger(a - b);
- return subtractSmall(b,Math.abs(a),a >= 0)};
- SmallInteger.prototype.minus = SmallInteger.prototype.subtract;
- NativeBigInt.prototype.subtract
- =
- function(v)
- {return new NativeBigInt(this.value - parseValue(v).value)};
- NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;
- BigInteger.prototype.negate
- =
- function(){return new BigInteger(this.value,! this.sign)};
- SmallInteger.prototype.negate
- =
- function()
- {var sign=this.sign,small=new SmallInteger(- this.value);
- small.sign = ! sign;
- return small};
- NativeBigInt.prototype.negate
- =
- function(){return new NativeBigInt(- this.value)};
- BigInteger.prototype.abs
- =
- function(){return new BigInteger(this.value,false)};
- SmallInteger.prototype.abs
- =
- function(){return new SmallInteger(Math.abs(this.value))};
- NativeBigInt.prototype.abs
- =
- function()
- {return new NativeBigInt(this.value >= 0?this.value:- this.value)};
- function multiplyLong(a,b)
- {var
- a_l=a.length,
- b_l=b.length,
- l=a_l + b_l,
- r=createArray(l),
- base=BASE,
- product,
- carry,
- i,
- a_i,
- b_j;
- for(i = 0;i < a_l;++i)
- {a_i = a[i];
- for(var j=0;j < b_l;++j)
- {b_j = b[j];
- product = a_i * b_j + r[i + j];
- carry = Math.floor(product / base);
- r[i + j] = product - carry * base;
- r[i + j + 1] += carry}}
- trim(r);
- return r}
- function multiplySmall(a,b)
- {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i;
- for(i = 0;i < l;i++)
- {product = a[i] * b + carry;
- carry = Math.floor(product / base);
- r[i] = product - carry * base}
- while(carry > 0)
- {r[i++] = carry % base;carry = Math.floor(carry / base)}
- return r}
- function shiftLeft(x,n)
- {var r=[];while(n-- > 0)r.push(0);return r.concat(x)}
- function multiplyKaratsuba(x,y)
- {var n=Math.max(x.length,y.length);
- if(n <= 30)return multiplyLong(x,y);
- n = Math.ceil(n / 2);
- var
- b=x.slice(n),
- a=x.slice(0,n),
- d=y.slice(n),
- c=y.slice(0,n),
- ac=multiplyKaratsuba(a,c),
- bd=multiplyKaratsuba(b,d),
- abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)),
- product=
- addAny
- (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),
- shiftLeft(bd,2 * n));
- trim(product);
- return product}
- function useKaratsuba(l1,l2)
- {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0}
- BigInteger.prototype.multiply
- =
- function(v)
- {var
- n=parseValue(v),
- a=this.value,
- b=n.value,
- sign=this.sign !== n.sign,
- abs;
- if(n.isSmall)
- {if(b === 0)return Integer[0];
- if(b === 1)return this;
- if(b === - 1)return this.negate();
- abs = Math.abs(b);
- if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign);
- b = smallToArray(abs)}
- if(useKaratsuba(a.length,b.length))
- return new BigInteger(multiplyKaratsuba(a,b),sign);
- return new BigInteger(multiplyLong(a,b),sign)};
- BigInteger.prototype.times = BigInteger.prototype.multiply;
- function multiplySmallAndArray(a,b,sign)
- {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign);
- return new BigInteger(multiplyLong(b,smallToArray(a)),sign)}
- SmallInteger.prototype._multiplyBySmall
- =
- function(a)
- {if(isPrecise(a.value * this.value))
- return new SmallInteger(a.value * this.value);
- return multiplySmallAndArray
- (Math.abs(a.value),
- smallToArray(Math.abs(this.value)),
- this.sign !== a.sign)};
- BigInteger.prototype._multiplyBySmall
- =
- function(a)
- {if(a.value === 0)return Integer[0];
- if(a.value === 1)return this;
- if(a.value === - 1)return this.negate();
- return multiplySmallAndArray
- (Math.abs(a.value),this.value,this.sign !== a.sign)};
- SmallInteger.prototype.multiply
- =
- function(v){return parseValue(v)._multiplyBySmall(this)};
- SmallInteger.prototype.times = SmallInteger.prototype.multiply;
- NativeBigInt.prototype.multiply
- =
- function(v)
- {return new NativeBigInt(this.value * parseValue(v).value)};
- NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;
- function square(a)
- {var
- l=a.length,
- r=createArray(l + l),
- base=BASE,
- product,
- carry,
- i,
- a_i,
- a_j;
- for(i = 0;i < l;i++)
- {a_i = a[i];
- carry = 0 - a_i * a_i;
- for(var j=i;j < l;j++)
- {a_j = a[j];
- product = 2 * (a_i * a_j) + r[i + j] + carry;
- carry = Math.floor(product / base);
- r[i + j] = product - carry * base}
- r[i + l] = carry}
- trim(r);
- return r}
- BigInteger.prototype.square
- =
- function(){return new BigInteger(square(this.value),false)};
- SmallInteger.prototype.square
- =
- function()
- {var value=this.value * this.value;
- if(isPrecise(value))return new SmallInteger(value);
- return new
- BigInteger
- (square(smallToArray(Math.abs(this.value))),false)};
- NativeBigInt.prototype.square
- =
- function(v){return new NativeBigInt(this.value * this.value)};
- function divMod1(a,b)
- {var
- a_l=a.length,
- b_l=b.length,
- base=BASE,
- result=createArray(b.length),
- divisorMostSignificantDigit=b[b_l - 1],
- lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)),
- remainder=multiplySmall(a,lambda),
- divisor=multiplySmall(b,lambda),
- quotientDigit,
- shift,
- carry,
- borrow,
- i,
- l,
- q;
- if(remainder.length <= a_l)remainder.push(0);
- divisor.push(0);
- divisorMostSignificantDigit = divisor[b_l - 1];
- for(shift = a_l - b_l;shift >= 0;shift--)
- {quotientDigit = base - 1;
- if(remainder[shift + b_l] !== divisorMostSignificantDigit)
- quotientDigit
- =
- Math.floor
- ((remainder[shift + b_l] * base + remainder[shift + b_l - 1])
- /
- divisorMostSignificantDigit);
- carry = 0;
- borrow = 0;
- l = divisor.length;
- for(i = 0;i < l;i++)
- {carry += quotientDigit * divisor[i];
- q = Math.floor(carry / base);
- borrow += remainder[shift + i] - (carry - q * base);
- carry = q;
- if(borrow < 0)
- {remainder[shift + i] = borrow + base;borrow = - 1}
- else
- {remainder[shift + i] = borrow;borrow = 0}}
- while(borrow !== 0)
- {quotientDigit -= 1;
- carry = 0;
- for(i = 0;i < l;i++)
- {carry += remainder[shift + i] - base + divisor[i];
- if(carry < 0)
- {remainder[shift + i] = carry + base;carry = 0}
- else
- {remainder[shift + i] = carry;carry = 1}}
- borrow += carry}
- result[shift] = quotientDigit}
- remainder = divModSmall(remainder,lambda)[0];
- return [arrayToSmall(result),arrayToSmall(remainder)]}
- function divMod2(a,b)
- {var
- a_l=a.length,
- b_l=b.length,
- result=[],
- part=[],
- base=BASE,
- guess,
- xlen,
- highx,
- highy,
- check;
- while(a_l)
- {part.unshift(a[--a_l]);
- trim(part);
- if(compareAbs(part,b) < 0){result.push(0);continue}
- xlen = part.length;
- highx = part[xlen - 1] * base + part[xlen - 2];
- highy = b[b_l - 1] * base + b[b_l - 2];
- if(xlen > b_l)highx = (highx + 1) * base;
- guess = Math.ceil(highx / highy);
- do
- {check = multiplySmall(b,guess);
- if(compareAbs(check,part) <= 0)break;
- guess--}
- while
- (guess);
- result.push(guess);
- part = subtract(part,check)}
- result.reverse();
- return [arrayToSmall(result),arrayToSmall(part)]}
- function divModSmall(value,lambda)
- {var
- length=value.length,
- quotient=createArray(length),
- base=BASE,
- i,
- q,
- remainder,
- divisor;
- remainder = 0;
- for(i = length - 1;i >= 0;--i)
- {divisor = remainder * base + value[i];
- q = truncate(divisor / lambda);
- remainder = divisor - q * lambda;
- quotient[i] = q | 0}
- return [quotient,remainder | 0]}
- function divModAny(self,v)
- {var value,n=parseValue(v);
- if(supportsNativeBigInt)
- return [new NativeBigInt(self.value / n.value),
- new NativeBigInt(self.value % n.value)];
- var a=self.value,b=n.value,quotient;
- if(b === 0)throw new Error("Cannot divide by zero");
- if(self.isSmall)
- {if(n.isSmall)
- return [new SmallInteger(truncate(a / b)),
- new SmallInteger(a % b)];
- return [Integer[0],self]}
- if(n.isSmall)
- {if(b === 1)return [self,Integer[0]];
- if(b == - 1)return [self.negate(),Integer[0]];
- var abs=Math.abs(b);
- if(abs < BASE)
- {value = divModSmall(a,abs);
- quotient = arrayToSmall(value[0]);
- var remainder=value[1];
- if(self.sign)remainder = - remainder;
- if(typeof quotient === "number")
- {if(self.sign !== n.sign)quotient = - quotient;
- return [new SmallInteger(quotient),
- new SmallInteger(remainder)]}
- return [new BigInteger(quotient,self.sign !== n.sign),
- new SmallInteger(remainder)]}
- b = smallToArray(abs)}
- var comparison=compareAbs(a,b);
- if(comparison === - 1)return [Integer[0],self];
- if(comparison === 0)
- return [Integer[self.sign === n.sign?1:- 1],Integer[0]];
- if(a.length + b.length <= 200)
- value = divMod1(a,b);
- else
- value = divMod2(a,b);
- quotient = value[0];
- var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign;
- if(typeof quotient === "number")
- {if(qSign)quotient = - quotient;
- quotient = new SmallInteger(quotient)}
- else
- quotient = new BigInteger(quotient,qSign);
- if(typeof mod === "number")
- {if(mSign)mod = - mod;mod = new SmallInteger(mod)}
- else
- mod = new BigInteger(mod,mSign);
- return [quotient,mod]}
- BigInteger.prototype.divmod
- =
- function(v)
- {var result=divModAny(this,v);
- return {quotient:result[0],remainder:result[1]}};
- NativeBigInt.prototype.divmod
- =
- SmallInteger.prototype.divmod
- =
- BigInteger.prototype.divmod;
- BigInteger.prototype.divide
- =
- function(v){return divModAny(this,v)[0]};
- NativeBigInt.prototype.over
- =
- NativeBigInt.prototype.divide
- =
- function(v)
- {return new NativeBigInt(this.value / parseValue(v).value)};
- SmallInteger.prototype.over
- =
- SmallInteger.prototype.divide
- =
- BigInteger.prototype.over
- =
- BigInteger.prototype.divide;
- BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]};
- NativeBigInt.prototype.mod
- =
- NativeBigInt.prototype.remainder
- =
- function(v)
- {return new NativeBigInt(this.value % parseValue(v).value)};
- SmallInteger.prototype.remainder
- =
- SmallInteger.prototype.mod
- =
- BigInteger.prototype.remainder
- =
- BigInteger.prototype.mod;
- BigInteger.prototype.pow
- =
- function(v)
- {var n=parseValue(v),a=this.value,b=n.value,value,x,y;
- if(b === 0)return Integer[1];
- if(a === 0)return Integer[0];
- if(a === 1)return Integer[1];
- if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1];
- if(n.sign)return Integer[0];
- if(! n.isSmall)
- throw new Error("The exponent " + n.toString() + " is too large.");
- if(this.isSmall)
- if(isPrecise(value = Math.pow(a,b)))
- return new SmallInteger(truncate(value));
- x = this;
- y = Integer[1];
- while(true)
- {if(b & 1 === 1){y = y.times(x);--b}
- if(b === 0)break;
- b /= 2;
- x = x.square()}
- return y};
- SmallInteger.prototype.pow = BigInteger.prototype.pow;
- NativeBigInt.prototype.pow
- =
- function(v)
- {var
- n=parseValue(v),
- a=this.value,
- b=n.value,
- _0=BigInt(0),
- _1=BigInt(1),
- _2=BigInt(2);
- if(b === _0)return Integer[1];
- if(a === _0)return Integer[0];
- if(a === _1)return Integer[1];
- if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1];
- if(n.isNegative())return new NativeBigInt(_0);
- var x=this,y=Integer[1];
- while(true)
- {if((b & _1) === _1){y = y.times(x);--b}
- if(b === _0)break;
- b /= _2;
- x = x.square()}
- return y};
- BigInteger.prototype.modPow
- =
- function(exp,mod)
- {exp = parseValue(exp);
- mod = parseValue(mod);
- if(mod.isZero())
- throw new Error("Cannot take modPow with modulus 0");
- var r=Integer[1],base=this.mod(mod);
- if(exp.isNegative())
- {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)}
- while(exp.isPositive())
- {if(base.isZero())return Integer[0];
- if(exp.isOdd())r = r.multiply(base).mod(mod);
- exp = exp.divide(2);
- base = base.square().mod(mod)}
- return r};
- NativeBigInt.prototype.modPow
- =
- SmallInteger.prototype.modPow
- =
- BigInteger.prototype.modPow;
- function compareAbs(a,b)
- {if(a.length !== b.length)return a.length > b.length?1:- 1;
- for(var i=a.length - 1;i >= 0;i--)
- if(a[i] !== b[i])return a[i] > b[i]?1:- 1;
- return 0}
- BigInteger.prototype.compareAbs
- =
- function(v)
- {var n=parseValue(v),a=this.value,b=n.value;
- if(n.isSmall)return 1;
- return compareAbs(a,b)};
- SmallInteger.prototype.compareAbs
- =
- function(v)
- {var n=parseValue(v),a=Math.abs(this.value),b=n.value;
- if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1}
- return - 1};
- NativeBigInt.prototype.compareAbs
- =
- function(v)
- {var a=this.value,b=parseValue(v).value;
- a = a >= 0?a:- a;
- b = b >= 0?b:- b;
- return a === b?0:a > b?1:- 1};
- BigInteger.prototype.compare
- =
- function(v)
- {if(v === Infinity)return - 1;
- if(v === - Infinity)return 1;
- var n=parseValue(v),a=this.value,b=n.value;
- if(this.sign !== n.sign)return n.sign?1:- 1;
- if(n.isSmall)return this.sign?- 1:1;
- return compareAbs(a,b) * (this.sign?- 1:1)};
- BigInteger.prototype.compareTo = BigInteger.prototype.compare;
- SmallInteger.prototype.compare
- =
- function(v)
- {if(v === Infinity)return - 1;
- if(v === - Infinity)return 1;
- var n=parseValue(v),a=this.value,b=n.value;
- if(n.isSmall)return a == b?0:a > b?1:- 1;
- if(a < 0 !== n.sign)return a < 0?- 1:1;
- return a < 0?1:- 1};
- SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;
- NativeBigInt.prototype.compare
- =
- function(v)
- {if(v === Infinity)return - 1;
- if(v === - Infinity)return 1;
- var a=this.value,b=parseValue(v).value;
- return a === b?0:a > b?1:- 1};
- NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;
- BigInteger.prototype.equals
- =
- function(v){return this.compare(v) === 0};
- NativeBigInt.prototype.eq
- =
- NativeBigInt.prototype.equals
- =
- SmallInteger.prototype.eq
- =
- SmallInteger.prototype.equals
- =
- BigInteger.prototype.eq
- =
- BigInteger.prototype.equals;
- BigInteger.prototype.notEquals
- =
- function(v){return this.compare(v) !== 0};
- NativeBigInt.prototype.neq
- =
- NativeBigInt.prototype.notEquals
- =
- SmallInteger.prototype.neq
- =
- SmallInteger.prototype.notEquals
- =
- BigInteger.prototype.neq
- =
- BigInteger.prototype.notEquals;
- BigInteger.prototype.greater
- =
- function(v){return this.compare(v) > 0};
- NativeBigInt.prototype.gt
- =
- NativeBigInt.prototype.greater
- =
- SmallInteger.prototype.gt
- =
- SmallInteger.prototype.greater
- =
- BigInteger.prototype.gt
- =
- BigInteger.prototype.greater;
- BigInteger.prototype.lesser
- =
- function(v){return this.compare(v) < 0};
- NativeBigInt.prototype.lt
- =
- NativeBigInt.prototype.lesser
- =
- SmallInteger.prototype.lt
- =
- SmallInteger.prototype.lesser
- =
- BigInteger.prototype.lt
- =
- BigInteger.prototype.lesser;
- BigInteger.prototype.greaterOrEquals
- =
- function(v){return this.compare(v) >= 0};
- NativeBigInt.prototype.geq
- =
- NativeBigInt.prototype.greaterOrEquals
- =
- SmallInteger.prototype.geq
- =
- SmallInteger.prototype.greaterOrEquals
- =
- BigInteger.prototype.geq
- =
- BigInteger.prototype.greaterOrEquals;
- BigInteger.prototype.lesserOrEquals
- =
- function(v){return this.compare(v) <= 0};
- NativeBigInt.prototype.leq
- =
- NativeBigInt.prototype.lesserOrEquals
- =
- SmallInteger.prototype.leq
- =
- SmallInteger.prototype.lesserOrEquals
- =
- BigInteger.prototype.leq
- =
- BigInteger.prototype.lesserOrEquals;
- BigInteger.prototype.isEven
- =
- function(){return (this.value[0] & 1) === 0};
- SmallInteger.prototype.isEven
- =
- function(){return (this.value & 1) === 0};
- NativeBigInt.prototype.isEven
- =
- function(){return (this.value & BigInt(1)) === BigInt(0)};
- BigInteger.prototype.isOdd
- =
- function(){return (this.value[0] & 1) === 1};
- SmallInteger.prototype.isOdd
- =
- function(){return (this.value & 1) === 1};
- NativeBigInt.prototype.isOdd
- =
- function(){return (this.value & BigInt(1)) === BigInt(1)};
- BigInteger.prototype.isPositive = function(){return ! this.sign};
- SmallInteger.prototype.isPositive
- =
- function(){return this.value > 0};
- NativeBigInt.prototype.isPositive
- =
- SmallInteger.prototype.isPositive;
- BigInteger.prototype.isNegative = function(){return this.sign};
- SmallInteger.prototype.isNegative
- =
- function(){return this.value < 0};
- NativeBigInt.prototype.isNegative
- =
- SmallInteger.prototype.isNegative;
- BigInteger.prototype.isUnit = function(){return false};
- SmallInteger.prototype.isUnit
- =
- function(){return Math.abs(this.value) === 1};
- NativeBigInt.prototype.isUnit
- =
- function(){return this.abs().value === BigInt(1)};
- BigInteger.prototype.isZero = function(){return false};
- SmallInteger.prototype.isZero = function(){return this.value === 0};
- NativeBigInt.prototype.isZero
- =
- function(){return this.value === BigInt(0)};
- BigInteger.prototype.isDivisibleBy
- =
- function(v)
- {var n=parseValue(v);
- if(n.isZero())return false;
- if(n.isUnit())return true;
- if(n.compareAbs(2) === 0)return this.isEven();
- return this.mod(n).isZero()};
- NativeBigInt.prototype.isDivisibleBy
- =
- SmallInteger.prototype.isDivisibleBy
- =
- BigInteger.prototype.isDivisibleBy;
- function isBasicPrime(v)
- {var n=v.abs();
- if(n.isUnit())return false;
- if(n.equals(2) || n.equals(3) || n.equals(5))return true;
- if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5))
- return false;
- if(n.lesser(49))return true}
- function millerRabinTest(n,a)
- {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x;
- while(b.isEven())b = b.divide(2),r++;
- next:
- for(i = 0;i < a.length;i++)
- {if(n.lesser(a[i]))continue;
- x = bigInt(a[i]).modPow(b,n);
- if(x.isUnit() || x.equals(nPrev))continue;
- for(d = r - 1;d != 0;d--)
- {x = x.square().mod(n);
- if(x.isUnit())return false;
- if(x.equals(nPrev))continue next}
- return false}
- return true}
- BigInteger.prototype.isPrime
- =
- function(strict)
- {var isPrime=isBasicPrime(this);
- if(isPrime !== undefined)return isPrime;
- var n=this.abs(),bits=n.bitLength();
- if(bits <= 64)
- return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]);
- var
- logN=Math.log(2) * bits.toJSNumber(),
- t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN);
- for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2));
- return millerRabinTest(n,a)};
- NativeBigInt.prototype.isPrime
- =
- SmallInteger.prototype.isPrime
- =
- BigInteger.prototype.isPrime;
- BigInteger.prototype.isProbablePrime
- =
- function(iterations)
- {var isPrime=isBasicPrime(this);
- if(isPrime !== undefined)return isPrime;
- var n=this.abs(),t=iterations === undefined?5:iterations;
- for(var a=[],i=0;i < t;i++)
- a.push(bigInt.randBetween(2,n.minus(2)));
- return millerRabinTest(n,a)};
- NativeBigInt.prototype.isProbablePrime
- =
- SmallInteger.prototype.isProbablePrime
- =
- BigInteger.prototype.isProbablePrime;
- BigInteger.prototype.modInv
- =
- function(n)
- {var
- t=bigInt.zero,
- newT=bigInt.one,
- r=parseValue(n),
- newR=this.abs(),
- q,
- lastT,
- lastR;
- while(! newR.isZero())
- {q = r.divide(newR);
- lastT = t;
- lastR = r;
- t = newT;
- r = newR;
- newT = lastT.subtract(q.multiply(newT));
- newR = lastR.subtract(q.multiply(newR))}
- if(! r.isUnit())
- throw new
- Error
- (this.toString()
- +
- " and "
- +
- n.toString()
- +
- " are not co-prime");
- if(t.compare(0) === - 1)t = t.add(n);
- if(this.isNegative())return t.negate();
- return t};
- NativeBigInt.prototype.modInv
- =
- SmallInteger.prototype.modInv
- =
- BigInteger.prototype.modInv;
- BigInteger.prototype.next
- =
- function()
- {var value=this.value;
- if(this.sign)return subtractSmall(value,1,this.sign);
- return new BigInteger(addSmall(value,1),this.sign)};
- SmallInteger.prototype.next
- =
- function()
- {var value=this.value;
- if(value + 1 < MAX_INT)return new SmallInteger(value + 1);
- return new BigInteger(MAX_INT_ARR,false)};
- NativeBigInt.prototype.next
- =
- function(){return new NativeBigInt(this.value + BigInt(1))};
- BigInteger.prototype.prev
- =
- function()
- {var value=this.value;
- if(this.sign)return new BigInteger(addSmall(value,1),true);
- return subtractSmall(value,1,this.sign)};
- SmallInteger.prototype.prev
- =
- function()
- {var value=this.value;
- if(value - 1 > - MAX_INT)return new SmallInteger(value - 1);
- return new BigInteger(MAX_INT_ARR,true)};
- NativeBigInt.prototype.prev
- =
- function(){return new NativeBigInt(this.value - BigInt(1))};
- var powersOfTwo=[1];
- while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE)
- powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);
- var
- powers2Length=powersOfTwo.length,
- highestPower2=powersOfTwo[powers2Length - 1];
- function shift_isSmall(n){return Math.abs(n) <= BASE}
- BigInteger.prototype.shiftLeft
- =
- function(v)
- {var n=parseValue(v).toJSNumber();
- if(! shift_isSmall(n))
- throw new Error(String(n) + " is too large for shifting.");
- if(n < 0)return this.shiftRight(- n);
- var result=this;
- if(result.isZero())return result;
- while(n >= powers2Length)
- {result = result.multiply(highestPower2);n -= powers2Length - 1}
- return result.multiply(powersOfTwo[n])};
- NativeBigInt.prototype.shiftLeft
- =
- SmallInteger.prototype.shiftLeft
- =
- BigInteger.prototype.shiftLeft;
- BigInteger.prototype.shiftRight
- =
- function(v)
- {var remQuo,n=parseValue(v).toJSNumber();
- if(! shift_isSmall(n))
- throw new Error(String(n) + " is too large for shifting.");
- if(n < 0)return this.shiftLeft(- n);
- var result=this;
- while(n >= powers2Length)
- {if(result.isZero() || result.isNegative() && result.isUnit())
- return result;
- remQuo = divModAny(result,highestPower2);
- result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];
- n -= powers2Length - 1}
- remQuo = divModAny(result,powersOfTwo[n]);
- return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};
- NativeBigInt.prototype.shiftRight
- =
- SmallInteger.prototype.shiftRight
- =
- BigInteger.prototype.shiftRight;
- function bitwise(x,y,fn)
- {y = parseValue(y);
- var
- xSign=x.isNegative(),
- ySign=y.isNegative(),
- xRem=xSign?x.not():x,
- yRem=ySign?y.not():y,
- xDigit=0,
- yDigit=0,
- xDivMod=null,
- yDivMod=null,
- result=[];
- while(! xRem.isZero() || ! yRem.isZero())
- {xDivMod = divModAny(xRem,highestPower2);
- xDigit = xDivMod[1].toJSNumber();
- if(xSign)xDigit = highestPower2 - 1 - xDigit;
- yDivMod = divModAny(yRem,highestPower2);
- yDigit = yDivMod[1].toJSNumber();
- if(ySign)yDigit = highestPower2 - 1 - yDigit;
- xRem = xDivMod[0];
- yRem = yDivMod[0];
- result.push(fn(xDigit,yDigit))}
- var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0);
- for(var i=result.length - 1;i >= 0;i -= 1)
- sum = sum.multiply(highestPower2).add(bigInt(result[i]));
- return sum}
- BigInteger.prototype.not = function(){return this.negate().prev()};
- NativeBigInt.prototype.not
- =
- SmallInteger.prototype.not
- =
- BigInteger.prototype.not;
- BigInteger.prototype.and
- =
- function(n){return bitwise(this,n,function(a,b){return a & b})};
- NativeBigInt.prototype.and
- =
- SmallInteger.prototype.and
- =
- BigInteger.prototype.and;
- BigInteger.prototype.or
- =
- function(n){return bitwise(this,n,function(a,b){return a | b})};
- NativeBigInt.prototype.or
- =
- SmallInteger.prototype.or
- =
- BigInteger.prototype.or;
- BigInteger.prototype.xor
- =
- function(n){return bitwise(this,n,function(a,b){return a ^ b})};
- NativeBigInt.prototype.xor
- =
- SmallInteger.prototype.xor
- =
- BigInteger.prototype.xor;
- var
- LOBMASK_I=1 << 30,
- LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I;
- function roughLOB(n)
- {var
- v=n.value,
- x=
- typeof v === "number"
- ?v | LOBMASK_I
- :typeof v === "bigint"
- ?v | BigInt(LOBMASK_I)
- :v[0] + v[1] * BASE | LOBMASK_BI;
- return x & - x}
- function integerLogarithm(value,base)
- {if(base.compareTo(value) <= 0)
- {var
- tmp=integerLogarithm(value,base.square(base)),
- p=tmp.p,
- e=tmp.e,
- t=p.multiply(base);
- return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}}
- return {p:bigInt(1),e:0}}
- BigInteger.prototype.bitLength
- =
- function()
- {var n=this;
- if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1));
- if(n.compareTo(bigInt(0)) === 0)return bigInt(0);
- return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))};
- NativeBigInt.prototype.bitLength
- =
- SmallInteger.prototype.bitLength
- =
- BigInteger.prototype.bitLength;
- function max(a,b)
- {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b}
- function min(a,b)
- {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b}
- function gcd(a,b)
- {a = parseValue(a).abs();
- b = parseValue(b).abs();
- if(a.equals(b))return a;
- if(a.isZero())return b;
- if(b.isZero())return a;
- var c=Integer[1],d,t;
- while(a.isEven() && b.isEven())
- {d = min(roughLOB(a),roughLOB(b));
- a = a.divide(d);
- b = b.divide(d);
- c = c.multiply(d)}
- while(a.isEven())a = a.divide(roughLOB(a));
- do
- {while(b.isEven())b = b.divide(roughLOB(b));
- if(a.greater(b)){t = b;b = a;a = t}
- b = b.subtract(a)}
- while
- (! b.isZero());
- return c.isUnit()?a:a.multiply(c)}
- function lcm(a,b)
- {a = parseValue(a).abs();
- b = parseValue(b).abs();
- return a.divide(gcd(a,b)).multiply(b)}
- function randBetween(a,b)
- {a = parseValue(a);
- b = parseValue(b);
- var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1);
- if(range.isSmall)return low.add(Math.floor(Math.random() * range));
- var digits=toBase(range,BASE).value,result=[],restricted=true;
- for(var i=0;i < digits.length;i++)
- {var
- top=restricted?digits[i]:BASE,
- digit=truncate(Math.random() * top);
- result.push(digit);
- if(digit < top)restricted = false}
- return low.add(Integer.fromArray(result,BASE,false))}
- function parseBase(text,base,alphabet,caseSensitive)
- {alphabet = alphabet || DEFAULT_ALPHABET;
- text = String(text);
- if(! caseSensitive)
- {text = text.toLowerCase();alphabet = alphabet.toLowerCase()}
- var length=text.length,i,absBase=Math.abs(base),alphabetValues={};
- for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i;
- for(i = 0;i < length;i++)
- {var c=text[i];
- if(c === "-")continue;
- if(c in alphabetValues)
- if(alphabetValues[c] >= absBase)
- {if(c === "1" && absBase === 1)continue;
- throw new
- Error
- (c + " is not a valid digit in base " + base + ".")}}
- base = parseValue(base);
- var digits=[],isNegative=text[0] === "-";
- for(i = isNegative?1:0;i < text.length;i++)
- {var c=text[i];
- if(c in alphabetValues)
- digits.push(parseValue(alphabetValues[c]));
- else
- if(c === "<")
- {var start=i;
- do i++;while(text[i] !== ">" && i < text.length);
- digits.push(parseValue(text.slice(start + 1,i)))}
- else
- throw new Error(c + " is not a valid character")}
- return parseBaseFromArray(digits,base,isNegative)}
- function parseBaseFromArray(digits,base,isNegative)
- {var val=Integer[0],pow=Integer[1],i;
- for(i = digits.length - 1;i >= 0;i--)
- {val = val.add(digits[i].times(pow));pow = pow.times(base)}
- return isNegative?val.negate():val}
- function stringify(digit,alphabet)
- {alphabet = alphabet || DEFAULT_ALPHABET;
- if(digit < alphabet.length)return alphabet[digit];
- return "<" + digit + ">"}
- function toBase(n,base)
- {base = bigInt(base);
- if(base.isZero())
- {if(n.isZero())return {value:[0],isNegative:false};
- throw new Error("Cannot convert nonzero numbers to base 0.")}
- if(base.equals(- 1))
- {if(n.isZero())return {value:[0],isNegative:false};
- if(n.isNegative())
- return {value:
- [].concat.apply
- ([],
- Array.apply(null,Array(- n.toJSNumber())).map
- (Array.prototype.valueOf,[1,0])),
- isNegative:false};
- var
- arr=
- Array.apply(null,Array(n.toJSNumber() - 1)).map
- (Array.prototype.valueOf,[0,1]);
- arr.unshift([1]);
- return {value:[].concat.apply([],arr),isNegative:false}}
- var neg=false;
- if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()}
- if(base.isUnit())
- {if(n.isZero())return {value:[0],isNegative:false};
- return {value:
- Array.apply(null,Array(n.toJSNumber())).map
- (Number.prototype.valueOf,1),
- isNegative:neg}}
- var out=[],left=n,divmod;
- while(left.isNegative() || left.compareAbs(base) >= 0)
- {divmod = left.divmod(base);
- left = divmod.quotient;
- var digit=divmod.remainder;
- if(digit.isNegative())
- {digit = base.minus(digit).abs();left = left.next()}
- out.push(digit.toJSNumber())}
- out.push(left.toJSNumber());
- return {value:out.reverse(),isNegative:neg}}
- function toBaseString(n,base,alphabet)
- {var arr=toBase(n,base);
- return (arr.isNegative?"-":"")
- +
- arr.value.map(function(x){return stringify(x,alphabet)}).join
- ("")}
- BigInteger.prototype.toArray
- =
- function(radix){return toBase(this,radix)};
- SmallInteger.prototype.toArray
- =
- function(radix){return toBase(this,radix)};
- NativeBigInt.prototype.toArray
- =
- function(radix){return toBase(this,radix)};
- BigInteger.prototype.toString
- =
- function(radix,alphabet)
- {if(radix === undefined)radix = 10;
- if(radix !== 10)return toBaseString(this,radix,alphabet);
- var
- v=this.value,
- l=v.length,
- str=String(v[--l]),
- zeros="0000000",
- digit;
- while(--l >= 0)
- {digit = String(v[l]);str += zeros.slice(digit.length) + digit}
- var sign=this.sign?"-":"";
- return sign + str};
- SmallInteger.prototype.toString
- =
- function(radix,alphabet)
- {if(radix === undefined)radix = 10;
- if(radix != 10)return toBaseString(this,radix,alphabet);
- return String(this.value)};
- NativeBigInt.prototype.toString = SmallInteger.prototype.toString;
- NativeBigInt.prototype.toJSON
- =
- BigInteger.prototype.toJSON
- =
- SmallInteger.prototype.toJSON
- =
- function(){return this.toString()};
- BigInteger.prototype.valueOf
- =
- function(){return parseInt(this.toString(),10)};
- BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;
- SmallInteger.prototype.valueOf = function(){return this.value};
- SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
- NativeBigInt.prototype.valueOf
- =
- NativeBigInt.prototype.toJSNumber
- =
- function(){return parseInt(this.toString(),10)};
- function parseStringValue(v)
- {if(isPrecise(+ v))
- {var x=+ v;
- if(x === truncate(x))
- return supportsNativeBigInt
- ?new NativeBigInt(BigInt(x))
- :new SmallInteger(x);
- throw new Error("Invalid integer: " + v)}
- var sign=v[0] === "-";
- if(sign)v = v.slice(1);
- var split=v.split(/e/i);
- if(split.length > 2)
- throw new Error("Invalid integer: " + split.join("e"));
- if(split.length === 2)
- {var exp=split[1];
- if(exp[0] === "+")exp = exp.slice(1);
- exp = + exp;
- if(exp !== truncate(exp) || ! isPrecise(exp))
- throw new
- Error
- ("Invalid integer: " + exp + " is not a valid exponent.");
- var text=split[0],decimalPlace=text.indexOf(".");
- if(decimalPlace >= 0)
- {exp -= text.length - decimalPlace - 1;
- text
- =
- text.slice(0,decimalPlace)
- +
- text.slice(decimalPlace + 1)}
- if(exp < 0)
- throw new
- Error
- ("Cannot include negative exponent part for integers");
- text += new Array(exp + 1).join("0");
- v = text}
- var isValid=/^([0-9][0-9]*)$/.test(v);
- if(! isValid)throw new Error("Invalid integer: " + v);
- if(supportsNativeBigInt)
- return new NativeBigInt(BigInt(sign?"-" + v:v));
- var r=[],max=v.length,l=LOG_BASE,min=max - l;
- while(max > 0)
- {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l}
- trim(r);
- return new BigInteger(r,sign)}
- function parseNumberValue(v)
- {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v));
- if(isPrecise(v))
- {if(v !== truncate(v))throw new Error(v + " is not an integer.");
- return new SmallInteger(v)}
- return parseStringValue(v.toString())}
- function parseValue(v)
- {if(typeof v === "number")return parseNumberValue(v);
- if(typeof v === "string")return parseStringValue(v);
- if(typeof v === "bigint")return new NativeBigInt(v);
- return v}
- for(var i=0;i < 1000;i++)
- {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)}
- Integer.one = Integer[1];
- Integer.zero = Integer[0];
- Integer.minusOne = Integer[- 1];
- Integer.max = max;
- Integer.min = min;
- Integer.gcd = gcd;
- Integer.lcm = lcm;
- Integer.isInstance
- =
- function(x)
- {return x instanceof BigInteger
- ||
- x instanceof SmallInteger
- ||
- x instanceof NativeBigInt};
- Integer.randBetween = randBetween;
- Integer.fromArray
- =
- function(digits,base,isNegative)
- {return parseBaseFromArray
- (digits.map(parseValue),parseValue(base || 10),isNegative)};
- return Integer}
- ();
- function ml_z_normalize(x)
- {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x}
- function ml_z_pow(z1,i1)
- {i1 = bigInt(i1);
- if(i1.lt(bigInt(0)))
- caml_invalid_argument("Z.pow: exponent must be nonnegative");
- return ml_z_normalize(bigInt(z1).pow(i1))}
- function ml_z_root(z,i)
- {var zero=bigInt(0),one=bigInt(1);
- z = bigInt(z);
- if(i % 2 === 0 && z.lt(zero))
- caml_invalid_argument("Z.root: even root of a negative number");
- if(z.equals(zero) || z.equals(one))return ml_z_normalize(z);
- var start=zero,end=z,ans=null,two=bigInt(2);
- while(start.leq(end))
- {var mid=start.add(end).divide(two),po=mid.pow(i);
- if(po.equals(z))
- return ml_z_normalize(mid);
- else
- if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()}
- return ml_z_normalize(ans)}
- function caml_int64_of_bytes(a)
- {return new
- MlInt64
- (a[7] << 0 | a[6] << 8 | a[5] << 16,
- a[4] << 0 | a[3] << 8 | a[2] << 16,
- a[1] << 0 | a[0] << 8)}
- function caml_ba_uint8_get64(ba,i0)
- {var ofs=ba.offset(i0);
- if(ofs + 7 >= ba.data.length)caml_array_bound_error();
- var
- b1=ba.get(ofs + 0),
- b2=ba.get(ofs + 1),
- b3=ba.get(ofs + 2),
- b4=ba.get(ofs + 3),
- b5=ba.get(ofs + 4),
- b6=ba.get(ofs + 5),
- b7=ba.get(ofs + 6),
- b8=ba.get(ofs + 7);
- return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])}
- function caml_int64_to_bytes(x){return x.toArray()}
- function caml_int64_marshal(writer,v,sizes)
- {var b=caml_int64_to_bytes(v);
- for(var i=0;i < 8;i++)writer.write(8,b[i]);
- sizes[0] = 8;
- sizes[1] = 8}
- function caml_ba_num_dims(ba){return ba.dims.length}
- function caml_return_exn_constant(tag){return tag}
- function caml_wrap_exception(e)
- {if(e instanceof Array)return e;
- if
- (globalThis.RangeError
- &&
- e instanceof globalThis.RangeError
- &&
- e.message
- &&
- e.message.match(/maximum call stack/i))
- return caml_return_exn_constant(caml_global_data.Stack_overflow);
- if
- (globalThis.InternalError
- &&
- e instanceof globalThis.InternalError
- &&
- e.message
- &&
- e.message.match(/too much recursion/i))
- return caml_return_exn_constant(caml_global_data.Stack_overflow);
- if(e instanceof globalThis.Error && caml_named_value("jsError"))
- return [0,caml_named_value("jsError"),e];
- return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]}
- function caml_create_file(name,content)
- {var root=resolve_fs_device(name);
- if(! root.device.register)caml_failwith("cannot register file");
- root.device.register(root.rest,content);
- return 0}
- function jsoo_create_file(name,content)
- {var
- name=caml_string_of_jsbytes(name),
- content=caml_string_of_jsbytes(content);
- return caml_create_file(name,content)}
- function caml_fs_init()
- {var tmp=globalThis.caml_fs_tmp;
- if(tmp)
- for(var i=0;i < tmp.length;i++)
- jsoo_create_file(tmp[i].name,tmp[i].content);
- globalThis.jsoo_create_file = jsoo_create_file;
- globalThis.caml_fs_tmp = [];
- return 0}
- function caml_set_parser_trace(){return 0}
- function caml_list_of_js_array(a)
- {var l=0;
- for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]}
- return l}
- function unix_gettimeofday(){return new Date().getTime() / 1000}
- function caml_mul(a,b){return Math.imul(a,b)}
- function caml_hash_mix_int(h,d)
- {d = caml_mul(d,0xcc9e2d51 | 0);
- d = d << 15 | d >>> 32 - 15;
- d = caml_mul(d,0x1b873593);
- h ^= d;
- h = h << 13 | h >>> 32 - 13;
- return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0}
- function num_digits_nat(nat,ofs,len)
- {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1;
- return 1}
- function caml_hash_nat(x)
- {var len=num_digits_nat(x,0,x.data.length),h=0;
- for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]);
- return h}
- function caml_call_gen(f,args)
- {if(f.fun)return caml_call_gen(f.fun,args);
- if(typeof f !== "function")return f;
- var n=f.length | 0;
- if(n === 0)return f.apply(null,args);
- var argsLen=args.length | 0,d=n - argsLen | 0;
- if(d == 0)
- return f.apply(null,args);
- else
- if(d < 0)
- return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n));
- else
- return function()
- {var
- extra_args=arguments.length == 0?1:arguments.length,
- nargs=new Array(args.length + extra_args);
- for(var i=0;i < args.length;i++)nargs[i] = args[i];
- for(var i=0;i < arguments.length;i++)
- nargs[args.length + i] = arguments[i];
- return caml_call_gen(f,nargs)}}
- function caml_js_wrap_callback_arguments(f)
- {return function()
- {var len=arguments.length,args=new Array(len);
- for(var i=0;i < len;i++)args[i] = arguments[i];
- return caml_call_gen(f,[args])}}
- function caml_sys_chdir(dir)
- {var root=resolve_fs_device(dir);
- if(root.device.exists(root.rest))
- {if(root.rest)
- caml_current_dir = caml_trailing_slash(root.path + root.rest);
- else
- caml_current_dir = root.path;
- return 0}
- else
- caml_raise_no_such_file(caml_jsbytes_of_string(dir))}
- function caml_gc_counters(){return [254,0,0,0]}
- function ml_z_div(z1,z2)
- {z2 = bigInt(z2);
- if(z2.equals(bigInt(0)))caml_raise_zero_divide();
- return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))}
- function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)}
- function ml_z_add(z1,z2)
- {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))}
- function ml_z_cdiv(z1,z2)
- {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2);
- if(z1_pos * z2_pos > 0)
- if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0)))
- return ml_z_add(ml_z_div(z1,z2),bigInt(1));
- return ml_z_div(z1,z2)}
- function caml_gr_synchronize()
- {caml_failwith("caml_gr_synchronize not Implemented")}
- function unix_has_symlink(unit){return fs_node_supported()?1:0}
- var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020;
- function jsoo_floor_log2(x)
- {if(log2_ok)return Math.floor(Math.log2(x));
- var i=0;
- if(x == 0)return - Infinity;
- if(x >= 1)while(x >= 2){x /= 2;i++}else while(x < 1){x *= 2;i--}
- return i}
- function caml_int32_bits_of_float(x)
- {var float32a=new (globalThis.Float32Array)(1);
- float32a[0] = x;
- var int32a=new (globalThis.Int32Array)(float32a.buffer);
- return int32a[0] | 0}
- function caml_int64_create_lo_mi_hi(lo,mi,hi)
- {return new MlInt64(lo,mi,hi)}
- function caml_int64_bits_of_float(x)
- {if(! isFinite(x))
- {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0);
- return x > 0
- ?caml_int64_create_lo_mi_hi(0,0,0x7ff0)
- :caml_int64_create_lo_mi_hi(0,0,0xfff0)}
- var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000;
- if(sign)x = - x;
- var exp=jsoo_floor_log2(x) + 1023;
- if(exp <= 0)
- {exp = 0;x /= Math.pow(2,- 1026)}
- else
- {x /= Math.pow(2,exp - 1027);
- if(x < 16){x *= 2;exp -= 1}
- if(exp == 0)x /= 2}
- var k=Math.pow(2,24),r3=x | 0;
- x = (x - r3) * k;
- var r2=x | 0;
- x = (x - r2) * k;
- var r1=x | 0;
- r3 = r3 & 0xf | sign | exp << 4;
- return caml_int64_create_lo_mi_hi(r1,r2,r3)}
- function caml_ba_serialize(writer,ba,sz)
- {writer.write(32,ba.dims.length);
- writer.write(32,ba.kind | ba.layout << 8);
- if(ba.caml_custom == "_bigarr02")
- for(var i=0;i < ba.dims.length;i++)
- if(ba.dims[i] < 0xffff)
- writer.write(16,ba.dims[i]);
- else
- {writer.write(16,0xffff);
- writer.write(32,0);
- writer.write(32,ba.dims[i])}
- else
- for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]);
- switch(ba.kind)
- {case 2:
- case 3:
- case 12:
- for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break;
- case 4:
- case 5:
- for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break;
- case 6:
- for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break;
- case 8:
- case 9:
- writer.write(8,0);
- for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);
- break;
- case 7:
- for(var i=0;i < ba.data.length / 2;i++)
- {var b=caml_int64_to_bytes(ba.get(i));
- for(var j=0;j < 8;j++)writer.write(8,b[j])}
- break;
- case 1:
- for(var i=0;i < ba.data.length;i++)
- {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i)));
- for(var j=0;j < 8;j++)writer.write(8,b[j])}
- break;
- case 0:
- for(var i=0;i < ba.data.length;i++)
- {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)}
- break;
- case 10:
- for(var i=0;i < ba.data.length / 2;i++)
- {var j=ba.get(i);
- writer.write(32,caml_int32_bits_of_float(j[1]));
- writer.write(32,caml_int32_bits_of_float(j[2]))}
- break;
- case 11:
- for(var i=0;i < ba.data.length / 2;i++)
- {var
- complex=ba.get(i),
- b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1]));
- for(var j=0;j < 8;j++)writer.write(8,b[j]);
- var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2]));
- for(var j=0;j < 8;j++)writer.write(8,b[j])}
- break
- }
- sz[0] = (4 + ba.dims.length) * 4;
- sz[1] = (4 + ba.dims.length) * 8}
- function caml_ba_get_size_per_element(kind)
- {switch(kind){case 7:case 10:case 11:return 2;default:return 1}}
- function caml_ba_create_buffer(kind,size)
- {var g=globalThis,view;
- switch(kind)
- {case 0:view = g.Float32Array;break;
- case 1:view = g.Float64Array;break;
- case 2:view = g.Int8Array;break;
- case 3:view = g.Uint8Array;break;
- case 4:view = g.Int16Array;break;
- case 5:view = g.Uint16Array;break;
- case 6:view = g.Int32Array;break;
- case 7:view = g.Int32Array;break;
- case 8:view = g.Int32Array;break;
- case 9:view = g.Int32Array;break;
- case 10:view = g.Float32Array;break;
- case 11:view = g.Float64Array;break;
- case 12:view = g.Uint8Array;break
- }
- if(! view)caml_invalid_argument("Bigarray.create: unsupported kind");
- var data=new view(size * caml_ba_get_size_per_element(kind));
- return data}
- function caml_int32_float_of_bits(x)
- {var int32a=new (globalThis.Int32Array)(1);
- int32a[0] = x;
- var float32a=new (globalThis.Float32Array)(int32a.buffer);
- return float32a[0]}
- function caml_int64_float_of_bits(x)
- {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4;
- if(exp == 2047)
- return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN;
- var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf);
- if(exp > 0)
- {res += 16;res *= Math.pow(2,exp - 1027)}
- else
- res *= Math.pow(2,- 1026);
- if(hi & 0x8000)res = - res;
- return res}
- function caml_ba_get_size(dims)
- {var n_dims=dims.length,size=1;
- for(var i=0;i < n_dims;i++)
- {if(dims[i] < 0)
- caml_invalid_argument("Bigarray.create: negative dimension");
- size = size * dims[i]}
- return size}
- function caml_int64_create_lo_hi(lo,hi)
- {return new
- MlInt64
- (lo & 0xffffff,
- lo >>> 24 & 0xff | (hi & 0xffff) << 8,
- hi >>> 16 & 0xffff)}
- function caml_int64_hi32(v){return v.hi32()}
- function caml_int64_lo32(v){return v.lo32()}
- var caml_ba_custom_name="_bigarr02";
- function Ml_Bigarray(kind,layout,dims,buffer)
- {this.kind = kind;
- this.layout = layout;
- this.dims = dims;
- this.data = buffer}
- Ml_Bigarray.prototype.caml_custom = caml_ba_custom_name;
- Ml_Bigarray.prototype.offset
- =
- function(arg)
- {var ofs=0;
- if(typeof arg === "number")arg = [arg];
- if(! (arg instanceof Array))
- caml_invalid_argument("bigarray.js: invalid offset");
- if(this.dims.length != arg.length)
- caml_invalid_argument("Bigarray.get/set: bad number of dimensions");
- if(this.layout == 0)
- for(var i=0;i < this.dims.length;i++)
- {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error();
- ofs = ofs * this.dims[i] + arg[i]}
- else
- for(var i=this.dims.length - 1;i >= 0;i--)
- {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error();
- ofs = ofs * this.dims[i] + (arg[i] - 1)}
- return ofs};
- Ml_Bigarray.prototype.get
- =
- function(ofs)
- {switch(this.kind)
- {case 7:
- var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1];
- return caml_int64_create_lo_hi(l,h);
- case 10:
- case 11:
- var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1];
- return [254,r,i];
- default:return this.data[ofs]}};
- Ml_Bigarray.prototype.set
- =
- function(ofs,v)
- {switch(this.kind)
- {case 7:
- this.data[ofs * 2 + 0] = caml_int64_lo32(v);
- this.data[ofs * 2 + 1] = caml_int64_hi32(v);
- break;
- case 10:
- case 11:
- this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break;
- default:this.data[ofs] = v;break}
- return 0};
- Ml_Bigarray.prototype.fill
- =
- function(v)
- {switch(this.kind)
- {case 7:
- var a=caml_int64_lo32(v),b=caml_int64_hi32(v);
- if(a == b)
- this.data.fill(a);
- else
- for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b;
- break;
- case 10:
- case 11:
- var im=v[1],re=v[2];
- if(im == re)
- this.data.fill(im);
- else
- for(var i=0;i < this.data.length;i++)
- this.data[i] = i % 2 == 0?im:re;
- break;
- default:this.data.fill(v);break}};
- Ml_Bigarray.prototype.compare
- =
- function(b,total)
- {if(this.layout != b.layout || this.kind != b.kind)
- {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8;
- return k2 - k1}
- if(this.dims.length != b.dims.length)
- return b.dims.length - this.dims.length;
- for(var i=0;i < this.dims.length;i++)
- if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1;
- switch(this.kind)
- {case 0:
- case 1:
- case 10:
- case 11:
- var x,y;
- for(var i=0;i < this.data.length;i++)
- {x = this.data[i];
- y = b.data[i];
- if(x < y)return - 1;
- if(x > y)return 1;
- if(x != y)
- {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}}
- break;
- case 7:
- for(var i=0;i < this.data.length;i += 2)
- {if(this.data[i + 1] < b.data[i + 1])return - 1;
- if(this.data[i + 1] > b.data[i + 1])return 1;
- if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1;
- if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1}
- break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 8:
- case 9:
- case 12:
- for(var i=0;i < this.data.length;i++)
- {if(this.data[i] < b.data[i])return - 1;
- if(this.data[i] > b.data[i])return 1}
- break
- }
- return 0};
- function Ml_Bigarray_c_1_1(kind,layout,dims,buffer)
- {this.kind = kind;
- this.layout = layout;
- this.dims = dims;
- this.data = buffer}
- Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray();
- Ml_Bigarray_c_1_1.prototype.offset
- =
- function(arg)
- {if(typeof arg !== "number")
- if(arg instanceof Array && arg.length == 1)
- arg = arg[0];
- else
- caml_invalid_argument("Ml_Bigarray_c_1_1.offset");
- if(arg < 0 || arg >= this.dims[0])caml_array_bound_error();
- return arg};
- Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]};
- Ml_Bigarray_c_1_1.prototype.set
- =
- function(ofs,v){this.data[ofs] = v;return 0};
- Ml_Bigarray_c_1_1.prototype.fill
- =
- function(v){this.data.fill(v);return 0};
- function caml_ba_create_unsafe(kind,layout,dims,data)
- {var size_per_element=caml_ba_get_size_per_element(kind);
- if(caml_ba_get_size(dims) * size_per_element != data.length)
- caml_invalid_argument("length doesn't match dims");
- if(layout == 0 && dims.length == 1 && size_per_element == 1)
- return new Ml_Bigarray_c_1_1(kind,layout,dims,data);
- return new Ml_Bigarray(kind,layout,dims,data)}
- function caml_ba_deserialize(reader,sz,name)
- {var num_dims=reader.read32s();
- if(num_dims < 0 || num_dims > 16)
- caml_failwith("input_value: wrong number of bigarray dimensions");
- var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[];
- if(name == "_bigarr02")
- for(var i=0;i < num_dims;i++)
- {var size_dim=reader.read16u();
- if(size_dim == 0xffff)
- {var size_dim_hi=reader.read32u(),size_dim_lo=reader.read32u();
- if(size_dim_hi != 0)
- caml_failwith("input_value: bigarray dimension overflow in 32bit");
- size_dim = size_dim_lo}
- dims.push(size_dim)}
- else
- for(var i=0;i < num_dims;i++)dims.push(reader.read32u());
- var
- size=caml_ba_get_size(dims),
- data=caml_ba_create_buffer(kind,size),
- ba=caml_ba_create_unsafe(kind,layout,dims,data);
- switch(kind)
- {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break;
- case 3:
- case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break;
- case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break;
- case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break;
- case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break;
- case 8:
- case 9:
- var sixty=reader.read8u();
- if(sixty)
- caml_failwith
- ("input_value: cannot read bigarray with 64-bit OCaml ints");
- for(var i=0;i < size;i++)data[i] = reader.read32s();
- break;
- case 7:
- var t=new Array(8);
- for(var i=0;i < size;i++)
- {for(var j=0;j < 8;j++)t[j] = reader.read8u();
- var int64=caml_int64_of_bytes(t);
- ba.set(i,int64)}
- break;
- case 1:
- var t=new Array(8);
- for(var i=0;i < size;i++)
- {for(var j=0;j < 8;j++)t[j] = reader.read8u();
- var f=caml_int64_float_of_bits(caml_int64_of_bytes(t));
- ba.set(i,f)}
- break;
- case 0:
- for(var i=0;i < size;i++)
- {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)}
- break;
- case 10:
- for(var i=0;i < size;i++)
- {var
- re=caml_int32_float_of_bits(reader.read32s()),
- im=caml_int32_float_of_bits(reader.read32s());
- ba.set(i,[254,re,im])}
- break;
- case 11:
- var t=new Array(8);
- for(var i=0;i < size;i++)
- {for(var j=0;j < 8;j++)t[j] = reader.read8u();
- var re=caml_int64_float_of_bits(caml_int64_of_bytes(t));
- for(var j=0;j < 8;j++)t[j] = reader.read8u();
- var im=caml_int64_float_of_bits(caml_int64_of_bytes(t));
- ba.set(i,[254,re,im])}
- break
- }
- sz[0] = (4 + num_dims) * 4;
- return caml_ba_create_unsafe(kind,layout,dims,data)}
- function caml_ba_compare(a,b,total){return a.compare(b,total)}
- function caml_hash_mix_int64(h,v)
- {h = caml_hash_mix_int(h,caml_int64_lo32(v));
- h = caml_hash_mix_int(h,caml_int64_hi32(v));
- return h}
- function caml_hash_mix_float(h,v0)
- {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))}
- function caml_ba_hash(ba)
- {var num_elts=caml_ba_get_size(ba.dims),h=0;
- switch(ba.kind)
- {case 2:
- case 3:
- case 12:
- if(num_elts > 256)num_elts = 256;
- var w=0,i=0;
- for(i = 0;i + 4 <= ba.data.length;i += 4)
- {w
- =
- ba.data[i + 0]
- |
- ba.data[i + 1]
- <<
- 8
- |
- ba.data[i + 2]
- <<
- 16
- |
- ba.data[i + 3]
- <<
- 24;
- h = caml_hash_mix_int(h,w)}
- w = 0;
- switch(num_elts & 3)
- {case 3:w = ba.data[i + 2] << 16;
- case 2:w |= ba.data[i + 1] << 8;
- case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w)
- }
- break;
- case 4:
- case 5:
- if(num_elts > 128)num_elts = 128;
- var w=0,i=0;
- for(i = 0;i + 2 <= ba.data.length;i += 2)
- {w = ba.data[i + 0] | ba.data[i + 1] << 16;
- h = caml_hash_mix_int(h,w)}
- if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]);
- break;
- case 6:
- if(num_elts > 64)num_elts = 64;
- for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
- break;
- case 8:
- case 9:
- if(num_elts > 64)num_elts = 64;
- for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
- break;
- case 7:
- if(num_elts > 32)num_elts = 32;
- num_elts *= 2;
- for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
- break;
- case 10:num_elts *= 2;
- case 0:
- if(num_elts > 64)num_elts = 64;
- for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]);
- break;
- case 11:num_elts *= 2;
- case 1:
- if(num_elts > 32)num_elts = 32;
- for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]);
- break
- }
- return h}
- function caml_int32_unmarshal(reader,size)
- {size[0] = 4;return reader.read32s()}
- function caml_nativeint_unmarshal(reader,size)
- {switch(reader.read8u())
- {case 1:size[0] = 4;return reader.read32s();
- case 2:caml_failwith("input_value: native integer value too large");
- default:caml_failwith("input_value: ill-formed native integer")}}
- function caml_int64_unmarshal(reader,size)
- {var t=new Array(8);
- for(var j=0;j < 8;j++)t[j] = reader.read8u();
- size[0] = 8;
- return caml_int64_of_bytes(t)}
- function caml_int64_compare(x,y,total){return x.compare(y)}
- function caml_int64_hash(v){return v.lo32() ^ v.hi32()}
- var
- caml_custom_ops=
- {"_j":
- {deserialize:caml_int64_unmarshal,
- serialize:caml_int64_marshal,
- fixed_length:8,
- compare:caml_int64_compare,
- hash:caml_int64_hash},
- "_i":{deserialize:caml_int32_unmarshal,fixed_length:4},
- "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4},
- "_bigarray":
- {deserialize:
- function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarray")},
- serialize:caml_ba_serialize,
- compare:caml_ba_compare,
- hash:caml_ba_hash},
- "_bigarr02":
- {deserialize:
- function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarr02")},
- serialize:caml_ba_serialize,
- compare:caml_ba_compare,
- hash:caml_ba_hash}};
- function caml_compare_val_get_custom(a)
- {return caml_custom_ops[a.caml_custom]
- &&
- caml_custom_ops[a.caml_custom].compare}
- function caml_compare_val_number_custom(num,custom,swap,total)
- {var comp=caml_compare_val_get_custom(custom);
- if(comp)
- {var x=swap > 0?comp(custom,num,total):comp(num,custom,total);
- if(total && x != x)return swap;
- if(+ x != + x)return + x;
- if((x | 0) != 0)return x | 0}
- return swap}
- function caml_compare_val_tag(a)
- {if(typeof a === "number")
- return 1000;
- else
- if(caml_is_ml_bytes(a))
- return 252;
- else
- if(caml_is_ml_string(a))
- return 1252;
- else
- if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255)
- {var tag=a[0] | 0;return tag == 254?0:tag}
- else
- if(a instanceof String)
- return 12520;
- else
- if(typeof a == "string")
- return 12520;
- else
- if(a instanceof Number)
- return 1000;
- else
- if(a && a.caml_custom)
- return 1255;
- else
- if(a && a.compare)
- return 1256;
- else
- if(typeof a == "function")
- return 1247;
- else
- if(typeof a == "symbol")return 1251;
- return 1001}
- function caml_int_compare(a,b)
- {if(a < b)return - 1;if(a == b)return 0;return 1}
- function caml_bytes_compare(s1,s2)
- {s1.t & 6 && caml_convert_string_to_bytes(s1);
- s2.t & 6 && caml_convert_string_to_bytes(s2);
- return s1.c < s2.c?- 1:s1.c > s2.c?1:0}
- function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)}
- function caml_compare_val(a,b,total)
- {var stack=[];
- for(;;)
- {if(! (total && a === b))
- {var tag_a=caml_compare_val_tag(a);
- if(tag_a == 250){a = a[1];continue}
- var tag_b=caml_compare_val_tag(b);
- if(tag_b == 250){b = b[1];continue}
- if(tag_a !== tag_b)
- {if(tag_a == 1000)
- {if(tag_b == 1255)
- return caml_compare_val_number_custom(a,b,- 1,total);
- return - 1}
- if(tag_b == 1000)
- {if(tag_a == 1255)
- return caml_compare_val_number_custom(b,a,1,total);
- return 1}
- return tag_a < tag_b?- 1:1}
- switch(tag_a)
- {case 247:caml_invalid_argument("compare: functional value");break;
- case 248:
- var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break;
- case 249:caml_invalid_argument("compare: functional value");break;
- case 250:
- caml_invalid_argument
- ("equal: got Forward_tag, should not happen");
- break;
- case 251:caml_invalid_argument("equal: abstract value");break;
- case 252:
- if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0}
- break;
- case 253:
- caml_invalid_argument("equal: got Double_tag, should not happen");
- break;
- case 254:
- caml_invalid_argument
- ("equal: got Double_array_tag, should not happen");
- break;
- case 255:
- caml_invalid_argument("equal: got Custom_tag, should not happen");
- break;
- case 1247:
- caml_invalid_argument("compare: functional value");break;
- case 1255:
- var comp=caml_compare_val_get_custom(a);
- if(comp != caml_compare_val_get_custom(b))
- return a.caml_custom < b.caml_custom?- 1:1;
- if(! comp)caml_invalid_argument("compare: abstract value");
- var x=comp(a,b,total);
- if(x != x)return total?- 1:x;
- if(x !== (x | 0))return - 1;
- if(x != 0)return x | 0;
- break;
- case 1256:
- var x=a.compare(b,total);
- if(x != x)return total?- 1:x;
- if(x !== (x | 0))return - 1;
- if(x != 0)return x | 0;
- break;
- case 1000:
- a = + a;
- b = + b;
- if(a < b)return - 1;
- if(a > b)return 1;
- if(a != b)
- {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1}
- break;
- case 1001:
- if(a < b)return - 1;
- if(a > b)return 1;
- if(a != b)
- {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1}
- break;
- case 1251:if(a !== b){if(! total)return NaN;return 1}break;
- case 1252:
- var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b);
- if(a !== b){if(a < b)return - 1;if(a > b)return 1}
- break;
- case 12520:
- var a=a.toString(),b=b.toString();
- if(a !== b){if(a < b)return - 1;if(a > b)return 1}
- break;
- case 246:
- case 254:
- default:
- if(a.length != b.length)return a.length < b.length?- 1:1;
- if(a.length > 1)stack.push(a,b,1);
- break}}
- if(stack.length == 0)return 0;
- var i=stack.pop();
- b = stack.pop();
- a = stack.pop();
- if(i + 1 < a.length)stack.push(a,b,i + 1);
- a = a[i];
- b = b[i]}}
- function caml_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)}
- function div_helper(a,b,c)
- {var
- x=a * 65536 + (b >>> 16),
- y=Math.floor(x / c) * 65536,
- z=x % c * 65536,
- w=z + (b & 0x0000FFFF);
- return [y + Math.floor(w / c),w % c]}
- function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2)
- {var rem=nat1.data[ofs1 + len - 1] >>> 0;
- for(var i=len - 2;i >= 0;i--)
- {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0);
- natq.data[ofsq + i] = x[0];
- rem = x[1]}
- natr.data[ofsr] = rem;
- return 0}
- function num_leading_zero_bits_in_digit(nat,ofs)
- {var a=nat.data[ofs],b=0;
- if(a & 0xFFFF0000){b += 16;a >>>= 16}
- if(a & 0xFF00){b += 8;a >>>= 8}
- if(a & 0xF0){b += 4;a >>>= 4}
- if(a & 12){b += 2;a >>>= 2}
- if(a & 2){b += 1;a >>>= 1}
- if(a & 1)b += 1;
- return 32 - b}
- function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits)
- {if(nbits == 0){nat2.data[ofs2] = 0;return 0}
- var wrap=0;
- for(var i=0;i < len1;i++)
- {var a=nat1.data[ofs1 + i] >>> 0;
- nat1.data[ofs1 + i] = a << nbits | wrap;
- wrap = a >>> 32 - nbits}
- nat2.data[ofs2] = wrap;
- return 0}
- function MlNat(x)
- {this.data = new (globalThis.Int32Array)(x);
- this.length = this.data.length + 2}
- MlNat.prototype.caml_custom = "_nat";
- function create_nat(size)
- {var arr=new MlNat(size);
- for(var i=0;i < size;i++)arr.data[i] = - 1;
- return arr}
- function set_to_zero_nat(nat,ofs,len)
- {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0}
- function incr_nat(nat,ofs,len,carry_in)
- {var carry=carry_in;
- for(var i=0;i < len;i++)
- {var x=(nat.data[ofs + i] >>> 0) + carry;
- nat.data[ofs + i] = x | 0;
- if(x == x >>> 0){carry = 0;break}else carry = 1}
- return carry}
- function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in)
- {var carry=carry_in;
- for(var i=0;i < len2;i++)
- {var
- x=
- (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry;
- nat1.data[ofs1 + i] = x;
- if(x == x >>> 0)carry = 0;else carry = 1}
- return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)}
- function nat_of_array(l){return new MlNat(l)}
- function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3)
- {var carry=0,a=nat3.data[ofs3] >>> 0;
- for(var i=0;i < len2;i++)
- {var
- x1=
- (nat1.data[ofs1 + i] >>> 0)
- +
- (nat2.data[ofs2 + i] >>> 0)
- *
- (a & 0x0000FFFF)
- +
- carry,
- x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16);
- carry = Math.floor(x2 / 65536);
- var x3=x1 + x2 % 65536 * 65536;
- nat1.data[ofs1 + i] = x3;
- carry += Math.floor(x3 / 4294967296)}
- return len2 < len1 && carry
- ?add_nat
- (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0)
- :carry}
- function decr_nat(nat,ofs,len,carry_in)
- {var borrow=carry_in == 1?0:1;
- for(var i=0;i < len;i++)
- {var x=(nat.data[ofs + i] >>> 0) - borrow;
- nat.data[ofs + i] = x;
- if(x >= 0){borrow = 0;break}else borrow = 1}
- return borrow == 1?0:1}
- function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in)
- {var borrow=carry_in == 1?0:1;
- for(var i=0;i < len2;i++)
- {var
- x=
- (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow;
- nat1.data[ofs1 + i] = x;
- if(x >= 0)borrow = 0;else borrow = 1}
- return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)}
- function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2)
- {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2);
- if(a > b)return 1;
- if(a < b)return - 1;
- for(var i=len1 - 1;i >= 0;i--)
- {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1;
- if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1}
- return 0}
- function div_nat(nat1,ofs1,len1,nat2,ofs2,len2)
- {if(len2 == 1)
- {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2);
- return 0}
- var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1);
- shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s);
- shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s);
- var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1);
- for(var i=len1 - 1;i >= len2;i--)
- {var
- quo=
- d == 4294967296
- ?nat1.data[ofs1 + i] >>> 0
- :div_helper
- (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d)
- [0];
- set_to_zero_nat(a,0,len2 + 1);
- mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0);
- sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1);
- while
- (nat1.data[ofs1 + i]
- !=
- 0
- ||
- compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2)
- >=
- 0)
- {quo = quo + 1;
- sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)}
- nat1.data[ofs1 + i] = quo}
- shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s);
- shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s);
- return 0}
- function caml_ba_blit(src,dst)
- {if(dst.dims.length != src.dims.length)
- caml_invalid_argument("Bigarray.blit: dimension mismatch");
- for(var i=0;i < dst.dims.length;i++)
- if(dst.dims[i] != src.dims[i])
- caml_invalid_argument("Bigarray.blit: dimension mismatch");
- dst.data.set(src.data);
- return 0}
- function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0}
- function caml_int64_div(x,y){return x.div(y)}
- function caml_js_html_entities(s)
- {var entity=/^?[0-9a-zA-Z]+;$/;
- if(s.match(entity))
- {var str,temp=document.createElement("p");
- temp.innerHTML = s;
- str = temp.textContent || temp.innerText;
- temp = null;
- return str}
- else
- caml_failwith("Invalid entity " + s)}
- function caml_string_unsafe_set(s,i,c)
- {return caml_bytes_unsafe_set(s,i,c)}
- function caml_int64_of_float(x)
- {if(x < 0)x = Math.ceil(x);
- return new
- MlInt64
- (x & 0xffffff,
- Math.floor(x * caml_int64_offset) & 0xffffff,
- Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)}
- function caml_ml_channel_size_64(chanid)
- {var chan=caml_ml_channels[chanid];
- return caml_int64_of_float(chan.file.length())}
- function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0}
- function ml_z_of_int64(i64)
- {var neg=false;
- if(caml_int64_compare(i64,caml_int64_create_lo_hi(0,0)) < 0)
- {neg = true;i64 = caml_int64_neg(i64)}
- var
- lo=caml_int64_lo32(i64) >>> 0,
- hi=caml_int64_hi32(i64) >>> 0,
- x=bigInt(lo).add(bigInt(hi).shiftLeft(32));
- if(neg)x = x.negate();
- return ml_z_normalize(x)}
- var
- caml_argv=
- function()
- {var g=globalThis,main="a.out",args=[];
- if(g.process && g.process.argv && g.process.argv.length > 1)
- {var argv=g.process.argv;main = argv[1];args = argv.slice(2)}
- var p=caml_string_of_jsstring(main),args2=[0,p];
- for(var i=0;i < args.length;i++)
- args2.push(caml_string_of_jsstring(args[i]));
- return args2}
- (),
- caml_executable_name=caml_argv[1];
- function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))}
- function serialize_nat(writer,nat,sz)
- {var len=nat.data.length;
- writer.write(32,len);
- for(var i=0;i < len;i++)writer.write(32,nat.data[i]);
- sz[0] = len * 4;
- sz[1] = len * 8}
- function caml_memprof_set(_control){return 0}
- function ml_z_neg(z1){return ml_z_normalize(bigInt(z1).negate())}
- function caml_sys_exit(code)
- {var g=globalThis;
- if(g.quit)g.quit(code);
- if(g.process && g.process.exit)g.process.exit(code);
- caml_invalid_argument("Function 'exit' not implemented")}
- function caml_channel_descriptor(chanid)
- {var chan=caml_ml_channels[chanid];return chan.fd}
- function caml_js_from_array(a){return a.slice(1)}
- function caml_ba_reshape(ba,vind)
- {vind = caml_js_from_array(vind);
- var new_dim=[],num_dims=vind.length;
- if(num_dims < 0 || num_dims > 16)
- caml_invalid_argument("Bigarray.reshape: bad number of dimensions");
- var num_elts=1;
- for(var i=0;i < num_dims;i++)
- {new_dim[i] = vind[i];
- if(new_dim[i] < 0)
- caml_invalid_argument("Bigarray.reshape: negative dimension");
- num_elts = num_elts * new_dim[i]}
- var size=caml_ba_get_size(ba.dims);
- if(num_elts != size)
- caml_invalid_argument("Bigarray.reshape: size mismatch");
- return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)}
- var caml_oo_last_id=0;
- function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b}
- function caml_gr_fill_rect(x,y,w,h)
- {var s=caml_gr_state_get();
- s.context.fillRect(x,s.height - y,w,- h);
- return 0}
- function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len)
- {if(12 != ba2.kind)
- caml_invalid_argument
- ("caml_bigstring_blit_string_to_ba: kind mismatch");
- if(len == 0)return 0;
- var ofs2=ba2.offset(pos2);
- if(pos1 + len > caml_ml_string_length(str1))caml_array_bound_error();
- if(ofs2 + len > ba2.data.length)caml_array_bound_error();
- var slice=caml_array_of_string(str1).slice(pos1,pos1 + len);
- ba2.data.set(slice,ofs2);
- return 0}
- function caml_gr_set_window_title(name)
- {var s=caml_gr_state_get();
- s.title = name;
- var jsname=caml_jsstring_of_string(name);
- if(s.set_title)s.set_title(jsname);
- return 0}
- function caml_get_global_data(){return caml_global_data}
- function caml_int64_shift_right_unsigned(x,s)
- {return x.shift_right_unsigned(s)}
- function caml_ba_uint8_get16(ba,i0)
- {var ofs=ba.offset(i0);
- if(ofs + 1 >= ba.data.length)caml_array_bound_error();
- var b1=ba.get(ofs),b2=ba.get(ofs + 1);
- return b1 | b2 << 8}
- function ml_z_of_int(i){return i | 0}
- function ml_z_of_int32(i32){return ml_z_of_int(i32)}
- function caml_compare(a,b){return caml_compare_val(a,b,true)}
- function caml_fresh_oo_id(){return caml_oo_last_id++}
- function caml_int64_to_float(x){return x.toFloat()}
- function caml_ba_get_1(ba,i0){return ba.get(ba.offset(i0))}
- function caml_bigstring_memcmp(s1,pos1,s2,pos2,len)
- {for(var i=0;i < len;i++)
- {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i);
- if(a < b)return - 1;
- if(a > b)return 1}
- return 0}
- function caml_new_string(s){return caml_string_of_jsbytes(s)}
- function caml_erf_float(x)
- {var
- a1=0.254829592,
- a2=- 0.284496736,
- a3=1.421413741,
- a4=- 1.453152027,
- a5=1.061405429,
- p=0.3275911,
- sign=1;
- if(x < 0)sign = - 1;
- x = Math.abs(x);
- var
- t=1.0 / (1.0 + p * x),
- y=
- 1.0
- -
- ((((a5 * t + a4) * t + a3) * t + a2) * t + a1)
- *
- t
- *
- Math.exp(- (x * x));
- return sign * y}
- function caml_ba_uint8_get32(ba,i0)
- {var ofs=ba.offset(i0);
- if(ofs + 3 >= ba.data.length)caml_array_bound_error();
- var
- b1=ba.get(ofs + 0),
- b2=ba.get(ofs + 1),
- b3=ba.get(ofs + 2),
- b4=ba.get(ofs + 3);
- return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24}
- function caml_raw_backtrace_length(){return 0}
- function ml_z_shift_right(z1,amt)
- {return ml_z_normalize(bigInt(z1).shiftRight(amt))}
- function caml_obj_block(tag,size)
- {var o=new Array(size + 1);
- o[0] = tag;
- for(var i=1;i <= size;i++)o[i] = 0;
- return o}
- function caml_gr_clear_graph()
- {var s=caml_gr_state_get();
- s.canvas.width = s.width;
- s.canvas.height = s.height;
- return 0}
- function bigstring_to_array_buffer(bs){return bs.data.buffer}
- function caml_sys_const_naked_pointers_checked(_unit){return 0}
- function lxor_digit_nat(nat1,ofs1,nat2,ofs2)
- {nat1.data[ofs1] ^= nat2.data[ofs2];return 0}
- function caml_obj_add_offset(v,offset)
- {caml_failwith("Obj.add_offset is not supported")}
- function caml_final_release(){return 0}
- function caml_js_to_array(a)
- {var len=a.length,b=new Array(len + 1);
- b[0] = 0;
- for(var i=0;i < len;i++)b[i + 1] = a[i];
- return b}
- function ml_z_logor(z1,z2)
- {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))}
- function caml_gr_plot(x,y)
- {var
- s=caml_gr_state_get(),
- im=s.context.createImageData(1,1),
- d=im.data,
- color=s.color;
- d[0] = color >> 16 & 0xff;
- d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff;
- d[3] = 0xFF;
- s.x = x;
- s.y = y;
- s.context.putImageData(im,x,s.height - y);
- return 0}
- function caml_bytes_set16(s,i,i16)
- {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error();
- var b2=0xFF & i16 >> 8,b1=0xFF & i16;
- caml_bytes_unsafe_set(s,i + 0,b1);
- caml_bytes_unsafe_set(s,i + 1,b2);
- return 0}
- function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)}
- function caml_bytes_set64(s,i,i64)
- {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error();
- var a=caml_int64_to_bytes(i64);
- for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]);
- return 0}
- function caml_int64_bswap(x)
- {var y=caml_int64_to_bytes(x);
- return caml_int64_of_bytes([y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]])}
- function ml_z_fits_int(z1){return z1 == (z1 | 0)?1:0}
- function ml_z_fits_int32(z1){return ml_z_fits_int(z1)}
- function caml_fill_bytes(s,i,l,c)
- {if(l > 0)
- if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length))
- if(c == 0)
- {s.c = "";s.t = 2}
- else
- {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2}
- else
- {if(s.t != 4)caml_convert_bytes_to_array(s);
- for(l += i;i < l;i++)s.c[i] = c}
- return 0}
- var caml_fill_string=caml_fill_bytes;
- function caml_gc_major(){return 0}
- function ml_z_shift_left(z1,amt)
- {return ml_z_normalize(bigInt(z1).shiftLeft(amt))}
- function caml_lex_array(s)
- {s = caml_jsbytes_of_string(s);
- var l=s.length / 2,a=new Array(l);
- for(var i=0;i < l;i++)
- a[i]
- =
- (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8)
- <<
- 16
- >>
- 16;
- return a}
- function caml_lex_engine(tbl,start_state,lexbuf)
- {var
- lex_buffer=2,
- lex_buffer_len=3,
- lex_start_pos=5,
- lex_curr_pos=6,
- lex_last_pos=7,
- lex_last_action=8,
- lex_eof_reached=9,
- lex_base=1,
- lex_backtrk=2,
- lex_default=3,
- lex_trans=4,
- lex_check=5;
- if(! tbl.lex_default)
- {tbl.lex_base = caml_lex_array(tbl[lex_base]);
- tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
- tbl.lex_check = caml_lex_array(tbl[lex_check]);
- tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
- tbl.lex_default = caml_lex_array(tbl[lex_default])}
- var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]);
- if(state >= 0)
- {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
- lexbuf[lex_last_action] = - 1}
- else
- state = - state - 1;
- for(;;)
- {var base=tbl.lex_base[state];
- if(base < 0)return - base - 1;
- var backtrk=tbl.lex_backtrk[state];
- if(backtrk >= 0)
- {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
- lexbuf[lex_last_action] = backtrk}
- if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len])
- if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256;
- else
- {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++}
- if(tbl.lex_check[base + c] == state)
- state = tbl.lex_trans[base + c];
- else
- state = tbl.lex_default[state];
- if(state < 0)
- {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
- if(lexbuf[lex_last_action] == - 1)
- caml_failwith("lexing: empty token");
- else
- return lexbuf[lex_last_action]}
- else
- if(c == 256)lexbuf[lex_eof_reached] = 0}}
- function unix_getuid(unit)
- {if(globalThis.process && globalThis.process.getuid)
- return globalThis.process.getuid();
- caml_raise_not_found()}
- function caml_sys_file_exists(name)
- {var root=resolve_fs_device(name);return root.device.exists(root.rest)}
- function caml_convert_raw_backtrace_slot()
- {caml_failwith("caml_convert_raw_backtrace_slot")}
- function caml_array_sub(a,i,len)
- {var a2=new Array(len + 1);
- a2[0] = 0;
- for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1];
- return a2}
- function caml_bytes_equal(s1,s2)
- {if(s1 === s2)return 1;
- s1.t & 6 && caml_convert_string_to_bytes(s1);
- s2.t & 6 && caml_convert_string_to_bytes(s2);
- return s1.c == s2.c?1:0}
- function caml_gr_size_x(){var s=caml_gr_state_get();return s.width}
- function caml_ml_debug_info_status(){return 0}
- var
- os_type=
- globalThis.process
- &&
- globalThis.process.platform
- &&
- globalThis.process.platform
- ==
- "win32"
- ?"Cygwin"
- :"Unix";
- function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0}
- function caml_cosh_float(x){return Math.cosh(x)}
- var caml_ephe_key_offset=3;
- function caml_weak_check(x,i)
- {return x[caml_ephe_key_offset + i]
- !==
- undefined
- &&
- x[caml_ephe_key_offset + i]
- !==
- 0
- ?1
- :0}
- var caml_ephe_check_key=caml_weak_check;
- function caml_hash_mix_final(h)
- {h ^= h >>> 16;
- h = caml_mul(h,0x85ebca6b | 0);
- h ^= h >>> 13;
- h = caml_mul(h,0xc2b2ae35 | 0);
- h ^= h >>> 16;
- return h}
- function caml_gr_text_size(txt)
- {var
- s=caml_gr_state_get(),
- w=s.context.measureText(caml_jsstring_of_string(txt)).width;
- return [0,w,s.text_size]}
- function caml_lex_run_mem(s,i,mem,curr_pos)
- {for(;;)
- {var dst=s.charCodeAt(i);
- i++;
- if(dst == 0xff)return;
- var src=s.charCodeAt(i);
- i++;
- if(src == 0xff)
- mem[dst + 1] = curr_pos;
- else
- mem[dst + 1] = mem[src + 1]}}
- function caml_lex_run_tag(s,i,mem)
- {for(;;)
- {var dst=s.charCodeAt(i);
- i++;
- if(dst == 0xff)return;
- var src=s.charCodeAt(i);
- i++;
- if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}}
- function caml_new_lex_engine(tbl,start_state,lexbuf)
- {var
- lex_buffer=2,
- lex_buffer_len=3,
- lex_start_pos=5,
- lex_curr_pos=6,
- lex_last_pos=7,
- lex_last_action=8,
- lex_eof_reached=9,
- lex_mem=10,
- lex_base=1,
- lex_backtrk=2,
- lex_default=3,
- lex_trans=4,
- lex_check=5,
- lex_base_code=6,
- lex_backtrk_code=7,
- lex_default_code=8,
- lex_trans_code=9,
- lex_check_code=10,
- lex_code=11;
- if(! tbl.lex_default)
- {tbl.lex_base = caml_lex_array(tbl[lex_base]);
- tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
- tbl.lex_check = caml_lex_array(tbl[lex_check]);
- tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
- tbl.lex_default = caml_lex_array(tbl[lex_default])}
- if(! tbl.lex_default_code)
- {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]);
- tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]);
- tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]);
- tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]);
- tbl.lex_default_code = caml_lex_array(tbl[lex_default_code])}
- if(tbl.lex_code == null)
- tbl.lex_code = caml_jsbytes_of_string(tbl[lex_code]);
- var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]);
- if(state >= 0)
- {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
- lexbuf[lex_last_action] = - 1}
- else
- state = - state - 1;
- for(;;)
- {var base=tbl.lex_base[state];
- if(base < 0)
- {var pc_off=tbl.lex_base_code[state];
- caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]);
- return - base - 1}
- var backtrk=tbl.lex_backtrk[state];
- if(backtrk >= 0)
- {var pc_off=tbl.lex_backtrk_code[state];
- caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]);
- lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
- lexbuf[lex_last_action] = backtrk}
- if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len])
- if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256;
- else
- {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++}
- var pstate=state;
- if(tbl.lex_check[base + c] == state)
- state = tbl.lex_trans[base + c];
- else
- state = tbl.lex_default[state];
- if(state < 0)
- {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
- if(lexbuf[lex_last_action] == - 1)
- caml_failwith("lexing: empty token");
- else
- return lexbuf[lex_last_action]}
- else
- {var base_code=tbl.lex_base_code[pstate],pc_off;
- if(tbl.lex_check_code[base_code + c] == pstate)
- pc_off = tbl.lex_trans_code[base_code + c];
- else
- pc_off = tbl.lex_default_code[pstate];
- if(pc_off > 0)
- caml_lex_run_mem
- (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]);
- if(c == 256)lexbuf[lex_eof_reached] = 0}}}
- function caml_ba_uint8_set64(ba,i0,v)
- {var ofs=ba.offset(i0);
- if(ofs + 7 >= ba.data.length)caml_array_bound_error();
- var v=caml_int64_to_bytes(v);
- for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]);
- return 0}
- function ml_z_popcount(z)
- {z = bigInt(z);
- var zero=bigInt(0),one=bigInt(1);
- if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow"));
- var i;
- for(i = 0;! z.equals(zero);i++)z = z.and(z.prev());
- if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow"));
- return i | 0}
- function caml_sys_executable_name(a){return caml_executable_name}
- function caml_lessequal(x,y){return + (caml_compare_val(x,y,false) <= 0)}
- function caml_acosh_float(x){return Math.acosh(x)}
- function caml_ml_flush(chanid)
- {var chan=caml_ml_channels[chanid];
- if(! chan.opened)caml_raise_sys_error("Cannot flush a closed channel");
- if(! chan.buffer || chan.buffer == "")return 0;
- if
- (chan.fd
- &&
- caml_global_data.fds[chan.fd]
- &&
- caml_global_data.fds[chan.fd].output)
- {var output=caml_global_data.fds[chan.fd].output;
- switch(output.length)
- {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}}
- chan.buffer = "";
- return 0}
- function caml_ml_seek_out_64(chanid,pos)
- {caml_ml_flush(chanid);
- caml_ml_channels[chanid].offset = caml_int64_to_float(pos);
- return 0}
- function compare_nat_real(nat1,nat2)
- {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)}
- function caml_gc_set(_control){return 0}
- function caml_js_get(o,f){return o[f]}
- function caml_ml_set_buffered(c,v){return 0}
- function caml_gc_compaction(){return 0}
- function caml_weak_get(x,i)
- {if(i < 0 || caml_ephe_key_offset + i >= x.length)
- caml_invalid_argument("Weak.get_key");
- return x[caml_ephe_key_offset + i] === undefined
- ?0
- :x[caml_ephe_key_offset + i]}
- var caml_ephe_get_key=caml_weak_get;
- function jsoo_z_of_js_string_base(base,s)
- {if(base == 0)
- {base = 10;
- var p=0,sign=1;
- if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++;
- if(s[p] == "0")
- {p++;
- if(s.length == p)
- return 0;
- else
- {var bc=s[p];
- if(bc == "o" || bc == "O")
- base = 8;
- else
- if(bc == "x" || bc == "X")
- base = 16;
- else
- if(bc == "b" || bc == "B")base = 2;
- if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}}
- if(s[0] == "+")s = s.substring(1);
- s = s.replace(/^0+/,"");
- if(s == "-" || s == "")s = "0";
- function digit(code)
- {if(code >= 48 && code <= 57)return code - 48;
- if(code >= 97 && code <= 102)return code - 97 + 10;
- if(code >= 65 && code <= 70)return code - 65 + 10}
- var i=0;
- if(s[i] == "-")i++;
- for(;i < s.length;i++)
- {var c=digit(s.charCodeAt(i));
- if(c == undefined || c >= base)
- caml_invalid_argument("Z.of_substring_base: invalid digit")}
- return ml_z_normalize(bigInt(s,base))}
- function ml_z_of_substring_base(base,s,pos,len)
- {s = caml_jsbytes_of_string(s);
- if(pos != 0 || len != s.length)
- {if(s.length - pos < len)
- caml_invalid_argument
- ("Z.of_substring_base: invalid offset or length");
- s = s.slice(pos,pos + len)}
- return jsoo_z_of_js_string_base(base,s)}
- function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len)
- {if(12 != ba2.kind)
- caml_invalid_argument
- ("caml_bigstring_blit_string_to_ba: kind mismatch");
- if(len == 0)return 0;
- var ofs2=ba2.offset(pos2);
- if(pos1 + len > caml_ml_bytes_length(str1))caml_array_bound_error();
- if(ofs2 + len > ba2.data.length)caml_array_bound_error();
- var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len);
- ba2.data.set(slice,ofs2);
- return 0}
- function win_cleanup(){}
- function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0}
- function caml_ml_close_channel(chanid)
- {var chan=caml_ml_channels[chanid];
- caml_ml_flush(chanid);
- chan.opened = false;
- chan.file.close();
- caml_sys_close(chan.fd);
- return 0}
- function caml_exn_with_js_backtrace(exn,force)
- {if(! exn.js_error || force || exn[0] == 248)
- exn.js_error
- =
- new (globalThis.Error)("Js exception containing backtrace");
- return exn}
- function caml_sys_isatty(_chan){return 0}
- function is_digit_zero(nat,ofs){if(nat.data[ofs] == 0)return 1;return 0}
- function unix_inet_addr_of_string(){return 0}
- function caml_js_set(o,f,v){o[f] = v;return 0}
- function ml_z_gcdext_intern(z1,z2)
- {z1 = bigInt(z1);
- z2 = bigInt(z2);
- var
- gcd=bigInt.gcd(z1,z2),
- a=z1,
- b=z2,
- x=bigInt(0),
- lastx=bigInt(1),
- y=bigInt(1),
- lasty=bigInt(1),
- q,
- t,
- r;
- if(z1.equals(bigInt(0)))caml_raise_zero_divide();
- while(! b.equals(bigInt(0)))
- {q = a.divide(b);
- r = a.subtract(q.multiply(b));
- t = x;
- x = lastx.subtract(q.multiply(x));
- lastx = t;
- t = y;
- y = lasty.subtract(q.multiply(y));
- lasty = t;
- a = b;
- b = r}
- return a.lt(bigInt(0))
- ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1]
- :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]}
- function ml_z_testbit(z,pos)
- {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0}
- function caml_array_get(array,index)
- {if(index < 0 || index >= array.length - 1)caml_array_bound_error();
- return array[index + 1]}
- function caml_log2_float(x){return Math.log2(x)}
- function caml_gc_huge_fallback_count(unit){return 0}
- function caml_spacetime_only_works_for_native_code()
- {caml_failwith("Spacetime profiling only works for native code")}
- function caml_int64_sub(x,y){return x.sub(y)}
- function caml_ml_seek_in_64(chanid,pos)
- {var chan=caml_ml_channels[chanid];
- if(chan.refill != null)caml_raise_sys_error("Illegal seek");
- chan.offset = caml_int64_to_float(pos);
- return 0}
- function caml_int64_shift_left(x,s){return x.shift_left(s)}
- function caml_notequal(x,y){return + (caml_compare_val(x,y,false) != 0)}
- function ml_z_abs(z1){return ml_z_normalize(bigInt(z1).abs())}
- function caml_sys_const_int_size(){return 32}
- function caml_js_wrap_meth_callback(f)
- {return function()
- {var len=arguments.length,args=new Array(len + 1);
- args[0] = this;
- for(var i=0;i < len;i++)args[i + 1] = arguments[i];
- return caml_call_gen(f,args)}}
- function caml_is_js(){return 1}
- function caml_ba_dim(ba,i)
- {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim");
- return ba.dims[i]}
- function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)}
- function ml_z_sqrt(z1)
- {var z=bigInt(z1),zero=bigInt(0);
- if(z.lt(zero))
- caml_invalid_argument("Z.sqrt: square root of a negative number");
- return ml_z_root(z,2)}
- function unix_localtime(t)
- {var
- d=new Date(t * 1000),
- d_num=d.getTime(),
- januaryfirst=new Date(d.getFullYear(),0,1).getTime(),
- doy=Math.floor((d_num - januaryfirst) / 86400000),
- jan=new Date(d.getFullYear(),0,1),
- jul=new Date(d.getFullYear(),6,1),
- stdTimezoneOffset=
- Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset());
- return [0,
- d.getSeconds(),
- d.getMinutes(),
- d.getHours(),
- d.getDate(),
- d.getMonth(),
- d.getFullYear() - 1900,
- d.getDay(),
- doy,
- d.getTimezoneOffset() < stdTimezoneOffset | 0]}
- function caml_js_meth_call(o,f,args)
- {return o[caml_jsstring_of_string(f)].apply(o,caml_js_from_array(args))}
- function caml_weak_create(n)
- {if(n < 0)caml_invalid_argument("Weak.create");
- var x=[251,"caml_ephe_list_head"];
- x.length = caml_ephe_key_offset + n;
- return x}
- var caml_ephe_create=caml_weak_create;
- function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)}
- function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0}
- function unix_mktime(tm)
- {var
- d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(),
- t=Math.floor(d / 1000),
- tm2=unix_localtime(t);
- return [0,t,tm2]}
- function caml_trampoline(res)
- {var c=1;
- while(res && res.joo_tramp)
- {res = res.joo_tramp.apply(null,res.joo_args);c++}
- return res}
- function caml_bytes_get64(s,i)
- {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error();
- var a=new Array(8);
- for(var j=0;j < 8;j++)a[7 - j] = caml_bytes_unsafe_get(s,i + j);
- return caml_int64_of_bytes(a)}
- function ml_z_rem(z1,z2)
- {z2 = bigInt(z2);
- if(z2.equals(bigInt(0)))caml_raise_zero_divide();
- return ml_z_normalize(bigInt(z1).mod(z2))}
- function caml_weak_set(x,i,v)
- {if(i < 0 || caml_ephe_key_offset + i >= x.length)
- caml_invalid_argument("Weak.set");
- x[caml_ephe_key_offset + i] = v;
- return 0}
- function caml_sys_remove(name)
- {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest);
- if(ok == 0)caml_raise_no_such_file(caml_jsbytes_of_string(name));
- return 0}
- function caml_string_bound_error()
- {caml_invalid_argument("index out of bounds")}
- function caml_string_get32(s,i)
- {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error();
- var
- b1=caml_string_unsafe_get(s,i),
- b2=caml_string_unsafe_get(s,i + 1),
- b3=caml_string_unsafe_get(s,i + 2),
- b4=caml_string_unsafe_get(s,i + 3);
- return b4 << 24 | b3 << 16 | b2 << 8 | b1}
- function caml_hypot_float(x,y){return Math.hypot(x,y)}
- function caml_js_call(f,o,args)
- {return f.apply(o,caml_js_from_array(args))}
- function caml_sys_const_max_wosize(){return 0x7FFFFFFF / 4 | 0}
- function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)}
- function ml_z_mul_overflows(x,y){var z=x * y;return z != (z | 0)}
- function ml_z_to_int(z1)
- {if(z1 == (z1 | 0))return z1 | 0;
- caml_raise_constant(caml_named_value("ml_z_overflow"))}
- function caml_hash_mix_bytes_arr(h,s)
- {var len=s.length,i,w;
- for(i = 0;i + 4 <= len;i += 4)
- {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24;
- h = caml_hash_mix_int(h,w)}
- w = 0;
- switch(len & 3)
- {case 3:w = s[i + 2] << 16;
- case 2:w |= s[i + 1] << 8;
- case 1:w |= s[i];h = caml_hash_mix_int(h,w)
- }
- h ^= len;
- return h}
- function caml_hash_mix_jsbytes(h,s)
- {var len=s.length,i,w;
- for(i = 0;i + 4 <= len;i += 4)
- {w
- =
- s.charCodeAt(i)
- |
- s.charCodeAt(i + 1)
- <<
- 8
- |
- s.charCodeAt(i + 2)
- <<
- 16
- |
- s.charCodeAt(i + 3)
- <<
- 24;
- h = caml_hash_mix_int(h,w)}
- w = 0;
- switch(len & 3)
- {case 3:w = s.charCodeAt(i + 2) << 16;
- case 2:w |= s.charCodeAt(i + 1) << 8;
- case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w)
- }
- h ^= len;
- return h}
- function caml_ml_bytes_content(s)
- {switch(s.t & 6)
- {default:caml_convert_string_to_bytes(s);case 0:return s.c;
- case 4:return s.c
- }}
- function caml_hash_mix_bytes(h,v)
- {var content=caml_ml_bytes_content(v);
- return typeof content === "string"
- ?caml_hash_mix_jsbytes(h,content)
- :caml_hash_mix_bytes_arr(h,content)}
- function caml_bytes_lessthan(s1,s2)
- {s1.t & 6 && caml_convert_string_to_bytes(s1);
- s2.t & 6 && caml_convert_string_to_bytes(s2);
- return s1.c < s2.c?1:0}
- function caml_erfc_float(x){return 1 - caml_erf_float(x)}
- function caml_gr_fill_poly(ar)
- {var s=caml_gr_state_get();
- s.context.beginPath();
- s.context.moveTo(ar[1][1],s.height - ar[1][2]);
- for(var i=2;i < ar.length;i++)
- s.context.lineTo(ar[i][1],s.height - ar[i][2]);
- s.context.lineTo(ar[1][1],s.height - ar[1][2]);
- s.context.fill();
- return 0}
- function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
- function caml_raise_end_of_file()
- {caml_raise_constant(caml_global_data.End_of_file)}
- function caml_ml_input_int(chanid)
- {var chan=caml_ml_channels[chanid],file=chan.file;
- while(chan.offset + 3 >= file.length())
- {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()}
- var
- o=chan.offset,
- r=
- file.read_one(o)
- <<
- 24
- |
- file.read_one(o + 1)
- <<
- 16
- |
- file.read_one(o + 2)
- <<
- 8
- |
- file.read_one(o + 3);
- chan.offset += 4;
- return r}
- function caml_gr_display_mode()
- {caml_failwith("caml_gr_display_mode not Implemented")}
- function caml_obj_reachable_words(o){return 0}
- function nth_digit_nat(nat,ofs){return nat.data[ofs]}
- function caml_array_blit(a1,i1,a2,i2,len)
- {if(i2 <= i1)
- for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j];
- else
- for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j];
- return 0}
- function caml_float_of_string(s)
- {var res;
- s = caml_jsbytes_of_string(s);
- res = + s;
- if(s.length > 0 && res === res)return res;
- s = s.replace(/_/g,"");
- res = + s;
- if(s.length > 0 && res === res || /^[+-]?nan$/i.test(s))return res;
- var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(s);
- if(m)
- {var
- m3=m[3].replace(/0+$/,""),
- mantissa=parseInt(m[1] + m[2] + m3,16),
- exponent=(m[5] | 0) - 4 * m3.length;
- res = mantissa * Math.pow(2,exponent);
- return res}
- if(/^\+?inf(inity)?$/i.test(s))return Infinity;
- if(/^-inf(inity)?$/i.test(s))return - Infinity;
- caml_failwith("float_of_string")}
- function caml_sys_getcwd()
- {return caml_string_of_jsbytes(caml_current_dir)}
- function caml_sys_const_big_endian(){return 0}
- function caml_list_to_js_array(l)
- {var a=[];for(;l !== 0;l = l[2])a.push(l[1]);return a}
- var
- caml_legacy_custom_code=false,
- caml_output_val=
- function()
- {function Writer(){this.chunk = []}
- Writer.prototype
- =
- {chunk_idx:20,
- block_len:0,
- obj_counter:0,
- size_32:0,
- size_64:0,
- write:
- function(size,value)
- {for(var i=size - 8;i >= 0;i -= 8)
- this.chunk[this.chunk_idx++] = value >> i & 0xFF},
- write_at:
- function(pos,size,value)
- {var pos=pos;
- for(var i=size - 8;i >= 0;i -= 8)
- this.chunk[pos++] = value >> i & 0xFF},
- write_code:
- function(size,code,value)
- {this.chunk[this.chunk_idx++] = code;
- for(var i=size - 8;i >= 0;i -= 8)
- this.chunk[this.chunk_idx++] = value >> i & 0xFF},
- write_shared:
- function(offset)
- {if(offset < 1 << 8)
- this.write_code(8,0x04,offset);
- else
- if(offset < 1 << 16)
- this.write_code(16,0x05,offset);
- else
- this.write_code(32,0x06,offset)},
- pos:function(){return this.chunk_idx},
- finalize:
- function()
- {this.block_len = this.chunk_idx - 20;
- this.chunk_idx = 0;
- this.write(32,0x8495A6BE);
- this.write(32,this.block_len);
- this.write(32,this.obj_counter);
- this.write(32,this.size_32);
- this.write(32,this.size_64);
- return this.chunk}};
- return function(v,flags)
- {flags = caml_list_to_js_array(flags);
- var
- no_sharing=flags.indexOf(0) !== - 1,
- closures=flags.indexOf(1) !== - 1;
- if(closures)
- globalThis.console.warn
- ("in caml_output_val: flag Marshal.Closures is not supported.");
- var
- writer=new Writer(),
- stack=[],
- intern_obj_table=no_sharing?null:new MlObjectTable();
- function memo(v)
- {if(no_sharing)return false;
- var existing_offset=intern_obj_table.recall(v);
- if(existing_offset)
- {writer.write_shared(existing_offset);return true}
- else
- {intern_obj_table.store(v);return false}}
- function extern_rec(v)
- {if(v.caml_custom)
- {if(memo(v))return;
- var
- name=v.caml_custom,
- ops=caml_custom_ops[name],
- sz_32_64=[0,0];
- if(! ops.serialize)
- caml_invalid_argument("output_value: abstract value (Custom)");
- if(caml_legacy_custom_code)
- {writer.write(8,0x12);
- for(var i=0;i < name.length;i++)
- writer.write(8,name.charCodeAt(i));
- writer.write(8,0);
- ops.serialize(writer,v,sz_32_64)}
- else
- if(ops.fixed_length == undefined)
- {writer.write(8,0x18);
- for(var i=0;i < name.length;i++)
- writer.write(8,name.charCodeAt(i));
- writer.write(8,0);
- var header_pos=writer.pos();
- for(var i=0;i < 12;i++)writer.write(8,0);
- ops.serialize(writer,v,sz_32_64);
- writer.write_at(header_pos,32,sz_32_64[0]);
- writer.write_at(header_pos + 4,32,0);
- writer.write_at(header_pos + 8,32,sz_32_64[1])}
- else
- {writer.write(8,0x19);
- for(var i=0;i < name.length;i++)
- writer.write(8,name.charCodeAt(i));
- writer.write(8,0);
- var old_pos=writer.pos();
- ops.serialize(writer,v,sz_32_64);
- if(ops.fixed_length != writer.pos() - old_pos)
- caml_failwith
- ("output_value: incorrect fixed sizes specified by " + name)}
- writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2);
- writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)}
- else
- if(v instanceof Array && v[0] === (v[0] | 0))
- {if(v[0] == 251)
- caml_failwith("output_value: abstract value (Abstract)");
- if(v.length > 1 && memo(v))return;
- if(v[0] < 16 && v.length - 1 < 8)
- writer.write(8,0x80 + v[0] + (v.length - 1 << 4));
- else
- writer.write_code(32,0x08,v.length - 1 << 10 | v[0]);
- writer.size_32 += v.length;
- writer.size_64 += v.length;
- if(v.length > 1)stack.push(v,1)}
- else
- if(caml_is_ml_bytes(v))
- {if(! caml_is_ml_bytes(caml_string_of_jsbytes("")))
- caml_failwith
- ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]");
- if(memo(v))return;
- var len=caml_ml_bytes_length(v);
- if(len < 0x20)
- writer.write(8,0x20 + len);
- else
- if(len < 0x100)
- writer.write_code(8,0x09,len);
- else
- writer.write_code(32,0x0A,len);
- for(var i=0;i < len;i++)
- writer.write(8,caml_bytes_unsafe_get(v,i));
- writer.size_32 += 1 + ((len + 4) / 4 | 0);
- writer.size_64 += 1 + ((len + 8) / 8 | 0)}
- else
- if(caml_is_ml_string(v))
- {var len=caml_ml_string_length(v);
- if(len < 0x20)
- writer.write(8,0x20 + len);
- else
- if(len < 0x100)
- writer.write_code(8,0x09,len);
- else
- writer.write_code(32,0x0A,len);
- for(var i=0;i < len;i++)
- writer.write(8,caml_string_unsafe_get(v,i));
- writer.size_32 += 1 + ((len + 4) / 4 | 0);
- writer.size_64 += 1 + ((len + 8) / 8 | 0)}
- else
- if(v != (v | 0))
- {var type_of_v=typeof v;
- caml_failwith
- ("output_value: abstract value (" + type_of_v + ")")}
- else
- if(v >= 0 && v < 0x40)
- writer.write(8,0X40 + v);
- else
- if(v >= - (1 << 7) && v < 1 << 7)
- writer.write_code(8,0x00,v);
- else
- if(v >= - (1 << 15) && v < 1 << 15)
- writer.write_code(16,0x01,v);
- else
- writer.write_code(32,0x02,v)}
- extern_rec(v);
- while(stack.length > 0)
- {var i=stack.pop(),v=stack.pop();
- if(i + 1 < v.length)stack.push(v,i + 1);
- extern_rec(v[i])}
- if(intern_obj_table)
- writer.obj_counter = intern_obj_table.objs.length;
- writer.finalize();
- return writer.chunk}}
- ();
- function caml_string_of_array(a)
- {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))}
- function caml_output_value_to_string(v,flags)
- {return caml_string_of_array(caml_output_val(v,flags))}
- function caml_raise_not_a_dir(name)
- {caml_raise_sys_error(name + ": Not a directory")}
- function caml_sys_system_command(cmd)
- {var cmd=caml_jsstring_of_string(cmd);
- if
- (typeof require
- !=
- "undefined"
- &&
- require("child_process")
- &&
- require("child_process").execSync)
- try
- {require("child_process").execSync(cmd,{stdio:"inherit"});return 0}
- catch(e){return 1}
- else
- return 127}
- function unix_isatty(fileDescriptor)
- {if(fs_node_supported())
- {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0}
- else
- return 0}
- function caml_js_error_of_exception(exn)
- {if(exn.js_error)return exn.js_error;return null}
- function deserialize_nat(reader,sz)
- {var len=reader.read32s(),nat=new MlNat(len);
- for(var i=0;i < len;i++)nat.data[i] = reader.read32s();
- sz[0] = len * 4;
- return nat}
- function initialize_nat()
- {caml_custom_ops["_nat"]
- =
- {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}}
- function ml_z_succ(z1){return ml_z_normalize(bigInt(z1).next())}
- function caml_gr_open_subwindow(a,b,c,d)
- {caml_failwith("caml_gr_open_subwindow not Implemented")}
- function unix_lstat(name)
- {var root=resolve_fs_device(name);
- if(! root.device.lstat)caml_failwith("unix_lstat: not implemented");
- return root.device.lstat(root.rest,true)}
- var unix_lstat_64=unix_lstat;
- function js_print_stdout(s)
- {var s=caml_utf16_of_utf8(s),g=globalThis;
- if(g.process && g.process.stdout && g.process.stdout.write)
- g.process.stdout.write(s);
- else
- {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1);
- var v=g.console;
- v && v.log && v.log(s)}}
- function caml_copysign_float(x,y)
- {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x}
- function caml_gr_set_text_size(size)
- {var s=caml_gr_state_get();
- s.text_size = size;
- s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font);
- return 0}
- var
- caml_md5_bytes=
- function()
- {function add(x,y){return x + y | 0}
- function xx(q,a,b,x,s,t)
- {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)}
- function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)}
- function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)}
- function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)}
- function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)}
- function md5(buffer,length)
- {var i=length;
- buffer[i >> 2] |= 0x80 << 8 * (i & 3);
- for(i = (i & ~ 0x3) + 8;(i & 0x3F) < 60;i += 4)
- buffer[(i >> 2) - 1] = 0;
- buffer[(i >> 2) - 1] = length << 3;
- buffer[i >> 2] = length >> 29 & 0x1FFFFFFF;
- var w=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];
- for(i = 0;i < buffer.length;i += 16)
- {var a=w[0],b=w[1],c=w[2],d=w[3];
- a = ff(a,b,c,d,buffer[i + 0],7,0xD76AA478);
- d = ff(d,a,b,c,buffer[i + 1],12,0xE8C7B756);
- c = ff(c,d,a,b,buffer[i + 2],17,0x242070DB);
- b = ff(b,c,d,a,buffer[i + 3],22,0xC1BDCEEE);
- a = ff(a,b,c,d,buffer[i + 4],7,0xF57C0FAF);
- d = ff(d,a,b,c,buffer[i + 5],12,0x4787C62A);
- c = ff(c,d,a,b,buffer[i + 6],17,0xA8304613);
- b = ff(b,c,d,a,buffer[i + 7],22,0xFD469501);
- a = ff(a,b,c,d,buffer[i + 8],7,0x698098D8);
- d = ff(d,a,b,c,buffer[i + 9],12,0x8B44F7AF);
- c = ff(c,d,a,b,buffer[i + 10],17,0xFFFF5BB1);
- b = ff(b,c,d,a,buffer[i + 11],22,0x895CD7BE);
- a = ff(a,b,c,d,buffer[i + 12],7,0x6B901122);
- d = ff(d,a,b,c,buffer[i + 13],12,0xFD987193);
- c = ff(c,d,a,b,buffer[i + 14],17,0xA679438E);
- b = ff(b,c,d,a,buffer[i + 15],22,0x49B40821);
- a = gg(a,b,c,d,buffer[i + 1],5,0xF61E2562);
- d = gg(d,a,b,c,buffer[i + 6],9,0xC040B340);
- c = gg(c,d,a,b,buffer[i + 11],14,0x265E5A51);
- b = gg(b,c,d,a,buffer[i + 0],20,0xE9B6C7AA);
- a = gg(a,b,c,d,buffer[i + 5],5,0xD62F105D);
- d = gg(d,a,b,c,buffer[i + 10],9,0x02441453);
- c = gg(c,d,a,b,buffer[i + 15],14,0xD8A1E681);
- b = gg(b,c,d,a,buffer[i + 4],20,0xE7D3FBC8);
- a = gg(a,b,c,d,buffer[i + 9],5,0x21E1CDE6);
- d = gg(d,a,b,c,buffer[i + 14],9,0xC33707D6);
- c = gg(c,d,a,b,buffer[i + 3],14,0xF4D50D87);
- b = gg(b,c,d,a,buffer[i + 8],20,0x455A14ED);
- a = gg(a,b,c,d,buffer[i + 13],5,0xA9E3E905);
- d = gg(d,a,b,c,buffer[i + 2],9,0xFCEFA3F8);
- c = gg(c,d,a,b,buffer[i + 7],14,0x676F02D9);
- b = gg(b,c,d,a,buffer[i + 12],20,0x8D2A4C8A);
- a = hh(a,b,c,d,buffer[i + 5],4,0xFFFA3942);
- d = hh(d,a,b,c,buffer[i + 8],11,0x8771F681);
- c = hh(c,d,a,b,buffer[i + 11],16,0x6D9D6122);
- b = hh(b,c,d,a,buffer[i + 14],23,0xFDE5380C);
- a = hh(a,b,c,d,buffer[i + 1],4,0xA4BEEA44);
- d = hh(d,a,b,c,buffer[i + 4],11,0x4BDECFA9);
- c = hh(c,d,a,b,buffer[i + 7],16,0xF6BB4B60);
- b = hh(b,c,d,a,buffer[i + 10],23,0xBEBFBC70);
- a = hh(a,b,c,d,buffer[i + 13],4,0x289B7EC6);
- d = hh(d,a,b,c,buffer[i + 0],11,0xEAA127FA);
- c = hh(c,d,a,b,buffer[i + 3],16,0xD4EF3085);
- b = hh(b,c,d,a,buffer[i + 6],23,0x04881D05);
- a = hh(a,b,c,d,buffer[i + 9],4,0xD9D4D039);
- d = hh(d,a,b,c,buffer[i + 12],11,0xE6DB99E5);
- c = hh(c,d,a,b,buffer[i + 15],16,0x1FA27CF8);
- b = hh(b,c,d,a,buffer[i + 2],23,0xC4AC5665);
- a = ii(a,b,c,d,buffer[i + 0],6,0xF4292244);
- d = ii(d,a,b,c,buffer[i + 7],10,0x432AFF97);
- c = ii(c,d,a,b,buffer[i + 14],15,0xAB9423A7);
- b = ii(b,c,d,a,buffer[i + 5],21,0xFC93A039);
- a = ii(a,b,c,d,buffer[i + 12],6,0x655B59C3);
- d = ii(d,a,b,c,buffer[i + 3],10,0x8F0CCC92);
- c = ii(c,d,a,b,buffer[i + 10],15,0xFFEFF47D);
- b = ii(b,c,d,a,buffer[i + 1],21,0x85845DD1);
- a = ii(a,b,c,d,buffer[i + 8],6,0x6FA87E4F);
- d = ii(d,a,b,c,buffer[i + 15],10,0xFE2CE6E0);
- c = ii(c,d,a,b,buffer[i + 6],15,0xA3014314);
- b = ii(b,c,d,a,buffer[i + 13],21,0x4E0811A1);
- a = ii(a,b,c,d,buffer[i + 4],6,0xF7537E82);
- d = ii(d,a,b,c,buffer[i + 11],10,0xBD3AF235);
- c = ii(c,d,a,b,buffer[i + 2],15,0x2AD7D2BB);
- b = ii(b,c,d,a,buffer[i + 9],21,0xEB86D391);
- w[0] = add(a,w[0]);
- w[1] = add(b,w[1]);
- w[2] = add(c,w[2]);
- w[3] = add(d,w[3])}
- var t=new Array(16);
- for(var i=0;i < 4;i++)
- for(var j=0;j < 4;j++)t[i * 4 + j] = w[i] >> 8 * j & 0xFF;
- return t}
- return function(s,ofs,len)
- {var buf=[],content=caml_ml_bytes_content(s);
- if(typeof content === "string")
- {var b=content;
- for(var i=0;i < len;i += 4)
- {var j=i + ofs;
- buf[i >> 2]
- =
- b.charCodeAt(j)
- |
- b.charCodeAt(j + 1)
- <<
- 8
- |
- b.charCodeAt(j + 2)
- <<
- 16
- |
- b.charCodeAt(j + 3)
- <<
- 24}
- for(;i < len;i++)
- buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3)}
- else
- {var a=content;
- for(var i=0;i < len;i += 4)
- {var j=i + ofs;
- buf[i >> 2]
- =
- a[j]
- |
- a[j + 1]
- <<
- 8
- |
- a[j + 2]
- <<
- 16
- |
- a[j + 3]
- <<
- 24}
- for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)}
- return caml_string_of_array(md5(buf,len))}}
- ();
- function caml_ba_set_generic(ba,i,v)
- {ba.set(ba.offset(caml_js_from_array(i)),v);return 0}
- function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])}
- function caml_bytes_lessequal(s1,s2)
- {s1.t & 6 && caml_convert_string_to_bytes(s1);
- s2.t & 6 && caml_convert_string_to_bytes(s2);
- return s1.c <= s2.c?1:0}
- function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)}
- function caml_string_greaterequal(s1,s2)
- {return caml_string_lessequal(s2,s1)}
- function caml_int64_add(x,y){return x.add(y)}
- function caml_nextafter_float(x,y)
- {if(isNaN(x) || isNaN(y))return NaN;
- if(x == y)return y;
- if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074);
- var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1);
- if(x < y == x > 0)
- bits = caml_int64_add(bits,one);
- else
- bits = caml_int64_sub(bits,one);
- return caml_int64_float_of_bits(bits)}
- function caml_gr_size_y(){var s=caml_gr_state_get();return s.height}
- function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset}
- function caml_int64_and(x,y){return x.and(y)}
- function caml_sys_const_word_size(){return 32}
- function caml_std_output(chanid,s)
- {var
- chan=caml_ml_channels[chanid],
- str=caml_string_of_jsbytes(s),
- slen=caml_ml_string_length(str);
- chan.file.write(chan.offset,str,0,slen);
- chan.offset += slen;
- return 0}
- function js_print_stderr(s)
- {var s=caml_utf16_of_utf8(s),g=globalThis;
- if(g.process && g.process.stdout && g.process.stdout.write)
- g.process.stderr.write(s);
- else
- {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1);
- var v=g.console;
- v && v.error && v.error(s)}}
- function caml_sys_open_internal(idx,output,file,flags)
- {if(caml_global_data.fds === undefined)
- caml_global_data.fds = new Array();
- flags = flags?flags:{};
- var info={};
- info.file = file;
- info.offset = flags.append?file.length():0;
- info.flags = flags;
- info.output = output;
- caml_global_data.fds[idx] = info;
- if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx)
- caml_global_data.fd_last_idx = idx;
- return idx}
- function caml_sys_open(name,flags,_perms)
- {var f={};
- while(flags)
- {switch(flags[1])
- {case 0:f.rdonly = 1;break;
- case 1:f.wronly = 1;break;
- case 2:f.append = 1;break;
- case 3:f.create = 1;break;
- case 4:f.truncate = 1;break;
- case 5:f.excl = 1;break;
- case 6:f.binary = 1;break;
- case 7:f.text = 1;break;
- case 8:f.nonblock = 1;break
- }
- flags = flags[2]}
- if(f.rdonly && f.wronly)
- caml_raise_sys_error
- (caml_jsbytes_of_string(name)
- +
- " : flags Open_rdonly and Open_wronly are not compatible");
- if(f.text && f.binary)
- caml_raise_sys_error
- (caml_jsbytes_of_string(name)
- +
- " : flags Open_text and Open_binary are not compatible");
- var
- root=resolve_fs_device(name),
- file=root.device.open(root.rest,f),
- idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0;
- return caml_sys_open_internal(idx + 1,caml_std_output,file,f)}
- caml_sys_open_internal
- (0,caml_std_output,new MlFakeFile(caml_create_bytes(0)));
- caml_sys_open_internal
- (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0)));
- caml_sys_open_internal
- (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0)));
- function ml_z_gcd(z1,z2)
- {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())}
- function MlStringReader(s,i)
- {this.s = caml_jsbytes_of_string(s);this.i = i}
- MlStringReader.prototype
- =
- {read8u:function(){return this.s.charCodeAt(this.i++)},
- read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24},
- read16u:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 2;
- return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)},
- read16s:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 2;
- return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)},
- read32u:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 4;
- return (s.charCodeAt(i)
- <<
- 24
- |
- s.charCodeAt(i + 1)
- <<
- 16
- |
- s.charCodeAt(i + 2)
- <<
- 8
- |
- s.charCodeAt(i + 3))
- >>>
- 0},
- read32s:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 4;
- return s.charCodeAt(i)
- <<
- 24
- |
- s.charCodeAt(i + 1)
- <<
- 16
- |
- s.charCodeAt(i + 2)
- <<
- 8
- |
- s.charCodeAt(i + 3)},
- readstr:
- function(len)
- {var i=this.i;
- this.i = i + len;
- return caml_string_of_jsbytes(this.s.substring(i,i + len))}};
- function caml_float_of_bytes(a)
- {return caml_int64_float_of_bits(caml_int64_of_bytes(a))}
- function caml_input_value_from_reader(reader,ofs)
- {var
- _magic=reader.read32u(),
- _block_len=reader.read32u(),
- num_objects=reader.read32u(),
- _size_32=reader.read32u(),
- _size_64=reader.read32u(),
- stack=[],
- intern_obj_table=num_objects > 0?[]:null,
- obj_counter=0;
- function intern_rec()
- {var code=reader.read8u();
- if(code >= 0x40)
- if(code >= 0x80)
- {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag];
- if(size == 0)return v;
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- stack.push(v,size);
- return v}
- else
- return code & 0x3F;
- else
- if(code >= 0x20)
- {var len=code & 0x1F,v=reader.readstr(len);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v}
- else
- switch(code)
- {case 0x00:return reader.read8s();
- case 0x01:return reader.read16s();
- case 0x02:return reader.read32s();
- case 0x03:caml_failwith("input_value: integer too large");break;
- case 0x04:
- var offset=reader.read8u();
- return intern_obj_table[obj_counter - offset];
- case 0x05:
- var offset=reader.read16u();
- return intern_obj_table[obj_counter - offset];
- case 0x06:
- var offset=reader.read32u();
- return intern_obj_table[obj_counter - offset];
- case 0x08:
- var
- header=reader.read32u(),
- tag=header & 0xFF,
- size=header >> 10,
- v=[tag];
- if(size == 0)return v;
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- stack.push(v,size);
- return v;
- case 0x13:
- caml_failwith("input_value: data block too large");break;
- case 0x09:
- var len=reader.read8u(),v=reader.readstr(len);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v;
- case 0x0A:
- var len=reader.read32u(),v=reader.readstr(len);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v;
- case 0x0C:
- var t=new Array(8);
- for(var i=0;i < 8;i++)t[7 - i] = reader.read8u();
- var v=caml_float_of_bytes(t);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v;
- case 0x0B:
- var t=new Array(8);
- for(var i=0;i < 8;i++)t[i] = reader.read8u();
- var v=caml_float_of_bytes(t);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v;
- case 0x0E:
- var len=reader.read8u(),v=new Array(len + 1);
- v[0] = 254;
- var t=new Array(8);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- for(var i=1;i <= len;i++)
- {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u();
- v[i] = caml_float_of_bytes(t)}
- return v;
- case 0x0D:
- var len=reader.read8u(),v=new Array(len + 1);
- v[0] = 254;
- var t=new Array(8);
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- for(var i=1;i <= len;i++)
- {for(var j=0;j < 8;j++)t[j] = reader.read8u();
- v[i] = caml_float_of_bytes(t)}
- return v;
- case 0x07:
- var len=reader.read32u(),v=new Array(len + 1);
- v[0] = 254;
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- var t=new Array(8);
- for(var i=1;i <= len;i++)
- {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u();
- v[i] = caml_float_of_bytes(t)}
- return v;
- case 0x0F:
- var len=reader.read32u(),v=new Array(len + 1);
- v[0] = 254;
- var t=new Array(8);
- for(var i=1;i <= len;i++)
- {for(var j=0;j < 8;j++)t[j] = reader.read8u();
- v[i] = caml_float_of_bytes(t)}
- return v;
- case 0x10:
- case 0x11:caml_failwith("input_value: code pointer");break;
- case 0x12:
- case 0x18:
- case 0x19:
- var c,s="";
- while((c = reader.read8u()) != 0)s += String.fromCharCode(c);
- var ops=caml_custom_ops[s],expected_size;
- if(! ops)
- caml_failwith("input_value: unknown custom block identifier");
- switch(code)
- {case 0x12:break;
- case 0x19:
- if(! ops.fixed_length)
- caml_failwith
- ("input_value: expected a fixed-size custom block");
- expected_size = ops.fixed_length;
- break;
- case 0x18:
- expected_size = reader.read32u();
- reader.read32s();
- reader.read32s();
- break
- }
- var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size);
- if(expected_size != undefined)
- if(expected_size != size[0])
- caml_failwith
- ("input_value: incorrect length of serialized custom block");
- if(intern_obj_table)intern_obj_table[obj_counter++] = v;
- return v;
- default:caml_failwith("input_value: ill-formed message")}}
- var res=intern_rec();
- while(stack.length > 0)
- {var size=stack.pop(),v=stack.pop(),d=v.length;
- if(d < size)stack.push(v,size);
- v[d] = intern_rec()}
- if(typeof ofs != "number")ofs[0] = reader.i;
- return res}
- function caml_string_of_bytes(s){return s}
- function caml_input_value_from_bytes(s,ofs)
- {var
- reader=
- new
- MlStringReader
- (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]);
- return caml_input_value_from_reader(reader,ofs)}
- function ml_z_mul(z1,z2)
- {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))}
- function ml_z_hamdist(z1,z2)
- {if(bigInt(z1).isNegative() != bigInt(z2).isNegative())
- caml_raise_constant(caml_named_value("ml_z_overflow"));
- if
- ((z1 != (z1 | 0) || z2 != (z2 | 0))
- &&
- (bigInt(z1).isNegative() || bigInt(z2).isNegative()))
- caml_invalid_argument("Z.hamdist: negative arguments");
- return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))}
- function caml_string_get(s,i)
- {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error();
- return caml_string_unsafe_get(s,i)}
- var
- re_match=
- function()
- {var
- re_word_letters=
- [0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xFF,
- 0x03,
- 0xFE,
- 0xFF,
- 0xFF,
- 0x87,
- 0xFE,
- 0xFF,
- 0xFF,
- 0x07,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xFF,
- 0xFF,
- 0x7F,
- 0xFF,
- 0xFF,
- 0xFF,
- 0x7F,
- 0xFF],
- opcodes=
- {CHAR:0,
- CHARNORM:1,
- STRING:2,
- STRINGNORM:3,
- CHARCLASS:4,
- BOL:5,
- EOL:6,
- WORDBOUNDARY:7,
- BEGGROUP:8,
- ENDGROUP:9,
- REFGROUP:10,
- ACCEPT:11,
- SIMPLEOPT:12,
- SIMPLESTAR:13,
- SIMPLEPLUS:14,
- GOTO:15,
- PUSHBACK:16,
- SETMARK:17,
- CHECKPROGRESS:18};
- function is_word_letter(c)
- {return re_word_letters[c >> 3] >> (c & 7) & 1}
- function in_bitset(s,i)
- {return caml_string_get(s,i >> 3) >> (i & 7) & 1}
- function re_match_impl(re,s,pos,partial)
- {var
- prog=caml_js_from_array(re[1]),
- cpool=caml_js_from_array(re[2]),
- normtable=caml_jsbytes_of_string(re[3]),
- numgroups=re[4] | 0,
- numregisters=re[5] | 0,
- startchars=re[6] | 0,
- s=caml_array_of_string(s),
- pc=0,
- quit=false,
- stack=[],
- groups=new Array(numgroups),
- re_register=new Array(numregisters);
- for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1};
- groups[0].start = pos;
- function backtrack()
- {while(stack.length)
- {var item=stack.pop();
- if(item.undo)
- item.undo.obj[item.undo.prop] = item.undo.value;
- else
- if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}}
- quit = true}
- function push(item){stack.push(item)}
- function accept()
- {groups[0].end = pos;
- var result=new Array(1 + groups.length * 2);
- result[0] = 0;
- for(var i=0;i < groups.length;i++)
- {var g=groups[i];
- if(g.start < 0 || g.end < 0)g.start = g.end = - 1;
- result[2 * i + 1] = g.start;
- result[2 * i + 1 + 1] = g.end}
- return result}
- function prefix_match()
- {if(partial)return accept();else backtrack()}
- while(! quit)
- {var
- op=prog[pc] & 0xff,
- sarg=prog[pc] >> 8,
- uarg=sarg & 0xff,
- c=s[pos],
- group;
- pc++;
- switch(op)
- {case opcodes.CHAR:
- if(pos === s.length){prefix_match();break}
- if(c === uarg)pos++;else backtrack();
- break;
- case opcodes.CHARNORM:
- if(pos === s.length){prefix_match();break}
- if(normtable.charCodeAt(c) === uarg)pos++;else backtrack();
- break;
- case opcodes.STRING:
- for
- (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0;
- i
- <
- arg.length;
- i++)
- {if(pos === s.length){prefix_match();break}
- if(c === arg.charCodeAt(i))
- c = s[++pos];
- else
- {backtrack();break}}
- break;
- case opcodes.STRINGNORM:
- for
- (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0;
- i
- <
- arg.length;
- i++)
- {if(pos === s.length){prefix_match();break}
- if(normtable.charCodeAt(c) === arg.charCodeAt(i))
- c = s[++pos];
- else
- {backtrack();break}}
- break;
- case opcodes.CHARCLASS:
- if(pos === s.length){prefix_match();break}
- if(in_bitset(cpool[uarg],c))pos++;else backtrack();
- break;
- case opcodes.BOL:
- if(pos > 0 && s[pos - 1] != 10)backtrack();break;
- case opcodes.EOL:
- if(pos < s.length && s[pos] != 10)backtrack();break;
- case opcodes.WORDBOUNDARY:
- if(pos == 0)
- {if(pos === s.length){prefix_match();break}
- if(is_word_letter(s[0]))break;
- backtrack()}
- else
- if(pos === s.length)
- {if(is_word_letter(s[pos - 1]))break;backtrack()}
- else
- {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos]))
- break;
- backtrack()}
- break;
- case opcodes.BEGGROUP:
- group = groups[uarg];
- push({undo:{obj:group,prop:"start",value:group.start}});
- group.start = pos;
- break;
- case opcodes.ENDGROUP:
- group = groups[uarg];
- push({undo:{obj:group,prop:"end",value:group.end}});
- group.end = pos;
- break;
- case opcodes.REFGROUP:
- group = groups[uarg];
- if(group.start < 0 || group.end < 0){backtrack();break}
- for(var i=group.start;i < group.end;i++)
- {if(pos === s.length){prefix_match();break}
- if(s[i] != s[pos]){backtrack();break}
- pos++}
- break;
- case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break;
- case opcodes.SIMPLESTAR:
- while(in_bitset(cpool[uarg],c))c = s[++pos];break;
- case opcodes.SIMPLEPLUS:
- if(pos === s.length){prefix_match();break}
- if(in_bitset(cpool[uarg],c))
- do c = s[++pos];while(in_bitset(cpool[uarg],c));
- else
- backtrack();
- break;
- case opcodes.ACCEPT:return accept();
- case opcodes.GOTO:pc = pc + sarg;break;
- case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break;
- case opcodes.SETMARK:
- push
- ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}});
- re_register[uarg] = pos;
- break;
- case opcodes.CHECKPROGRESS:
- if(re_register[uarg] === pos)backtrack();break;
- default:throw new Error("Invalid bytecode")}}
- return 0}
- return re_match_impl}
- ();
- function re_search_backward(re,s,pos)
- {if(pos < 0 || pos > caml_ml_string_length(s))
- caml_invalid_argument("Str.search_backward");
- while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--}
- return [0]}
- function ml_z_logand(z1,z2)
- {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))}
- function caml_js_from_string(s){return caml_jsstring_of_string(s)}
- function caml_ba_sub(ba,ofs,len)
- {var changed_dim,mul=1;
- if(ba.layout == 0)
- {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i];
- changed_dim = 0}
- else
- {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i];
- changed_dim = ba.dims.length - 1;
- ofs = ofs - 1}
- if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim])
- caml_invalid_argument("Bigarray.sub: bad sub-array");
- var new_dims=[];
- for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i];
- new_dims[changed_dim] = len;
- mul *= caml_ba_get_size_per_element(ba.kind);
- var new_data=ba.data.subarray(ofs * mul,(ofs + len) * mul);
- return caml_ba_create_unsafe(ba.kind,ba.layout,new_dims,new_data)}
- function caml_gc_full_major(){return 0}
- function caml_bytes_set32(s,i,i32)
- {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error();
- var
- b4=0xFF & i32 >> 24,
- b3=0xFF & i32 >> 16,
- b2=0xFF & i32 >> 8,
- b1=0xFF & i32;
- caml_bytes_unsafe_set(s,i + 0,b1);
- caml_bytes_unsafe_set(s,i + 1,b2);
- caml_bytes_unsafe_set(s,i + 2,b3);
- caml_bytes_unsafe_set(s,i + 3,b4);
- return 0}
- function caml_gr_sigio_signal(){return 0}
- function caml_ba_uint8_set32(ba,i0,v)
- {var ofs=ba.offset(i0);
- if(ofs + 3 >= ba.data.length)caml_array_bound_error();
- ba.set(ofs + 0,v & 0xff);
- ba.set(ofs + 1,v >>> 8 & 0xff);
- ba.set(ofs + 2,v >>> 16 & 0xff);
- ba.set(ofs + 3,v >>> 24 & 0xff);
- return 0}
- function ml_z_div_rem(z1,z2){return [0,ml_z_div(z1,z2),ml_z_rem(z1,z2)]}
- function caml_sys_const_ostype_unix(){return os_type == "Unix"?1:0}
- function caml_signbit_float(x){if(x == 0)x = 1 / x;return x < 0?1:0}
- function caml_gr_set_line_width(w)
- {var s=caml_gr_state_get();
- s.line_width = w;
- s.context.lineWidth = w;
- return 0}
- function caml_gr_set_font(f)
- {var s=caml_gr_state_get();
- s.font = f;
- s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font);
- return 0}
- function caml_gr_set_color(color)
- {var s=caml_gr_state_get();
- function convert(number)
- {var str="" + number.toString(16);
- while(str.length < 2)str = "0" + str;
- return str}
- var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff;
- s.color = color;
- var c_str="#" + convert(r) + convert(g) + convert(b);
- s.context.fillStyle = c_str;
- s.context.strokeStyle = c_str;
- return 0}
- function caml_gr_moveto(x,y)
- {var s=caml_gr_state_get();s.x = x;s.y = y;return 0}
- function caml_gr_resize_window(w,h)
- {var s=caml_gr_state_get();
- s.width = w;
- s.height = h;
- s.canvas.width = w;
- s.canvas.height = h;
- return 0}
- function caml_gr_state_init()
- {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y);
- caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height);
- caml_gr_set_line_width(caml_gr_state.line_width);
- caml_gr_set_text_size(caml_gr_state.text_size);
- caml_gr_set_font(caml_gr_state.font);
- caml_gr_set_color(caml_gr_state.color);
- caml_gr_set_window_title(caml_gr_state.title);
- caml_gr_state.context.textBaseline = "bottom"}
- function caml_gr_current_x(){var s=caml_gr_state_get();return s.x}
- function caml_ba_kind_of_typed_array(ta)
- {var g=globalThis,kind;
- if(ta instanceof g.Float32Array)
- kind = 0;
- else
- if(ta instanceof g.Float64Array)
- kind = 1;
- else
- if(ta instanceof g.Int8Array)
- kind = 2;
- else
- if(ta instanceof g.Uint8Array)
- kind = 3;
- else
- if(ta instanceof g.Int16Array)
- kind = 4;
- else
- if(ta instanceof g.Uint16Array)
- kind = 5;
- else
- if(ta instanceof g.Int32Array)
- kind = 6;
- else
- if(ta instanceof g.Uint32Array)
- kind = 6;
- else
- caml_invalid_argument
- ("caml_ba_kind_of_typed_array: unsupported kind");
- return kind}
- function caml_ba_from_typed_array(ta)
- {var kind=caml_ba_kind_of_typed_array(ta);
- return caml_ba_create_unsafe(kind,0,[ta.length],ta)}
- function caml_ml_seek_out(chanid,pos)
- {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0}
- function caml_js_typeof(o){return typeof o}
- function caml_restore_raw_backtrace(exn,bt){return 0}
- function caml_gr_lineto(x,y)
- {var s=caml_gr_state_get();
- s.context.beginPath();
- s.context.moveTo(s.x,s.height - s.y);
- s.context.lineTo(x,s.height - y);
- s.context.stroke();
- s.x = x;
- s.y = y;
- return 0}
- function caml_js_wrap_meth_callback_unsafe(f)
- {return function()
- {var len=arguments.length,args=new Array(len + 1);
- args[0] = this;
- for(var i=0;i < len;i++)args[i + 1] = arguments[i];
- return f.apply(null,args)}}
- function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)}
- function caml_is_special_exception(exn)
- {switch(exn[2]){case - 8:case - 11:case - 12:return 1;default:return 0}}
- function caml_format_exception(exn)
- {var r="";
- if(exn[0] == 0)
- {r += exn[1][1];
- if
- (exn.length
- ==
- 3
- &&
- exn[2][0]
- ==
- 0
- &&
- caml_is_special_exception(exn[1]))
- var bucket=exn[2],start=1;
- else
- var start=2,bucket=exn;
- r += "(";
- for(var i=start;i < bucket.length;i++)
- {if(i > start)r += ", ";
- var v=bucket[i];
- if(typeof v == "number")
- r += v.toString();
- else
- if(v instanceof MlBytes)
- r += '"' + v.toString() + '"';
- else
- if(typeof v == "string")
- r += '"' + v.toString() + '"';
- else
- r += "_"}
- r += ")"}
- else
- if(exn[0] == 248)r += exn[1];
- return r}
- function caml_fatal_uncaught_exception(err)
- {if(err instanceof Array && (err[0] == 0 || err[0] == 248))
- {var handler=caml_named_value("Printexc.handle_uncaught_exception");
- if(handler)
- handler(err,false);
- else
- {var
- msg=caml_format_exception(err),
- at_exit=caml_named_value("Pervasives.do_at_exit");
- if(at_exit)at_exit(0);
- globalThis.console.error("Fatal error: exception " + msg + "\n")}}
- else
- throw err}
- var caml_ephe_data_offset=2;
- function caml_ephe_check_data(x)
- {return x[caml_ephe_data_offset] === undefined?0:1}
- function caml_bytes_get16(s,i)
- {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error();
- var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1);
- return b2 << 8 | b1}
- function caml_obj_make_forward(b,v){b[0] = 250;b[1] = v;return 0}
- function caml_js_from_bool(x){return ! ! x}
- function caml_ml_set_channel_name(){return 0}
- function caml_exp2_float(x){return Math.pow(2,x)}
- function caml_gr_close_graph()
- {var s=caml_gr_state_get();
- s.canvas.width = 0;
- s.canvas.height = 0;
- return 0}
- function caml_create_string(len)
- {if(len < 0)caml_invalid_argument("String.create");
- return new MlBytes(len?2:9,"",len)}
- function caml_md5_string(s,ofs,len)
- {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)}
- function caml_md5_chan(chanid,len)
- {var chan=caml_ml_channels[chanid],chan_len=chan.file.length();
- if(len < 0)len = chan_len - chan.offset;
- if(chan.offset + len > chan_len)caml_raise_end_of_file();
- var buf=caml_create_bytes(len);
- chan.file.read(chan.offset,buf,0,len);
- return caml_md5_string(caml_string_of_bytes(buf),0,len)}
- function caml_obj_dup(x)
- {var l=x.length,a=new Array(l);
- for(var i=0;i < l;i++)a[i] = x[i];
- return a}
- function caml_weak_get_copy(x,i)
- {if(i < 0 || caml_ephe_key_offset + i >= x.length)
- caml_invalid_argument("Weak.get_copy");
- var y=caml_weak_get(x,i);
- if(y === 0)return y;
- var z=y[1];
- if(z instanceof Array)return [0,caml_obj_dup(z)];
- return y}
- function caml_atanh_float(x){return Math.atanh(x)}
- function caml_ml_output_bytes(chanid,buffer,offset,len)
- {var chan=caml_ml_channels[chanid];
- if(! chan.opened)
- caml_raise_sys_error("Cannot output to a closed channel");
- var bytes;
- if(offset == 0 && caml_ml_bytes_length(buffer) == len)
- bytes = buffer;
- else
- {bytes = caml_create_bytes(len);
- caml_blit_bytes(buffer,offset,bytes,0,len)}
- var
- string=caml_string_of_bytes(bytes),
- jsstring=caml_jsbytes_of_string(string),
- id=jsstring.lastIndexOf("\n");
- if(id < 0)
- chan.buffer += jsstring;
- else
- {chan.buffer += jsstring.substr(0,id + 1);
- caml_ml_flush(chanid);
- chan.buffer += jsstring.substr(id + 1)}
- return 0}
- function caml_ml_output(chanid,buffer,offset,len)
- {return caml_ml_output_bytes
- (chanid,caml_bytes_of_string(buffer),offset,len)}
- function caml_ephe_get_data(x)
- {return x[caml_ephe_data_offset] === undefined
- ?0
- :[0,x[caml_ephe_data_offset]]}
- function caml_xmlhttprequest_create(unit)
- {var g=globalThis;
- if(typeof g.XMLHttpRequest !== "undefined")
- try {return new (g.XMLHttpRequest)()}catch(e){}
- if(typeof g.activeXObject !== "undefined")
- {try {return new (g.activeXObject)("Msxml2.XMLHTTP")}catch(e){}
- try {return new (g.activeXObject)("Msxml3.XMLHTTP")}catch(e){}
- try {return new (g.activeXObject)("Microsoft.XMLHTTP")}catch(e){}}
- caml_failwith("Cannot create a XMLHttpRequest")}
- function caml_trampoline_return(f,args)
- {return {joo_tramp:f,joo_args:args}}
- function caml_ml_is_buffered(c){return 1}
- function caml_array_append(a1,a2)
- {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l);
- a[0] = 0;
- var i=1,j=1;
- for(;i < l1;i++)a[i] = a1[i];
- for(;i < l;i++,j++)a[i] = a2[j];
- return a}
- function caml_ml_set_channel_refill(chanid,f)
- {caml_ml_channels[chanid].refill = f;return 0}
- function ml_z_nextprime(z1)
- {z1 = bigInt(z1);
- var one=bigInt(1),two=bigInt(2);
- if(z1.lt(one) || z1.equals(one))return 2;
- if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one);
- while(true)
- if(z1.isProbablePrime(25))
- return ml_z_normalize(z1);
- else
- z1 = z1.add(two)}
- function caml_js_expr(s)
- {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n");
- return eval(caml_jsstring_of_string(s))}
- function caml_int64_mul(x,y){return x.mul(y)}
- function caml_ml_runtime_warnings_enabled(_unit)
- {return caml_runtime_warnings}
- function ml_z_sub(z1,z2)
- {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))}
- function ml_z_fdiv(z1,z2)
- {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2);
- if(z1_pos * z2_pos < 0)
- if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0)))
- return ml_z_sub(ml_z_div(z1,z2),bigInt(1));
- return ml_z_div(z1,z2)}
- function ml_z_to_bits(z1)
- {z1 = bigInt(z1).abs();
- var res="";
- while(! z1.equals(bigInt(0)))
- {res += String.fromCharCode(z1.mod(bigInt(256)));
- z1 = z1.divide(bigInt(256))}
- while(res.length % 4 != 0)res += String.fromCharCode(0);
- return caml_string_of_jsbytes(res)}
- function caml_output_value_to_bytes(v,flags)
- {return caml_bytes_of_array(caml_output_val(v,flags))}
- function caml_eventlog_resume(unit){return 0}
- function caml_hash_univ_param(count,limit,obj)
- {var hash_accu=0;
- function hash_aux(obj)
- {limit--;
- if(count < 0 || limit < 0)return;
- if(obj instanceof Array && obj[0] === (obj[0] | 0))
- switch(obj[0])
- {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break;
- case 250:limit++;hash_aux(obj);break;
- default:
- count--;
- hash_accu = hash_accu * 19 + obj[0] | 0;
- for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])}
- else
- if(caml_is_ml_bytes(obj))
- {count--;
- var content=caml_ml_bytes_content(obj);
- if(typeof content === "string")
- for(var b=content,l=b.length,i=0;i < l;i++)
- hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0;
- else
- for(var a=content,l=a.length,i=0;i < l;i++)
- hash_accu = hash_accu * 19 + a[i] | 0}
- else
- if(caml_is_ml_string(obj))
- {var jsbytes=caml_jsbytes_of_string(obj);
- for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++)
- hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0}
- else
- if(typeof obj === "string")
- for(var b=obj,l=obj.length,i=0;i < l;i++)
- hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0;
- else
- if(obj === (obj | 0))
- {count--;hash_accu = hash_accu * 65599 + obj | 0}
- else
- if(obj === + obj)
- {count--;
- var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj));
- for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0}
- else
- if(obj && obj.caml_custom)
- if
- (caml_custom_ops[obj.caml_custom]
- &&
- caml_custom_ops[obj.caml_custom].hash)
- {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0;
- hash_accu = hash_accu * 65599 + h | 0}}
- hash_aux(obj);
- return hash_accu & 0x3FFFFFFF}
- function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)}
- function ml_z_divexact(z1,z2){return ml_z_div(z1,z2)}
- function caml_output_value_to_buffer(s,ofs,len,v,flags)
- {var t=caml_output_val(v,flags);
- if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow");
- caml_blit_bytes(t,0,s,ofs,t.length);
- return 0}
- function re_replacement_text(repl,groups,orig)
- {var
- repl=caml_jsbytes_of_string(repl),
- len=repl.length,
- orig=caml_jsbytes_of_string(orig),
- res="",
- n=0,
- cur,
- start,
- end,
- c;
- while(n < len)
- {cur = repl.charAt(n++);
- if(cur != "\\")
- res += cur;
- else
- {if(n == len)
- caml_failwith("Str.replace: illegal backslash sequence");
- cur = repl.charAt(n++);
- switch(cur)
- {case "\\":res += cur;break;
- case "0":
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- case "6":
- case "7":
- case "8":
- case "9":
- c = + cur;
- if(c * 2 >= groups.length - 1)
- caml_failwith("Str.replace: reference to unmatched group");
- start = caml_array_get(groups,c * 2);
- end = caml_array_get(groups,c * 2 + 1);
- if(start == - 1)
- caml_failwith("Str.replace: reference to unmatched group");
- res += orig.slice(start,end);
- break;
- default:res += "\\" + cur}}}
- return caml_string_of_jsbytes(res)}
- function caml_pure_js_expr(s)
- {js_print_stderr("caml_pure_js_expr: fallback to runtime evaluation\n");
- return eval(caml_jsstring_of_string(s))}
- function blit_nat(nat1,ofs1,nat2,ofs2,len)
- {for(var i=0;i < len;i++)nat1.data[ofs1 + i] = nat2.data[ofs2 + i];
- return 0}
- function caml_int64_ult(x,y){return x.ucompare(y) < 0}
- function caml_int64_xor(x,y){return x.xor(y)}
- function caml_bigstring_blit_ba_to_bytes(ba1,pos1,bytes2,pos2,len)
- {if(12 != ba1.kind)
- caml_invalid_argument
- ("caml_bigstring_blit_string_to_ba: kind mismatch");
- if(len == 0)return 0;
- var ofs1=ba1.offset(pos1);
- if(ofs1 + len > ba1.data.length)caml_array_bound_error();
- if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error();
- var slice=ba1.data.slice(ofs1,ofs1 + len);
- caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len);
- return 0}
- function caml_register_named_value(nm,v)
- {caml_named_values[caml_jsbytes_of_string(nm)] = v;return 0}
- function jsoo_create_file_extern(name,content)
- {if(globalThis.jsoo_create_file)
- globalThis.jsoo_create_file(name,content);
- else
- {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = [];
- globalThis.caml_fs_tmp.push({name:name,content:content})}
- return 0}
- function caml_to_js_string(s){return caml_jsstring_of_string(s)}
- function caml_parse_sign_and_base(s)
- {var i=0,len=caml_ml_string_length(s),base=10,sign=1;
- if(len > 0)
- switch(caml_string_unsafe_get(s,i))
- {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break}
- if(i + 1 < len && caml_string_unsafe_get(s,i) == 48)
- switch(caml_string_unsafe_get(s,i + 1))
- {case 120:
- case 88:base = 16;i += 2;break;
- case 111:
- case 79:base = 8;i += 2;break;
- case 98:
- case 66:base = 2;i += 2;break;
- case 117:
- case 85:i += 2;break
- }
- return [i,sign,base]}
- function caml_parse_digit(c)
- {if(c >= 48 && c <= 57)return c - 48;
- if(c >= 65 && c <= 90)return c - 55;
- if(c >= 97 && c <= 122)return c - 87;
- return - 1}
- function caml_int64_of_string(s)
- {var
- r=caml_parse_sign_and_base(s),
- i=r[0],
- sign=r[1],
- base=r[2],
- base64=caml_int64_of_int32(base),
- threshold=
- new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient,
- c=caml_string_unsafe_get(s,i),
- d=caml_parse_digit(c);
- if(d < 0 || d >= base)caml_failwith("int_of_string");
- var res=caml_int64_of_int32(d);
- for(;;)
- {i++;
- c = caml_string_unsafe_get(s,i);
- if(c == 95)continue;
- d = caml_parse_digit(c);
- if(d < 0 || d >= base)break;
- if(caml_int64_ult(threshold,res))caml_failwith("int_of_string");
- d = caml_int64_of_int32(d);
- res = caml_int64_add(caml_int64_mul(base64,res),d);
- if(caml_int64_ult(res,d))caml_failwith("int_of_string")}
- if(i != caml_ml_string_length(s))caml_failwith("int_of_string");
- if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res))
- caml_failwith("int_of_string");
- if(sign < 0)res = caml_int64_neg(res);
- return res}
- function re_search_forward(re,s,pos)
- {if(pos < 0 || pos > caml_ml_string_length(s))
- caml_invalid_argument("Str.search_forward");
- while(pos <= caml_ml_string_length(s))
- {var res=re_match(re,s,pos,0);if(res)return res;pos++}
- return [0]}
- var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba;
- function caml_make_vect(len,init)
- {if(len < 0)caml_array_bound_error();
- var len=len + 1 | 0,b=new Array(len);
- b[0] = 0;
- for(var i=1;i < len;i++)b[i] = init;
- return b}
- function caml_ml_seek_in(chanid,pos)
- {var chan=caml_ml_channels[chanid];
- if(chan.refill != null)caml_raise_sys_error("Illegal seek");
- chan.offset = pos;
- return 0}
- function caml_sys_read_directory(name)
- {var
- root=resolve_fs_device(name),
- a=root.device.readdir(root.rest),
- l=new Array(a.length + 1);
- l[0] = 0;
- for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]);
- return l}
- function caml_ml_output_char(chanid,c)
- {var s=caml_string_of_jsbytes(String.fromCharCode(c));
- caml_ml_output(chanid,s,0,1);
- return 0}
- function caml_sys_const_ostype_win32(){return os_type == "Win32"?1:0}
- function caml_obj_is_block(x){return + (x instanceof Array)}
- function caml_ml_input_char(chanid)
- {var chan=caml_ml_channels[chanid];
- caml_ml_may_refill_input(chanid);
- if(chan.offset >= chan.file.length())caml_raise_end_of_file();
- var res=chan.file.read_one(chan.offset);
- chan.offset++;
- return res}
- function caml_obj_set_raw_field(o,i,v){return o[i + 1] = v}
- function caml_js_var(x)
- {var x=caml_jsstring_of_string(x);
- if(! x.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*(\.[a-zA-Z_$][a-zA-Z_$0-9]*)*$/))
- js_print_stderr
- ('caml_js_var: "'
- +
- x
- +
- '" is not a valid JavaScript variable. continuing ..');
- return eval(x)}
- function caml_trunc_float(x){return Math.trunc(x)}
- function caml_zarith_marshal(writer,v,sz)
- {v = bigInt(v);
- var bits=v.toArray(Math.pow(2,32));
- writer.write(8,bits.isNegative?1:0);
- var block=bits.value.length,len=block * 4;
- writer.write(32,len);
- for(var i=block - 1;i >= 0;i--)
- {writer.write(8,bits.value[i] >>> 0 & 0xff);
- writer.write(8,bits.value[i] >>> 8 & 0xff);
- writer.write(8,bits.value[i] >>> 16 & 0xff);
- writer.write(8,bits.value[i] >>> 24 & 0xff)}
- sz[0] = 4 * (1 + ((len + 3) / 4 | 0));
- sz[1] = 8 * (1 + ((len + 7) / 8 | 0))}
- function caml_ephe_blit_data(src,dst)
- {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0}
- function caml_is_printable(c){return + (c > 31 && c < 127)}
- function caml_equal(x,y){return + (caml_compare_val(x,y,false) == 0)}
- function re_partial_match(re,s,pos)
- {if(pos < 0 || pos > caml_ml_string_length(s))
- caml_invalid_argument("Str.partial_match");
- var res=re_match(re,s,pos,1);
- return res?res:[0]}
- function caml_sys_random_seed()
- {if(globalThis.crypto)
- if(typeof globalThis.crypto.getRandomValues === "function")
- {var a=new (globalThis.Uint32Array)(1);
- globalThis.crypto.getRandomValues(a);
- return [0,a[0]]}
- else
- if(globalThis.crypto.randomBytes === "function")
- {var
- buff=globalThis.crypto.randomBytes(4),
- a=new (globalThis.Uint32Array)(buff);
- return [0,a[0]]}
- var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random();
- return [0,x]}
- function caml_final_register_called_without_value(){return 0}
- function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))}
- function win_handle_fd(x){return x}
- function caml_ba_uint8_set16(ba,i0,v)
- {var ofs=ba.offset(i0);
- if(ofs + 1 >= ba.data.length)caml_array_bound_error();
- ba.set(ofs + 0,v & 0xff);
- ba.set(ofs + 1,v >>> 8 & 0xff);
- return 0}
- var win_filedescr_of_channel=caml_channel_descriptor;
- function caml_js_delete(o,f){delete o[f];return 0}
- function caml_int_of_string(s)
- {var
- r=caml_parse_sign_and_base(s),
- i=r[0],
- sign=r[1],
- base=r[2],
- len=caml_ml_string_length(s),
- threshold=- 1 >>> 0,
- c=i < len?caml_string_unsafe_get(s,i):0,
- d=caml_parse_digit(c);
- if(d < 0 || d >= base)caml_failwith("int_of_string");
- var res=d;
- for(i++;i < len;i++)
- {c = caml_string_unsafe_get(s,i);
- if(c == 95)continue;
- d = caml_parse_digit(c);
- if(d < 0 || d >= base)break;
- res = base * res + d;
- if(res > threshold)caml_failwith("int_of_string")}
- if(i != len)caml_failwith("int_of_string");
- res = sign * res;
- if(base == 10 && (res | 0) != res)caml_failwith("int_of_string");
- return res | 0}
- function caml_list_mount_point()
- {var prev=0;
- for(var i=0;i < jsoo_mount_point.length;i++)
- {var old=prev;
- prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]}
- return prev}
- var
- caml_marshal_constants=
- {PREFIX_SMALL_BLOCK:0x80,
- PREFIX_SMALL_INT:0x40,
- PREFIX_SMALL_STRING:0x20,
- CODE_INT8:0x00,
- CODE_INT16:0x01,
- CODE_INT32:0x02,
- CODE_INT64:0x03,
- CODE_SHARED8:0x04,
- CODE_SHARED16:0x05,
- CODE_SHARED32:0x06,
- CODE_BLOCK32:0x08,
- CODE_BLOCK64:0x13,
- CODE_STRING8:0x09,
- CODE_STRING32:0x0A,
- CODE_DOUBLE_BIG:0x0B,
- CODE_DOUBLE_LITTLE:0x0C,
- CODE_DOUBLE_ARRAY8_BIG:0x0D,
- CODE_DOUBLE_ARRAY8_LITTLE:0x0E,
- CODE_DOUBLE_ARRAY32_BIG:0x0F,
- CODE_DOUBLE_ARRAY32_LITTLE:0x07,
- CODE_CODEPOINTER:0x10,
- CODE_INFIXPOINTER:0x11,
- CODE_CUSTOM:0x12,
- CODE_CUSTOM_LEN:0x18,
- CODE_CUSTOM_FIXED:0x19};
- function caml_obj_raw_field(o,i){return o[i + 1]}
- function caml_js_equals(x,y){return + (x == y)}
- function bigstring_to_typed_array(bs){return bs.data}
- function ml_z_fits_nativeint(z1){return ml_z_fits_int(z1)}
- function caml_gr_arc_aux(ctx,cx,cy,ry,rx,a1,a2)
- {while(a1 > a2)a2 += 360;
- a1 /= 180;
- a2 /= 180;
- var
- rot=0,
- xPos,
- yPos,
- xPos_prev,
- yPos_prev,
- space=2,
- num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0,
- delta=(a2 - a1) * Math.PI / num,
- i=a1 * Math.PI;
- for(var j=0;j <= num;j++)
- {xPos
- =
- cx
- -
- rx
- *
- Math.sin(i)
- *
- Math.sin(rot * Math.PI)
- +
- ry
- *
- Math.cos(i)
- *
- Math.cos(rot * Math.PI);
- xPos = xPos.toFixed(2);
- yPos
- =
- cy
- +
- ry
- *
- Math.cos(i)
- *
- Math.sin(rot * Math.PI)
- +
- rx
- *
- Math.sin(i)
- *
- Math.cos(rot * Math.PI);
- yPos = yPos.toFixed(2);
- if(j == 0)
- ctx.moveTo(xPos,yPos);
- else
- if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos);
- xPos_prev = xPos;
- yPos_prev = yPos;
- i -= delta}
- return 0}
- function caml_gr_fill_arc(x,y,rx,ry,a1,a2)
- {var s=caml_gr_state_get();
- s.context.beginPath();
- caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2);
- s.context.fill();
- return 0}
- function caml_ba_slice(ba,vind)
- {vind = caml_js_from_array(vind);
- var num_inds=vind.length,index=[],sub_dims=[],ofs;
- if(num_inds > ba.dims.length)
- caml_invalid_argument("Bigarray.slice: too many indices");
- if(ba.layout == 0)
- {for(var i=0;i < num_inds;i++)index[i] = vind[i];
- for(;i < ba.dims.length;i++)index[i] = 0;
- sub_dims = ba.dims.slice(num_inds)}
- else
- {for(var i=0;i < num_inds;i++)
- index[ba.dims.length - num_inds + i] = vind[i];
- for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1;
- sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)}
- ofs = ba.offset(index);
- var
- size=caml_ba_get_size(sub_dims),
- size_per_element=caml_ba_get_size_per_element(ba.kind),
- new_data=
- ba.data.subarray
- (ofs * size_per_element,(ofs + size) * size_per_element);
- return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)}
- function ml_z_of_nativeint(z){return ml_z_of_int(z)}
- function caml_marshal_data_size(s,ofs)
- {function get32(s,i)
- {return caml_bytes_unsafe_get(s,i)
- <<
- 24
- |
- caml_bytes_unsafe_get(s,i + 1)
- <<
- 16
- |
- caml_bytes_unsafe_get(s,i + 2)
- <<
- 8
- |
- caml_bytes_unsafe_get(s,i + 3)}
- if(get32(s,ofs) != (0x8495A6BE | 0))
- caml_failwith("Marshal.data_size: bad object");
- return get32(s,ofs + 4)}
- function caml_input_value(chanid)
- {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8);
- chan.file.read(chan.offset,buf,0,8);
- var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len);
- chan.file.read(chan.offset,buf,0,len);
- var offset=[0],res=caml_input_value_from_bytes(buf,offset);
- chan.offset = chan.offset + offset[0];
- return res}
- function caml_ba_kind(ba){return ba.kind}
- function caml_js_fun_call(f,a)
- {switch(a.length)
- {case 1:return f();
- case 2:return f(a[1]);
- case 3:return f(a[1],a[2]);
- case 4:return f(a[1],a[2],a[3]);
- case 5:return f(a[1],a[2],a[3],a[4]);
- case 6:return f(a[1],a[2],a[3],a[4],a[5]);
- case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]);
- case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7])
- }
- return f.apply(null,caml_js_from_array(a))}
- function caml_gc_major_slice(work){return 0}
- function ml_z_invert(a,n)
- {a = bigInt(a);
- n = bigInt(n);
- var zero=bigInt(0),one=bigInt(1);
- if(n.abs().equals(one))return 0;
- if(n.equals(zero) && a.abs().equals(one))return a;
- if(n.equals(zero) || a.equals(zero))caml_raise_zero_divide();
- var
- x=ml_z_gcdext_intern(a,n),
- r=bigInt(x[2]),
- tmp=bigInt(a).multiply(r).mod(n);
- if(tmp.lt(zero))tmp = tmp.add(n.abs());
- if(r.lt(zero))r = r.add(n.abs());
- if(tmp.equals(one))return ml_z_normalize(r);
- caml_raise_zero_divide()}
- function ml_z_powm(z1,z2,z3)
- {var zero=bigInt(0),one=bigInt(1);
- z1 = bigInt(z1);
- z2 = bigInt(z2);
- z3 = bigInt(z3);
- if(z3.equals(zero))caml_raise_zero_divide();
- if(z3.abs().equals(one))return 0;
- if(z2.equals(zero))return 1;
- if(z2.lt(0))
- {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3);
- if(r.lt(zero))r = r.add(z3.abs());
- return ml_z_normalize(r)}
- else
- {var r=bigInt(z1).modPow(z2,z3);
- if(r.lt(zero))r = r.add(z3.abs());
- return ml_z_normalize(r)}}
- function ml_z_powm_sec(z1,z2,z3)
- {z3 = bigInt(z3).abs();
- var one=bigInt(1);
- if(bigInt(z2).lt(one))
- caml_invalid_argument("Z.powm_sec: exponent must be positive");
- if(! bigInt(z3).and(one).equals(one))
- caml_invalid_argument("Z.powm_sec: modulus must be odd");
- return ml_z_powm(z1,z2,z3)}
- function caml_js_pure_expr(f){return f()}
- function compare_digits_nat(nat1,ofs1,nat2,ofs2)
- {if(nat1.data[ofs1] > nat2.data[ofs2])return 1;
- if(nat1.data[ofs1] < nat2.data[ofs2])return - 1;
- return 0}
- function caml_ml_input(chanid,s,i,l)
- {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset;
- if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan);
- if(l2 < l)l = l2;
- chan.file.read(chan.offset,s,i,l);
- chan.offset += l;
- return l}
- function caml_gr_wait_event(_evl)
- {caml_failwith
- ("caml_gr_wait_event not Implemented: use Graphics_js instead")}
- function caml_gr_sigio_handler(){return 0}
- function caml_hash_mix_bigstring(h,bs)
- {return caml_hash_mix_bytes_arr(h,bs.data)}
- function caml_record_backtrace(){return 0}
- function unix_gmtime(t)
- {var
- d=new Date(t * 1000),
- d_num=d.getTime(),
- januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(),
- doy=Math.floor((d_num - januaryfirst) / 86400000);
- return [0,
- d.getUTCSeconds(),
- d.getUTCMinutes(),
- d.getUTCHours(),
- d.getUTCDate(),
- d.getUTCMonth(),
- d.getUTCFullYear() - 1900,
- d.getUTCDay(),
- doy,
- false | 0]}
- function caml_sys_const_backend_type()
- {return [0,caml_string_of_jsbytes("js_of_ocaml")]}
- function caml_sys_get_config()
- {return [0,caml_string_of_jsbytes(os_type),32,0]}
- function unix_time(){return Math.floor(unix_gettimeofday())}
- function caml_ml_out_channels_list()
- {var l=0;
- for(var c=0;c < caml_ml_channels.length;c++)
- if
- (caml_ml_channels[c]
- &&
- caml_ml_channels[c].opened
- &&
- caml_ml_channels[c].out)
- l = [0,caml_ml_channels[c].fd,l];
- return l}
- function caml_asinh_float(x){return Math.asinh(x)}
- function ml_z_hash(z1)
- {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0;
- for(var i=0;i < a.value.length;i++)
- acc = caml_hash_mix_int(acc,a.value[i]);
- if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0);
- if(a.isNegative)acc = acc + 1;
- return acc | 0}
- function bigstring_of_array_buffer(ab)
- {var ta=new (globalThis.Uint8Array)(ab);
- return caml_ba_create_unsafe(12,0,[ta.length],ta)}
- function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y}
- function caml_ba_init(){return 0}
- function re_string_match(re,s,pos)
- {if(pos < 0 || pos > caml_ml_string_length(s))
- caml_invalid_argument("Str.string_match");
- var res=re_match(re,s,pos,0);
- return res?res:[0]}
- function BigStringReader(bs,i){this.s = bs;this.i = i}
- BigStringReader.prototype
- =
- {read8u:function(){return caml_ba_get_1(this.s,this.i++)},
- read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24},
- read16u:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 2;
- return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)},
- read16s:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 2;
- return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)},
- read32u:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 4;
- return (caml_ba_get_1(s,i)
- <<
- 24
- |
- caml_ba_get_1(s,i + 1)
- <<
- 16
- |
- caml_ba_get_1(s,i + 2)
- <<
- 8
- |
- caml_ba_get_1(s,i + 3))
- >>>
- 0},
- read32s:
- function()
- {var s=this.s,i=this.i;
- this.i = i + 4;
- return caml_ba_get_1(s,i)
- <<
- 24
- |
- caml_ba_get_1(s,i + 1)
- <<
- 16
- |
- caml_ba_get_1(s,i + 2)
- <<
- 8
- |
- caml_ba_get_1(s,i + 3)},
- readstr:
- function(len)
- {var i=this.i,arr=new Array(len);
- for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j);
- this.i = i + len;
- return caml_string_of_array(arr)}};
- function caml_gr_dump_image(im)
- {var data=[0];
- for(var i=0;i < im.height;i++)
- {data[i + 1] = [0];
- for(var j=0;j < im.width;j++)
- {var
- o=i * (im.width * 4) + j * 4,
- r=im.data[o + 0],
- g=im.data[o + 1],
- b=im.data[o + 2];
- data[i + 1][j + 1] = (r << 16) + (g << 8) + b}}
- return data}
- function caml_ba_get_generic(ba,i)
- {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)}
- function caml_get_exception_backtrace(){return 0}
- function caml_format_float(fmt,x)
- {function toFixed(x,dp)
- {if(Math.abs(x) < 1.0)
- return x.toFixed(dp);
- else
- {var e=parseInt(x.toString().split("+")[1]);
- if(e > 20)
- {e -= 20;
- x /= Math.pow(10,e);
- x += new Array(e + 1).join("0");
- if(dp > 0)x = x + "." + new Array(dp + 1).join("0");
- return x}
- else
- return x.toFixed(dp)}}
- var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec;
- if(x < 0 || x == 0 && 1 / x == - Infinity){f.sign = - 1;x = - x}
- if(isNaN(x))
- {s = "nan";f.filler = " "}
- else
- if(! isFinite(x))
- {s = "inf";f.filler = " "}
- else
- switch(f.conv)
- {case "e":
- var s=x.toExponential(prec),i=s.length;
- if(s.charAt(i - 3) == "e")
- s = s.slice(0,i - 1) + "0" + s.slice(i - 1);
- break;
- case "f":s = toFixed(x,prec);break;
- case "g":
- prec = prec?prec:1;
- s = x.toExponential(prec - 1);
- var j=s.indexOf("e"),exp=+ s.slice(j + 1);
- if(exp < - 4 || x >= 1e21 || x.toFixed(0).length > prec)
- {var i=j - 1;
- while(s.charAt(i) == "0")i--;
- if(s.charAt(i) == ".")i--;
- s = s.slice(0,i + 1) + s.slice(j);
- i = s.length;
- if(s.charAt(i - 3) == "e")
- s = s.slice(0,i - 1) + "0" + s.slice(i - 1);
- break}
- else
- {var p=prec;
- if(exp < 0)
- {p -= exp + 1;s = x.toFixed(p)}
- else
- while(s = x.toFixed(p),s.length > prec + 1)p--;
- if(p)
- {var i=s.length - 1;
- while(s.charAt(i) == "0")i--;
- if(s.charAt(i) == ".")i--;
- s = s.slice(0,i + 1)}}
- break
- }
- return caml_finish_formatting(f,s)}
- function caml_mount_autoload(name,f)
- {var path=caml_make_path(name),name=caml_trailing_slash(path.join("/"));
- jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)});
- return 0}
- function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))}
- function ml_z_fits_int64(z1)
- {z1 = bigInt(z1);
- return z1.compare(bigInt("9223372036854775807"))
- <=
- 0
- &&
- z1.compare(bigInt("-9223372036854775808"))
- >=
- 0
- ?1
- :0}
- function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len)
- {if(12 != ba1.kind)
- caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch");
- if(12 != ba2.kind)
- caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch");
- if(len == 0)return 0;
- var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2);
- if(ofs1 + len > ba1.data.length)caml_array_bound_error();
- if(ofs2 + len > ba2.data.length)caml_array_bound_error();
- var slice=ba1.data.subarray(ofs1,ofs1 + len);
- ba2.data.set(slice,pos2);
- return 0}
- var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba;
- function ml_z_sqrt_rem(z)
- {z = bigInt(z);
- var zero=bigInt(0);
- if(z.lt(zero))
- caml_invalid_argument("Z.sqrt_rem: square root of a negative number");
- var
- root=bigInt(ml_z_root(z,2)),
- mul=root.multiply(root),
- diff=z.subtract(mul);
- return [0,ml_z_normalize(root),ml_z_normalize(diff)]}
- function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)}
- function caml_string_greaterthan(s1,s2)
- {return caml_string_lessthan(s2,s1)}
- function caml_div(x,y)
- {if(y == 0)caml_raise_zero_divide();return x / y | 0}
- function caml_ephe_get_data_copy(x)
- {return x[caml_ephe_data_offset] === undefined
- ?0
- :[0,caml_obj_dup(x[caml_ephe_data_offset])]}
- function caml_memprof_start(rate,stack_size,tracker){return 0}
- function ml_z_perfect_square(z)
- {z = bigInt(z);
- if(z.lt(bigInt(0)))return 0;
- var root=bigInt(ml_z_root(z,2));
- return root.multiply(root).eq(z)?1:0}
- function caml_sys_get_argv(a){return [0,caml_argv[1],caml_argv]}
- function caml_js_to_bool(x){return + x}
- function caml_gr_create_image(x,y)
- {var s=caml_gr_state_get();return s.context.createImageData(x,y)}
- var caml_ephe_get_key_copy=caml_weak_get_copy;
- function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)}
- function caml_raw_backtrace_next_slot(){return 0}
- function ml_z_to_nativeint(z1){return ml_z_to_int(z1)}
- function caml_register_global(n,v,name_opt)
- {if(name_opt && globalThis.toplevelReloc)
- n = globalThis.toplevelReloc(name_opt);
- caml_global_data[n + 1] = v;
- if(name_opt)caml_global_data[name_opt] = v}
- function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3)
- {var carry=0;
- for(var i=0;i < len3;i++)
- carry
- +=
- mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i);
- return carry}
- function square_nat(nat1,ofs1,len1,nat2,ofs2,len2)
- {var carry=0;
- carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0);
- carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2);
- return carry}
- function caml_js_from_float(x){return x}
- function caml_floatarray_create(len)
- {if(len < 0)caml_array_bound_error();
- var len=len + 1 | 0,b=new Array(len);
- b[0] = 254;
- for(var i=1;i < len;i++)b[i] = 0;
- return b}
- function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
- function caml_get_major_credit(n){return 0}
- function caml_sys_modify_argv(arg){caml_argv = arg;return 0}
- var caml_method_cache=[];
- function caml_get_public_method(obj,tag,cacheid)
- {var meths=obj[1],ofs=caml_method_cache[cacheid];
- if(ofs === undefined)
- for(var i=caml_method_cache.length;i < cacheid;i++)
- caml_method_cache[i] = 0;
- else
- if(meths[ofs] === tag)return meths[ofs - 1];
- var li=3,hi=meths[1] * 2 + 1,mi;
- while(li < hi)
- {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi}
- caml_method_cache[cacheid] = li + 1;
- return tag == meths[li + 1]?meths[li]:0}
- function caml_js_get_console()
- {var
- c=globalThis.console?globalThis.console:{},
- m=
- ["log",
- "debug",
- "info",
- "warn",
- "error",
- "assert",
- "dir",
- "dirxml",
- "trace",
- "group",
- "groupCollapsed",
- "groupEnd",
- "time",
- "timeEnd"];
- function f(){}
- for(var i=0;i < m.length;i++)if(! c[m[i]])c[m[i]] = f;
- return c}
- function caml_sys_unsafe_getenv(name){return caml_sys_getenv(name)}
- function caml_ml_open_descriptor_in(fd)
- {var data=caml_global_data.fds[fd];
- if(data.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly");
- var refill=null;
- if(fd == 0 && fs_node_supported())
- {var fs=require("fs");
- refill
- =
- function(){return caml_string_of_jsstring(fs.readFileSync(0,"utf8"))}}
- var
- channel=
- {file:data.file,
- offset:data.offset,
- fd:fd,
- opened:true,
- out:false,
- refill:refill};
- caml_ml_channels[channel.fd] = channel;
- return channel.fd}
- function bigstring_of_typed_array(ba)
- {var
- ta=
- new
- (globalThis.Uint8Array)
- (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT);
- return caml_ba_create_unsafe(12,0,[ta.length],ta)}
- function caml_round_float(x){return Math.round(x)}
- function ml_z_of_bits(z1)
- {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one;
- for(var i=0;i < caml_ml_string_length(z1);i++)
- {var d=caml_string_unsafe_get(z1,i);
- r = bigInt(base).multiply(d).add(r);
- base = bigInt(base).multiply(base1)}
- return ml_z_normalize(r)}
- function unix_stat(name)
- {var root=resolve_fs_device(name);
- if(! root.device.stat)caml_failwith("unix_stat: not implemented");
- return root.device.stat(root.rest,true)}
- var unix_stat_64=unix_stat;
- function caml_ojs_new_arr(c,a)
- {switch(a.length)
- {case 0:return new c();
- case 1:return new c(a[0]);
- case 2:return new c(a[0],a[1]);
- case 3:return new c(a[0],a[1],a[2]);
- case 4:return new c(a[0],a[1],a[2],a[3]);
- case 5:return new c(a[0],a[1],a[2],a[3],a[4]);
- case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]);
- case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6])
- }
- function F(){return c.apply(this,a)}
- F.prototype = c.prototype;
- return new F()}
- function complement_nat(nat,ofs,len)
- {for(var i=0;i < len;i++)
- nat.data[ofs + i] = (- 1 >>> 0) - (nat.data[ofs + i] >>> 0)}
- function ml_z_logxor(z1,z2)
- {return ml_z_normalize(bigInt(z1).xor(bigInt(z2)))}
- var caml_js_regexps={amp:/&/g,lt:/ 1023)
- {exp -= 1023;
- x *= Math.pow(2,1023);
- if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}}
- if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)}
- x *= Math.pow(2,exp);
- return x}
- function caml_gr_state_set(ctx)
- {caml_gr_state = ctx;caml_gr_state_init();return 0}
- function caml_zarith_unmarshal(reader,sz)
- {var negate;
- switch(reader.read8u())
- {case 1:negate = true;break;
- case 0:negate = false;break;
- default:caml_failwith("input_value: z (malformed input)")}
- var len=reader.read32u(),x=bigInt(0);
- for(var i=0;i < len / 4;i++)
- {var y=bigInt(reader.read8u());
- y = y.add(reader.read8u() << 8);
- y = y.add(reader.read8u() << 16);
- y = y.add(reader.read8u() << 24 >>> 0);
- x = y.shiftLeft(i * 32).add(x)}
- if(negate)x = x.negate();
- sz[0] = len + 4;
- return ml_z_normalize(x)}
- function ml_z_trailing_zeros(z)
- {z = bigInt(z).abs();
- var zero=bigInt(0),one=bigInt(1);
- if(z.equals(zero))return 0x7fffffff;
- var i=0;
- z = z.xor(z.prev()).shiftRight(1);
- for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1);
- return i}
- function caml_js_wrap_callback_strict(arity,f)
- {return function()
- {var n=arguments.length;
- if(n == arity && f.length == arity)return f.apply(null,arguments);
- var args=new Array(arity),len=Math.min(arguments.length,arity);
- for(var i=0;i < len;i++)args[i] = arguments[i];
- return caml_call_gen(f,args)}}
- function caml_gc_minor_words(unit){return 0}
- function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0}
- function caml_get_current_callstack(){return [0]}
- function land_digit_nat(nat1,ofs1,nat2,ofs2)
- {nat1.data[ofs1] &= nat2.data[ofs2];return 0}
- function caml_int64_mod(x,y){return x.mod(y)}
- function unix_readlink(name)
- {var root=resolve_fs_device(name);
- if(! root.device.readlink)
- caml_failwith("unix_readlink: not implemented");
- return root.device.readlink(root.rest,true)}
- function caml_obj_set_tag(x,tag){x[0] = tag;return 0}
- function caml_int32_bswap(x)
- {return (x & 0x000000FF)
- <<
- 24
- |
- (x & 0x0000FF00)
- <<
- 8
- |
- (x & 0x00FF0000)
- >>>
- 8
- |
- (x & 0xFF000000)
- >>>
- 24}
- function win_startup(){}
- function caml_ba_set_3(ba,i0,i1,i2,v)
- {ba.set(ba.offset([i0,i1,i2]),v);return 0}
- function caml_js_instanceof(o,c){return o instanceof c?1:0}
- function caml_get_major_bucket(n){return 0}
- var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes;
- function set_digit_nat_native(nat,ofs,digit)
- {nat.data[ofs] = digit;return 0}
- function nth_digit_nat_native(nat,ofs){return nat.data[ofs]}
- function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)}
- function caml_gr_state_create(canvas,w,h)
- {var context=canvas.getContext("2d");
- return {context:context,
- canvas:canvas,
- x:0,
- y:0,
- width:w,
- height:h,
- line_width:1,
- font:caml_string_of_jsbytes("fixed"),
- text_size:26,
- color:0x000000,
- title:caml_string_of_jsbytes("")}}
- function caml_js_wrap_callback(f)
- {return function()
- {var len=arguments.length;
- if(len > 0)
- {var args=new Array(len);
- for(var i=0;i < len;i++)args[i] = arguments[i];
- return caml_call_gen(f,args)}
- else
- return caml_call_gen(f,[undefined])}}
- function caml_gr_draw_arc(x,y,rx,ry,a1,a2)
- {var s=caml_gr_state_get();
- s.context.beginPath();
- caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2);
- s.context.stroke();
- return 0}
- function caml_ba_map_file(vfd,kind,layout,shared,dims,pos)
- {caml_failwith("caml_ba_map_file not implemented")}
- function caml_ba_map_file_bytecode(argv,argn)
- {return caml_ba_map_file(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5])}
- function unix_symlink(to_dir,src,dst)
- {var src_root=resolve_fs_device(src),dst_root=resolve_fs_device(dst);
- if(src_root.device != dst_root.device)
- caml_failwith("unix_symlink: cannot symlink between two filesystems");
- if(! src_root.device.symlink)
- caml_failwith("unix_symlink: not implemented");
- return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)}
- function caml_ba_create_from(data1,data2,jstyp,kind,layout,dims)
- {if(data2 || caml_ba_get_size_per_element(kind) == 2)
- caml_invalid_argument
- ("caml_ba_create_from: use return caml_ba_create_unsafe");
- return caml_ba_create_unsafe(kind,layout,dims,data1)}
- function caml_tanh_float(x){return Math.tanh(x)}
- function caml_gr_draw_str(str)
- {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width;
- s.context.fillText(str,s.x,s.height - s.y);
- s.x += dx | 0;
- return 0}
- function caml_gr_draw_string(str)
- {caml_gr_draw_str(caml_jsstring_of_string(str));return 0}
- function caml_gr_draw_char(c)
- {caml_gr_draw_str(String.fromCharCode(c));return 0}
- function caml_unmount(name)
- {var
- path=caml_make_path(name),
- name=caml_trailing_slash(path.join("/")),
- idx=- 1;
- for(var i=0;i < jsoo_mount_point.length;i++)
- if(jsoo_mount_point[i].path == name)idx = i;
- if(idx > - 1)jsoo_mount_point.splice(idx,1);
- return 0}
- function caml_input_value_from_string(s,ofs)
- {var reader=new MlStringReader(s,typeof ofs == "number"?ofs:ofs[0]);
- return caml_input_value_from_reader(reader,ofs)}
- function caml_ml_pos_in_64(chanid)
- {return caml_int64_of_float(caml_ml_channels[chanid].offset)}
- function caml_gr_draw_image(im,x,y)
- {var s=caml_gr_state_get();
- if(! im.image)
- {var canvas=document.createElement("canvas");
- canvas.width = s.width;
- canvas.height = s.height;
- canvas.getContext("2d").putImageData(im,0,0);
- var image=new (globalThis.Image)();
- image.onload
- =
- function()
- {s.context.drawImage(image,x,s.height - im.height - y);
- im.image = image};
- image.src = canvas.toDataURL("image/png")}
- else
- s.context.drawImage(im.image,x,s.height - im.height - y);
- return 0}
- function caml_register_channel_for_spacetime(_channel){return 0}
- function caml_string_set(s,i,c)
- {if(i >>> 0 >= s.l)caml_string_bound_error();
- return caml_string_unsafe_set(s,i,c)}
- function caml_sys_rmdir(name)
- {var root=resolve_fs_device(name);root.device.rmdir(root.rest);return 0}
- function caml_ml_pos_out(chanid)
- {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset}
- function caml_spacetime_enabled(_unit){return 0}
- function caml_bytes_notequal(s1,s2){return 1 - caml_bytes_equal(s1,s2)}
- function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")}
- function caml_js_object(a)
- {var o={};
- for(var i=1;i < a.length;i++)
- {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]}
- return o}
- function caml_ba_create(kind,layout,dims_ml)
- {var
- dims=caml_js_from_array(dims_ml),
- data=caml_ba_create_buffer(kind,caml_ba_get_size(dims));
- return caml_ba_create_unsafe(kind,layout,dims,data)}
- function caml_weak_blit(a1,i1,a2,i2,len)
- {caml_array_blit
- (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len);
- return 0}
- function caml_gr_remember_mode()
- {caml_failwith("caml_gr_remember_mode not Implemented")}
- function caml_fma_float(x,y,z)
- {var
- SPLIT=Math.pow(2,27) + 1,
- MIN_VALUE=Math.pow(2,- 1022),
- EPSILON=Math.pow(2,- 52),
- C=416,
- A=Math.pow(2,+ C),
- B=Math.pow(2,- C);
- function multiply(a,b)
- {var
- at=SPLIT * a,
- ahi=at - (at - a),
- alo=a - ahi,
- bt=SPLIT * b,
- bhi=bt - (bt - b),
- blo=b - bhi,
- p=a * b,
- e=ahi * bhi - p + ahi * blo + alo * bhi + alo * blo;
- return {p:p,e:e}}
- function add(a,b)
- {var s=a + b,v=s - a,e=a - (s - v) + (b - v);return {s:s,e:e}}
- function adjust(x,y)
- {return x !== 0 && y !== 0 && SPLIT * x - (SPLIT * x - x) === x
- ?x * (1 + (x < 0?- 1:+ 1) * (y < 0?- 1:+ 1) * EPSILON)
- :x}
- if
- (x
- ===
- 0
- ||
- x
- !==
- x
- ||
- x
- ===
- +
- (1 / 0)
- ||
- x
- ===
- -
- (1 / 0)
- ||
- y
- ===
- 0
- ||
- y
- !==
- y
- ||
- y
- ===
- +
- (1 / 0)
- ||
- y
- ===
- -
- (1 / 0))
- return x * y + z;
- if(z === 0)return x * y;
- if(z !== z || z === + (1 / 0) || z === - (1 / 0))return z;
- var scale=1;
- while(Math.abs(x) > A){scale *= A;x *= B}
- while(Math.abs(y) > A){scale *= A;y *= B}
- if(scale === 1 / 0)return x * y * scale;
- while(Math.abs(x) < B){scale *= B;x *= A}
- while(Math.abs(y) < B){scale *= B;y *= A}
- if(scale === 0)return z;
- var xs=x,ys=y,zs=z / scale;
- if(Math.abs(zs) > Math.abs(xs * ys) * 4 / EPSILON)return z;
- if(Math.abs(zs) < Math.abs(xs * ys) * EPSILON / 4 * EPSILON / 4)
- zs = (z < 0?- 1:+ 1) * MIN_VALUE;
- var
- xy=multiply(xs,ys),
- s=add(xy.p,zs),
- u=add(xy.e,s.e),
- i=add(s.s,u.s),
- f=i.s + adjust(i.e,u.e);
- if(f === 0)return f;
- var fs=f * scale;
- if(Math.abs(fs) > MIN_VALUE)return fs;
- return fs + adjust(f - fs / scale,i.e) * scale}
- function caml_bswap16(x){return (x & 0x00FF) << 8 | (x & 0xFF00) >> 8}
- function caml_ml_set_binary_mode(chanid,mode)
- {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd];
- data.flags.text = ! mode;
- data.flags.binary = mode;
- return 0}
- function caml_final_register(){return 0}
- function caml_gr_draw_rect(x,y,w,h)
- {var s=caml_gr_state_get();
- s.context.strokeRect(x,s.height - y,w,- h);
- return 0}
- function caml_string_get16(s,i)
- {if(i >>> 0 >= caml_ml_string_length(s) - 1)caml_string_bound_error();
- var b1=caml_string_unsafe_get(s,i),b2=caml_string_unsafe_get(s,i + 1);
- return b2 << 8 | b1}
- function caml_ephe_unset_data(x,data)
- {x[caml_ephe_data_offset] = undefined;return 0}
- function caml_output_value(chanid,v,flags)
- {var s=caml_output_value_to_string(v,flags);
- caml_ml_output(chanid,s,0,caml_ml_string_length(s));
- return 0}
- function caml_ba_get_3(ba,i0,i1,i2){return ba.get(ba.offset([i0,i1,i2]))}
- var caml_ephe_blit_key=caml_weak_blit;
- function ml_z_to_int32(z1){return ml_z_to_int(z1)}
- var caml_initial_time=new Date().getTime() * 0.001;
- function caml_sys_time()
- {var now=new Date().getTime();return now * 0.001 - caml_initial_time}
- function caml_sys_time_include_children(b){return caml_sys_time()}
- function caml_check_bound(array,index)
- {if(index >>> 0 >= array.length - 1)caml_array_bound_error();
- return array}
- function unix_getpwuid(unit){caml_raise_not_found()}
- function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))}
- function caml_hash_mix_string(h,v)
- {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))}
- function caml_hash(count,limit,seed,obj)
- {var queue,rd,wr,sz,num,h,v,i,len;
- sz = limit;
- if(sz < 0 || sz > 256)sz = 256;
- num = count;
- h = seed;
- queue = [obj];
- rd = 0;
- wr = 1;
- while(rd < wr && num > 0)
- {v = queue[rd++];
- if(v && v.caml_custom)
- {if
- (caml_custom_ops[v.caml_custom]
- &&
- caml_custom_ops[v.caml_custom].hash)
- {var hh=caml_custom_ops[v.caml_custom].hash(v);
- h = caml_hash_mix_int(h,hh);
- num--}}
- else
- if(v instanceof Array && v[0] === (v[0] | 0))
- switch(v[0])
- {case 248:h = caml_hash_mix_int(h,v[2]);num--;break;
- case 250:queue[--rd] = v[1];break;
- default:
- var tag=v.length - 1 << 10 | v[0];
- h = caml_hash_mix_int(h,tag);
- for(i = 1,len = v.length;i < len;i++)
- {if(wr >= sz)break;queue[wr++] = v[i]}
- break}
- else
- if(caml_is_ml_bytes(v))
- {h = caml_hash_mix_bytes(h,v);num--}
- else
- if(caml_is_ml_string(v))
- {h = caml_hash_mix_string(h,v);num--}
- else
- if(typeof v === "string")
- {h = caml_hash_mix_jsbytes(h,v);num--}
- else
- if(v === (v | 0))
- {h = caml_hash_mix_int(h,v + v + 1);num--}
- else
- if(v === + v){h = caml_hash_mix_float(h,v);num--}}
- h = caml_hash_mix_final(h);
- return h & 0x3FFFFFFF}
- function caml_obj_tag(x)
- {if(x instanceof Array && x[0] == x[0] >>> 0)
- return x[0];
- else
- if(caml_is_ml_bytes(x))
- return 252;
- else
- if(caml_is_ml_string(x))
- return 252;
- else
- if(x instanceof Function || typeof x == "function")
- return 247;
- else
- if(x && x.caml_custom)return 255;else return 1000}
- function caml_ba_to_typed_array(ba){return ba.data}
- function caml_bytes_get32(s,i)
- {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error();
- var
- b1=caml_bytes_unsafe_get(s,i),
- b2=caml_bytes_unsafe_get(s,i + 1),
- b3=caml_bytes_unsafe_get(s,i + 2),
- b4=caml_bytes_unsafe_get(s,i + 3);
- return b4 << 24 | b3 << 16 | b2 << 8 | b1}
- function caml_frexp_float(x)
- {if(x == 0 || ! isFinite(x))return [0,x,0];
- var neg=x < 0;
- if(neg)x = - x;
- var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1);
- x *= Math.pow(2,- exp);
- while(x < 0.5){x *= 2;exp--}
- while(x >= 1){x *= 0.5;exp++}
- if(neg)x = - x;
- return [0,x,exp]}
- function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())}
- function caml_string_get64(s,i)
- {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error();
- var a=new Array(8);
- for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j);
- return caml_int64_of_bytes(a)}
- function caml_js_error_option_of_exception(exn)
- {if(exn.js_error)return [0,exn.js_error];return 0}
- function caml_ml_pos_out_64(chanid)
- {caml_ml_flush(chanid);
- return caml_int64_of_float(caml_ml_channels[chanid].offset)}
- function ml_z_extract(z1,pos,len)
- {z1 = bigInt(z1);
- return ml_z_normalize
- (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))}
- function ml_z_of_float(f1)
- {if(f1 == Infinity || f1 == - Infinity || f1 != f1)
- caml_raise_constant(caml_named_value("ml_z_overflow"));
- return ml_z_normalize(bigInt(f1 < 0?Math.ceil(f1):Math.floor(f1)))}
- function ml_z_lognot(z1){return ml_z_normalize(bigInt(z1).not())}
- function caml_gr_close_subwindow(a)
- {caml_failwith("caml_gr_close_subwindow not Implemented")}
- function caml_floatarray_blit(a1,i1,a2,i2,len)
- {if(i2 <= i1)
- for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j];
- else
- for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j];
- return 0}
- function caml_get_minor_free(unit){return 0}
- function caml_set_static_env(k,v)
- {if(! globalThis.jsoo_static_env)globalThis.jsoo_static_env = {};
- globalThis.jsoo_static_env[k] = v;
- return 0}
- function caml_ba_change_layout(ba,layout)
- {if(ba.layout == layout)return ba;
- var new_dims=[];
- for(var i=0;i < ba.dims.length;i++)
- new_dims[i] = ba.dims[ba.dims.length - i - 1];
- return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)}
- function caml_js_new(c,a)
- {switch(a.length)
- {case 1:return new c();
- case 2:return new c(a[1]);
- case 3:return new c(a[1],a[2]);
- case 4:return new c(a[1],a[2],a[3]);
- case 5:return new c(a[1],a[2],a[3],a[4]);
- case 6:return new c(a[1],a[2],a[3],a[4],a[5]);
- case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]);
- case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7])
- }
- function F(){return c.apply(this,caml_js_from_array(a))}
- F.prototype = c.prototype;
- return new F()}
- function unix_mkdir(name,perm)
- {var root=resolve_fs_device(name);
- if(! root.device.mkdir)caml_failwith("unix_mkdir: not implemented");
- return root.device.mkdir(root.rest,perm,true)}
- function caml_gr_current_y(){var s=caml_gr_state_get();return s.y}
- function caml_format_int(fmt,i)
- {if(caml_jsbytes_of_string(fmt) == "%d")
- return caml_string_of_jsbytes("" + i);
- var f=caml_parse_format(fmt);
- if(i < 0)if(f.signedconv){f.sign = - 1;i = - i}else i >>>= 0;
- var s=i.toString(f.base);
- if(f.prec >= 0)
- {f.filler = " ";
- var n=f.prec - s.length;
- if(n > 0)s = caml_str_repeat(n,"0") + s}
- return caml_finish_formatting(f,s)}
- function caml_obj_truncate(x,s)
- {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate");
- if(x.length != s + 1)x.length = s + 1;
- return 0}
- function caml_js_to_string(s){return caml_string_of_jsstring(s)}
- function is_digit_odd(nat,ofs){if(nat.data[ofs] & 1)return 1;return 0}
- function caml_runtime_variant(_unit){return caml_string_of_jsbytes("")}
- function caml_ml_open_descriptor_out(fd)
- {var data=caml_global_data.fds[fd];
- if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly");
- var
- channel=
- {file:data.file,
- offset:data.offset,
- fd:fd,
- opened:true,
- out:true,
- buffer:""};
- caml_ml_channels[channel.fd] = channel;
- return channel.fd}
- function caml_array_concat(l)
- {var a=[0];
- while(l !== 0)
- {var b=l[1];for(var i=1;i < b.length;i++)a.push(b[i]);l = l[2]}
- return a}
- function caml_gr_open_graph(info)
- {var g=globalThis,info=caml_jsstring_of_string(info);
- function get(name)
- {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)");
- if(res)return res[2]}
- var specs=[];
- if(! (info == ""))specs.push(info);
- var target=get("target");
- if(! target)target = "";
- var status=get("status");
- if(! status)specs.push("status=1");
- var w=get("width");
- w = w?parseInt(w):200;
- specs.push("width=" + w);
- var h=get("height");
- h = h?parseInt(h):200;
- specs.push("height=" + h);
- var win=g.open("about:blank",target,specs.join(","));
- if(! win)caml_failwith("Graphics.open_graph: cannot open the window");
- var doc=win.document,canvas=doc.createElement("canvas");
- canvas.width = w;
- canvas.height = h;
- var ctx=caml_gr_state_create(canvas,w,h);
- ctx.set_title = function(title){doc.title = title};
- caml_gr_state_set(ctx);
- var body=doc.body;
- body.style.margin = "0px";
- body.appendChild(canvas);
- return 0}
- function caml_ephe_set_data(x,data)
- {x[caml_ephe_data_offset] = data;return 0}
- function caml_make_float_vect(len)
- {if(len < 0)caml_array_bound_error();
- var len=len + 1 | 0,b=new Array(len);
- b[0] = 254;
- for(var i=1;i < len;i++)b[i] = 0;
- return b}
- function caml_cbrt_float(x){return Math.cbrt(x)}
- function caml_memprof_stop(unit){return 0}
- function caml_eventlog_pause(unit){return 0}
- function caml_greaterequal(x,y)
- {return + (caml_compare_val(x,y,false) >= 0)}
- function ml_z_numbits(z1)
- {z1 = bigInt(z1).abs();
- var n=0,upperBound=bigInt.one;
- while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)}
- return n}
- function caml_get_exception_raw_backtrace(){return [0]}
- function caml_log1p_float(x){return Math.log1p(x)}
- function caml_int64_or(x,y){return x.or(y)}
- function caml_lazy_make_forward(v){return [250,v]}
- function lor_digit_nat(nat1,ofs1,nat2,ofs2)
- {nat1.data[ofs1] |= nat2.data[ofs2];return 0}
- function caml_gr_blit_image(im,x,y)
- {var
- s=caml_gr_state_get(),
- im2=
- s.context.getImageData(x,s.height - im.height - y,im.width,im.height);
- for(var i=0;i < im2.data.length;i += 4)
- {im.data[i] = im2.data[i];
- im.data[i + 1] = im2.data[i + 1];
- im.data[i + 2] = im2.data[i + 2];
- im.data[i + 3] = im2.data[i + 3]}
- return 0}
- function caml_gr_window_id(a)
- {caml_failwith("caml_gr_window_id not Implemented")}
- function caml_js_on_ie()
- {var ua=globalThis.navigator?globalThis.navigator.userAgent:"";
- return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0}
- function caml_int64_shift_right(x,s){return x.shift_right(s)}
- function caml_ba_layout(ba){return ba.layout}
- function caml_convert_raw_backtrace(){return [0]}
- function caml_array_set(array,index,newval)
- {if(index < 0 || index >= array.length - 1)caml_array_bound_error();
- array[index + 1] = newval;
- return 0}
- function caml_bytes_greaterequal(s1,s2)
- {return caml_bytes_lessequal(s2,s1)}
- function ml_z_perfect_power(z)
- {z = bigInt(z);
- var zero=bigInt(0),one=bigInt(1);
- if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1;
- var log2z=ml_z_numbits(z.abs());
- for(var b=2;b <= log2z;b++)
- {if(z.lt(zero) && b % 2 == 0)continue;
- var zp=z.abs(),p=bigInt(ml_z_root(zp,b));
- if(z.lt(zero))p = p.negate();
- var r=bigInt(ml_z_pow(p,b));
- if(z.equals(r))return 1}
- return 0}
- function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0}
- function ml_z_init(unit)
- {caml_custom_ops["_z"]
- =
- {serialize:caml_zarith_marshal,
- deserialize:caml_zarith_unmarshal,
- hash:ml_z_hash,
- compare:ml_z_compare};
- return 0}
- function caml_gr_doc_of_state(state)
- {if(state.canvas.ownerDocument)return state.canvas.ownerDocument}
- function caml_ml_output_int(chanid,i)
- {var
- arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF],
- s=caml_string_of_array(arr);
- caml_ml_output(chanid,s,0,4);
- return 0}
- function caml_obj_with_tag(tag,x)
- {var l=x.length,a=new Array(l);
- a[0] = tag;
- for(var i=1;i < l;i++)a[i] = x[i];
- return a}
- function caml_ml_channel_size(chanid)
- {var chan=caml_ml_channels[chanid];return chan.file.length()}
- function caml_raw_backtrace_slot()
- {caml_invalid_argument
- ("Printexc.get_raw_backtrace_slot: index out of bounds")}
- function caml_hexstring_of_float(x,prec,style)
- {if(! isFinite(x))
- {if(isNaN(x))return caml_string_of_jsstring("nan");
- return caml_string_of_jsstring(x > 0?"infinity":"-infinity")}
- var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1;
- if(sign)x = - x;
- var exp=0;
- if(x == 0)
- ;
- else
- if(x < 1)
- while(x < 1 && exp > - 1022){x *= 2;exp--}
- else
- while(x >= 2){x /= 2;exp++}
- var exp_sign=exp < 0?"":"+",sign_str="";
- if(sign)
- sign_str = "-";
- else
- switch(style)
- {case 43:sign_str = "+";break;
- case 32:sign_str = " ";break;
- default:break}
- if(prec >= 0 && prec < 13)
- {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst}
- var x_str=x.toString(16);
- if(prec >= 0)
- {var idx=x_str.indexOf(".");
- if(idx < 0)
- x_str += "." + caml_str_repeat(prec,"0");
- else
- {var size=idx + 1 + prec;
- if(x_str.length < size)
- x_str += caml_str_repeat(size - x_str.length,"0");
- else
- x_str = x_str.substr(0,size)}}
- return caml_string_of_jsstring
- (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))}
- function caml_js_wrap_meth_callback_strict(arity,f)
- {return function()
- {var args=new Array(arity + 1),len=Math.min(arguments.length,arity);
- args[0] = this;
- for(var i=0;i < len;i++)args[i + 1] = arguments[i];
- return caml_call_gen(f,args)}}
- function ml_z_format(fmt,z1)
- {z1 = bigInt(z1);
- var
- fmt=caml_jsbytes_of_string(fmt),
- base=10,
- cas=0,
- width=0,
- alt=0,
- dir=0,
- sign="",
- pad=" ",
- idx=0,
- prefix="";
- while(fmt[idx] == "%")idx++;
- for(;;idx++)
- if(fmt[idx] == "#")
- alt = 1;
- else
- if(fmt[idx] == "0")
- pad = "0";
- else
- if(fmt[idx] == "-")
- dir = 1;
- else
- if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break;
- if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()}
- for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++)
- width = 10 * width + + fmt[idx];
- switch(fmt[idx])
- {case "i":
- case "d":
- case "u":break;
- case "b":base = 2;if(alt)prefix = "0b";break;
- case "o":base = 8;if(alt)prefix = "0o";break;
- case "x":base = 16;if(alt)prefix = "0x";break;
- case "X":base = 16;if(alt)prefix = "0X";cas = 1;break;
- default:caml_failwith("Unsupported format '" + fmt + "'")}
- if(dir)pad = " ";
- var res=z1.toString(base);
- if(cas === 1)res = res.toUpperCase();
- var size=res.length;
- if(pad == " ")
- if(dir)
- {res = sign + prefix + res;for(;res.length < width;)res = res + pad}
- else
- {res = sign + prefix + res;for(;res.length < width;)res = pad + res}
- else
- {var pre=sign + prefix;
- for(;res.length + pre.length < width;)res = pad + res;
- res = pre + res}
- return caml_string_of_jsbytes(res)}
- function ml_z_to_int64(z1)
- {z1 = bigInt(z1);
- if(! ml_z_fits_int64(z1))
- caml_raise_constant(caml_named_value("ml_z_overflow"));
- var
- mask=bigInt(0xffffffff),
- lo=z1.and(mask).toJSNumber(),
- hi=z1.shiftRight(32).and(mask).toJSNumber(),
- x=caml_int64_create_lo_hi(lo,hi);
- return x}
- function ml_z_size(z1)
- {return bigInt(z1).toArray(Math.pow(2,32)).value.length}
- function caml_backtrace_status(){return 0}
- function caml_sys_argv(a){return caml_argv}
- function caml_install_signal_handler(){return 0}
- function caml_ba_fill(ba,v){ba.fill(v);return 0}
- function caml_modf_float(x)
- {if(isFinite(x))
- {var neg=1 / x < 0;
- x = Math.abs(x);
- var i=Math.floor(x),f=x - i;
- if(neg){i = - i;f = - f}
- return [0,f,i]}
- if(isNaN(x))return [0,NaN,NaN];
- return [0,1 / x,x]}
- function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]}
- function caml_float_compare(x,y)
- {if(x === y)return 0;
- if(x < y)return - 1;
- if(x > y)return 1;
- if(x === x)return 1;
- if(y === y)return - 1;
- return 0}
- function ml_z_shift_right_trunc(z1,z2)
- {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))}
- function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)}
- function caml_parse_engine(tables,env,cmd,arg)
- {var
- ERRCODE=256,
- loop=6,
- testshift=7,
- shift=8,
- shift_recover=9,
- reduce=10,
- READ_TOKEN=0,
- RAISE_PARSE_ERROR=1,
- GROW_STACKS_1=2,
- GROW_STACKS_2=3,
- COMPUTE_SEMANTIC_ACTION=4,
- CALL_ERROR_FUNCTION=5,
- env_s_stack=1,
- env_v_stack=2,
- env_symb_start_stack=3,
- env_symb_end_stack=4,
- env_stacksize=5,
- env_stackbase=6,
- env_curr_char=7,
- env_lval=8,
- env_symb_start=9,
- env_symb_end=10,
- env_asp=11,
- env_rule_len=12,
- env_rule_number=13,
- env_sp=14,
- env_state=15,
- env_errflag=16,
- tbl_transl_const=2,
- tbl_transl_block=3,
- tbl_lhs=4,
- tbl_len=5,
- tbl_defred=6,
- tbl_dgoto=7,
- tbl_sindex=8,
- tbl_rindex=9,
- tbl_gindex=10,
- tbl_tablesize=11,
- tbl_table=12,
- tbl_check=13;
- if(! tables.dgoto)
- {tables.defred = caml_lex_array(tables[tbl_defred]);
- tables.sindex = caml_lex_array(tables[tbl_sindex]);
- tables.check = caml_lex_array(tables[tbl_check]);
- tables.rindex = caml_lex_array(tables[tbl_rindex]);
- tables.table = caml_lex_array(tables[tbl_table]);
- tables.len = caml_lex_array(tables[tbl_len]);
- tables.lhs = caml_lex_array(tables[tbl_lhs]);
- tables.gindex = caml_lex_array(tables[tbl_gindex]);
- tables.dgoto = caml_lex_array(tables[tbl_dgoto])}
- var
- res=0,
- n,
- n1,
- n2,
- state1,
- sp=env[env_sp],
- state=env[env_state],
- errflag=env[env_errflag];
- exit:
- for(;;)
- switch(cmd)
- {case 0:state = 0;errflag = 0;
- case 6:
- n = tables.defred[state];
- if(n != 0){cmd = reduce;break}
- if(env[env_curr_char] >= 0){cmd = testshift;break}
- res = READ_TOKEN;
- break exit;
- case 1:
- if(arg instanceof Array)
- {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1];
- env[env_lval] = arg[1]}
- else
- {env[env_curr_char] = tables[tbl_transl_const][arg + 1];
- env[env_lval] = 0}
- case 7:
- n1 = tables.sindex[state];
- n2 = n1 + env[env_curr_char];
- if
- (n1
- !=
- 0
- &&
- n2
- >=
- 0
- &&
- n2
- <=
- tables[tbl_tablesize]
- &&
- tables.check[n2]
- ==
- env[env_curr_char])
- {cmd = shift;break}
- n1 = tables.rindex[state];
- n2 = n1 + env[env_curr_char];
- if
- (n1
- !=
- 0
- &&
- n2
- >=
- 0
- &&
- n2
- <=
- tables[tbl_tablesize]
- &&
- tables.check[n2]
- ==
- env[env_curr_char])
- {n = tables.table[n2];cmd = reduce;break}
- if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit}
- case 5:
- if(errflag < 3)
- {errflag = 3;
- for(;;)
- {state1 = env[env_s_stack][sp + 1];
- n1 = tables.sindex[state1];
- n2 = n1 + ERRCODE;
- if
- (n1
- !=
- 0
- &&
- n2
- >=
- 0
- &&
- n2
- <=
- tables[tbl_tablesize]
- &&
- tables.check[n2]
- ==
- ERRCODE)
- {cmd = shift_recover;break}
- else
- {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}}
- else
- {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR;
- env[env_curr_char] = - 1;
- cmd = loop;
- break}
- case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--;
- case 9:
- state = tables.table[n2];
- sp++;
- if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit}
- case 2:
- env[env_s_stack][sp + 1] = state;
- env[env_v_stack][sp + 1] = env[env_lval];
- env[env_symb_start_stack][sp + 1] = env[env_symb_start];
- env[env_symb_end_stack][sp + 1] = env[env_symb_end];
- cmd = loop;
- break;
- case 10:
- var m=tables.len[n];
- env[env_asp] = sp;
- env[env_rule_number] = n;
- env[env_rule_len] = m;
- sp = sp - m + 1;
- m = tables.lhs[n];
- state1 = env[env_s_stack][sp];
- n1 = tables.gindex[m];
- n2 = n1 + state1;
- if
- (n1
- !=
- 0
- &&
- n2
- >=
- 0
- &&
- n2
- <=
- tables[tbl_tablesize]
- &&
- tables.check[n2]
- ==
- state1)
- state = tables.table[n2];
- else
- state = tables.dgoto[m];
- if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit}
- case 3:res = COMPUTE_SEMANTIC_ACTION;break exit;
- case 4:
- env[env_s_stack][sp + 1] = state;
- env[env_v_stack][sp + 1] = arg;
- var asp=env[env_asp];
- env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1];
- if(sp > asp)
- env[env_symb_start_stack][sp + 1]
- =
- env[env_symb_end_stack][asp + 1];
- cmd = loop;
- break;
- default:return RAISE_PARSE_ERROR}
- env[env_sp] = sp;
- env[env_state] = state;
- env[env_errflag] = errflag;
- return res}
- function caml_update_dummy(x,y)
- {if(typeof y === "function"){x.fun = y;return 0}
- if(y.fun){x.fun = y.fun;return 0}
- var i=y.length;
- while(i--)x[i] = y[i];
- return 0}
- function caml_array_fill(array,ofs,len,v)
- {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0}
- function ml_z_install_frametable(unit){return 0}
- function caml_sys_mkdir(name,perm)
- {var root=resolve_fs_device(name);
- root.device.mkdir(root.rest,perm);
- return 0}
- function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)}
- function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)}
- function caml_gr_make_image(arr)
- {var
- s=caml_gr_state_get(),
- h=arr.length - 1,
- w=arr[1].length - 1,
- im=s.context.createImageData(w,h);
- for(var i=0;i < h;i++)
- for(var j=0;j < w;j++)
- {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4;
- if(c == - 1)
- {im.data[o + 0] = 0;
- im.data[o + 1] = 0;
- im.data[o + 2] = 0;
- im.data[o + 3] = 0}
- else
- {im.data[o + 0] = c >> 16 & 0xff;
- im.data[o + 1] = c >> 8 & 0xff;
- im.data[o + 2] = c >> 0 & 0Xff;
- im.data[o + 3] = 0xff}}
- return im}
- function caml_ml_set_channel_output(chanid,f)
- {var chan=caml_ml_channels[chanid];
- caml_global_data.fds[chan.fd].output = f;
- return 0}
- function caml_read_file_content(name)
- {var
- name=typeof name == "string"?caml_string_of_jsbytes(name):name,
- root=resolve_fs_device(name);
- if(root.device.exists(root.rest))
- {var
- file=root.device.open(root.rest,{rdonly:1}),
- len=file.length(),
- buf=caml_create_bytes(len);
- file.read(0,buf,0,len);
- return caml_string_of_bytes(buf)}
- caml_raise_no_such_file(caml_jsbytes_of_string(name))}
- function caml_js_to_float(x){return x}
- function caml_setup_uncaught_exception_handler()
- {var g=globalThis;
- if(g.process && g.process.on)
- g.process.on
- ("uncaughtException",
- function(err,origin)
- {caml_fatal_uncaught_exception(err);g.process.exit(2)});
- else
- if(g.addEventListener)
- g.addEventListener
- ("error",
- function(event)
- {if(event.error)caml_fatal_uncaught_exception(event.error)})}
- caml_setup_uncaught_exception_handler();
- globalThis.jsoo_runtime
- =
- {ml_z_normalize:ml_z_normalize,
- ml_z_mul_overflows:ml_z_mul_overflows,
- ml_z_init:ml_z_init,
- ml_z_install_frametable:ml_z_install_frametable,
- ml_z_neg:ml_z_neg,
- ml_z_add:ml_z_add,
- ml_z_sub:ml_z_sub,
- ml_z_mul:ml_z_mul,
- ml_z_div:ml_z_div,
- ml_z_cdiv:ml_z_cdiv,
- ml_z_fdiv:ml_z_fdiv,
- ml_z_rem:ml_z_rem,
- ml_z_div_rem:ml_z_div_rem,
- ml_z_succ:ml_z_succ,
- ml_z_pred:ml_z_pred,
- ml_z_abs:ml_z_abs,
- ml_z_logand:ml_z_logand,
- ml_z_logor:ml_z_logor,
- ml_z_logxor:ml_z_logxor,
- ml_z_lognot:ml_z_lognot,
- ml_z_shift_left:ml_z_shift_left,
- ml_z_shift_right:ml_z_shift_right,
- ml_z_shift_right_trunc:ml_z_shift_right_trunc,
- ml_z_of_int:ml_z_of_int,
- ml_z_of_int32:ml_z_of_int32,
- ml_z_of_nativeint:ml_z_of_nativeint,
- ml_z_of_int64:ml_z_of_int64,
- ml_z_of_float:ml_z_of_float,
- ml_z_to_int:ml_z_to_int,
- ml_z_to_int32:ml_z_to_int32,
- ml_z_to_int64:ml_z_to_int64,
- ml_z_testbit:ml_z_testbit,
- ml_z_to_nativeint:ml_z_to_nativeint,
- ml_z_format:ml_z_format,
- jsoo_z_of_js_string_base:jsoo_z_of_js_string_base,
- ml_z_of_substring_base:ml_z_of_substring_base,
- ml_z_compare:ml_z_compare,
- ml_z_equal:ml_z_equal,
- ml_z_sign:ml_z_sign,
- ml_z_gcd:ml_z_gcd,
- ml_z_numbits:ml_z_numbits,
- ml_z_fits_int:ml_z_fits_int,
- ml_z_fits_int32:ml_z_fits_int32,
- ml_z_fits_int64:ml_z_fits_int64,
- ml_z_fits_nativeint:ml_z_fits_nativeint,
- ml_z_powm:ml_z_powm,
- ml_z_pow:ml_z_pow,
- ml_z_hash:ml_z_hash,
- ml_z_to_bits:ml_z_to_bits,
- ml_z_of_bits:ml_z_of_bits,
- ml_z_powm_sec:ml_z_powm_sec,
- ml_z_root:ml_z_root,
- ml_z_invert:ml_z_invert,
- ml_z_perfect_power:ml_z_perfect_power,
- ml_z_perfect_square:ml_z_perfect_square,
- ml_z_probab_prime:ml_z_probab_prime,
- ml_z_nextprime:ml_z_nextprime,
- ml_z_extract:ml_z_extract,
- ml_z_gcdext_intern:ml_z_gcdext_intern,
- ml_z_sqrt:ml_z_sqrt,
- ml_z_sqrt_rem:ml_z_sqrt_rem,
- ml_z_trailing_zeros:ml_z_trailing_zeros,
- ml_z_popcount:ml_z_popcount,
- ml_z_hamdist:ml_z_hamdist,
- ml_z_size:ml_z_size,
- ml_z_divexact:ml_z_divexact,
- caml_zarith_marshal:caml_zarith_marshal,
- caml_zarith_unmarshal:caml_zarith_unmarshal,
- bigInt:bigInt,
- caml_ephe_key_offset:caml_ephe_key_offset,
- caml_ephe_data_offset:caml_ephe_data_offset,
- caml_weak_create:caml_weak_create,
- caml_weak_set:caml_weak_set,
- caml_weak_get:caml_weak_get,
- caml_weak_get_copy:caml_weak_get_copy,
- caml_weak_check:caml_weak_check,
- caml_weak_blit:caml_weak_blit,
- caml_ephe_create:caml_ephe_create,
- caml_ephe_blit_key:caml_ephe_blit_key,
- caml_ephe_get_key:caml_ephe_get_key,
- caml_ephe_get_key_copy:caml_ephe_get_key_copy,
- caml_ephe_check_key:caml_ephe_check_key,
- caml_ephe_set_key:caml_ephe_set_key,
- caml_ephe_unset_key:caml_ephe_unset_key,
- caml_ephe_blit_data:caml_ephe_blit_data,
- caml_ephe_get_data:caml_ephe_get_data,
- caml_ephe_get_data_copy:caml_ephe_get_data_copy,
- caml_ephe_set_data:caml_ephe_set_data,
- caml_ephe_unset_data:caml_ephe_unset_data,
- caml_ephe_check_data:caml_ephe_check_data,
- unix_gettimeofday:unix_gettimeofday,
- unix_time:unix_time,
- unix_gmtime:unix_gmtime,
- unix_localtime:unix_localtime,
- unix_mktime:unix_mktime,
- win_startup:win_startup,
- win_cleanup:win_cleanup,
- win_handle_fd:win_handle_fd,
- unix_isatty:unix_isatty,
- make_unix_err_args:make_unix_err_args,
- unix_stat:unix_stat,
- unix_stat_64:unix_stat_64,
- unix_lstat:unix_lstat,
- unix_lstat_64:unix_lstat_64,
- unix_mkdir:unix_mkdir,
- unix_rmdir:unix_rmdir,
- unix_symlink:unix_symlink,
- unix_readlink:unix_readlink,
- unix_unlink:unix_unlink,
- unix_getuid:unix_getuid,
- unix_getpwuid:unix_getpwuid,
- unix_has_symlink:unix_has_symlink,
- re_match:re_match,
- re_search_forward:re_search_forward,
- re_search_backward:re_search_backward,
- re_string_match:re_string_match,
- re_partial_match:re_partial_match,
- re_replacement_text:re_replacement_text,
- caml_raise_sys_error:caml_raise_sys_error,
- caml_sys_exit:caml_sys_exit,
- caml_is_special_exception:caml_is_special_exception,
- caml_format_exception:caml_format_exception,
- caml_fatal_uncaught_exception:caml_fatal_uncaught_exception,
- caml_set_static_env:caml_set_static_env,
- caml_sys_getenv:caml_sys_getenv,
- caml_sys_unsafe_getenv:caml_sys_unsafe_getenv,
- caml_argv:caml_argv,
- caml_executable_name:caml_executable_name,
- caml_sys_get_argv:caml_sys_get_argv,
- caml_sys_argv:caml_sys_argv,
- caml_sys_modify_argv:caml_sys_modify_argv,
- caml_sys_executable_name:caml_sys_executable_name,
- caml_sys_system_command:caml_sys_system_command,
- caml_sys_time:caml_sys_time,
- caml_sys_time_include_children:caml_sys_time_include_children,
- caml_sys_random_seed:caml_sys_random_seed,
- caml_sys_const_big_endian:caml_sys_const_big_endian,
- caml_sys_const_word_size:caml_sys_const_word_size,
- caml_sys_const_int_size:caml_sys_const_int_size,
- caml_sys_const_max_wosize:caml_sys_const_max_wosize,
- caml_sys_const_ostype_unix:caml_sys_const_ostype_unix,
- caml_sys_const_ostype_win32:caml_sys_const_ostype_win32,
- caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin,
- caml_sys_const_backend_type:caml_sys_const_backend_type,
- os_type:os_type,
- caml_sys_get_config:caml_sys_get_config,
- caml_sys_isatty:caml_sys_isatty,
- caml_runtime_variant:caml_runtime_variant,
- caml_runtime_parameters:caml_runtime_parameters,
- caml_install_signal_handler:caml_install_signal_handler,
- unix_inet_addr_of_string:unix_inet_addr_of_string,
- caml_runtime_warnings:caml_runtime_warnings,
- caml_ml_enable_runtime_warnings:caml_ml_enable_runtime_warnings,
- caml_ml_runtime_warnings_enabled:caml_ml_runtime_warnings_enabled,
- caml_spacetime_enabled:caml_spacetime_enabled,
- caml_sys_const_naked_pointers_checked:
- caml_sys_const_naked_pointers_checked,
- caml_register_channel_for_spacetime:caml_register_channel_for_spacetime,
- caml_spacetime_only_works_for_native_code:
- caml_spacetime_only_works_for_native_code,
- caml_call_gen:caml_call_gen,
- caml_named_values:caml_named_values,
- caml_register_named_value:caml_register_named_value,
- caml_named_value:caml_named_value,
- caml_global_data:caml_global_data,
- caml_register_global:caml_register_global,
- caml_get_global_data:caml_get_global_data,
- caml_is_printable:caml_is_printable,
- caml_parse_engine:caml_parse_engine,
- caml_set_parser_trace:caml_set_parser_trace,
- caml_update_dummy:caml_update_dummy,
- caml_obj_is_block:caml_obj_is_block,
- caml_obj_tag:caml_obj_tag,
- caml_obj_set_tag:caml_obj_set_tag,
- caml_obj_block:caml_obj_block,
- caml_obj_with_tag:caml_obj_with_tag,
- caml_obj_dup:caml_obj_dup,
- caml_obj_truncate:caml_obj_truncate,
- caml_obj_make_forward:caml_obj_make_forward,
- caml_lazy_make_forward:caml_lazy_make_forward,
- caml_get_public_method:caml_get_public_method,
- caml_oo_last_id:caml_oo_last_id,
- caml_set_oo_id:caml_set_oo_id,
- caml_fresh_oo_id:caml_fresh_oo_id,
- caml_obj_raw_field:caml_obj_raw_field,
- caml_obj_set_raw_field:caml_obj_set_raw_field,
- caml_obj_reachable_words:caml_obj_reachable_words,
- caml_obj_add_offset:caml_obj_add_offset,
- initialize_nat:initialize_nat,
- MlNat:MlNat,
- caml_hash_nat:caml_hash_nat,
- nat_of_array:nat_of_array,
- create_nat:create_nat,
- set_to_zero_nat:set_to_zero_nat,
- blit_nat:blit_nat,
- set_digit_nat:set_digit_nat,
- nth_digit_nat:nth_digit_nat,
- set_digit_nat_native:set_digit_nat_native,
- nth_digit_nat_native:nth_digit_nat_native,
- num_digits_nat:num_digits_nat,
- num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit,
- is_digit_int:is_digit_int,
- is_digit_zero:is_digit_zero,
- is_digit_odd:is_digit_odd,
- incr_nat:incr_nat,
- add_nat:add_nat,
- complement_nat:complement_nat,
- decr_nat:decr_nat,
- sub_nat:sub_nat,
- mult_digit_nat:mult_digit_nat,
- mult_nat:mult_nat,
- square_nat:square_nat,
- shift_left_nat:shift_left_nat,
- div_helper:div_helper,
- div_digit_nat:div_digit_nat,
- div_nat:div_nat,
- shift_right_nat:shift_right_nat,
- compare_digits_nat:compare_digits_nat,
- compare_nat:compare_nat,
- compare_nat_real:compare_nat_real,
- land_digit_nat:land_digit_nat,
- lor_digit_nat:lor_digit_nat,
- lxor_digit_nat:lxor_digit_nat,
- serialize_nat:serialize_nat,
- deserialize_nat:deserialize_nat,
- caml_str_repeat:caml_str_repeat,
- caml_subarray_to_jsbytes:caml_subarray_to_jsbytes,
- caml_utf8_of_utf16:caml_utf8_of_utf16,
- caml_utf16_of_utf8:caml_utf16_of_utf8,
- jsoo_is_ascii:jsoo_is_ascii,
- caml_bytes_unsafe_get:caml_bytes_unsafe_get,
- caml_bytes_unsafe_set:caml_bytes_unsafe_set,
- caml_string_bound_error:caml_string_bound_error,
- caml_bytes_bound_error:caml_bytes_bound_error,
- caml_string_get:caml_string_get,
- caml_string_get16:caml_string_get16,
- caml_bytes_get16:caml_bytes_get16,
- caml_string_get32:caml_string_get32,
- caml_bytes_get32:caml_bytes_get32,
- caml_string_get64:caml_string_get64,
- caml_bytes_get64:caml_bytes_get64,
- caml_bytes_get:caml_bytes_get,
- caml_string_set:caml_string_set,
- caml_bytes_set16:caml_bytes_set16,
- caml_string_set16:caml_string_set16,
- caml_bytes_set32:caml_bytes_set32,
- caml_string_set32:caml_string_set32,
- caml_bytes_set64:caml_bytes_set64,
- caml_string_set64:caml_string_set64,
- caml_bytes_set:caml_bytes_set,
- caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring,
- MlBytes:MlBytes,
- caml_convert_string_to_bytes:caml_convert_string_to_bytes,
- caml_convert_bytes_to_array:caml_convert_bytes_to_array,
- caml_array_of_bytes:caml_array_of_bytes,
- caml_array_of_string:caml_array_of_string,
- caml_create_string:caml_create_string,
- caml_create_bytes:caml_create_bytes,
- caml_string_of_array:caml_string_of_array,
- caml_bytes_of_array:caml_bytes_of_array,
- caml_bytes_compare:caml_bytes_compare,
- caml_bytes_equal:caml_bytes_equal,
- caml_string_notequal:caml_string_notequal,
- caml_bytes_notequal:caml_bytes_notequal,
- caml_bytes_lessequal:caml_bytes_lessequal,
- caml_bytes_lessthan:caml_bytes_lessthan,
- caml_string_greaterequal:caml_string_greaterequal,
- caml_bytes_greaterequal:caml_bytes_greaterequal,
- caml_string_greaterthan:caml_string_greaterthan,
- caml_bytes_greaterthan:caml_bytes_greaterthan,
- caml_fill_bytes:caml_fill_bytes,
- caml_fill_string:caml_fill_string,
- caml_blit_bytes:caml_blit_bytes,
- caml_blit_string:caml_blit_string,
- caml_ml_bytes_length:caml_ml_bytes_length,
- caml_bytes_of_jsbytes:caml_bytes_of_jsbytes,
- caml_string_unsafe_get:caml_string_unsafe_get,
- caml_string_unsafe_set:caml_string_unsafe_set,
- caml_ml_string_length:caml_ml_string_length,
- caml_string_compare:caml_string_compare,
- caml_string_equal:caml_string_equal,
- caml_string_lessequal:caml_string_lessequal,
- caml_string_lessthan:caml_string_lessthan,
- caml_string_of_bytes:caml_string_of_bytes,
- caml_bytes_of_string:caml_bytes_of_string,
- caml_string_of_jsbytes:caml_string_of_jsbytes,
- caml_jsbytes_of_string:caml_jsbytes_of_string,
- caml_jsstring_of_string:caml_jsstring_of_string,
- caml_string_of_jsstring:caml_string_of_jsstring,
- caml_is_ml_bytes:caml_is_ml_bytes,
- caml_ml_bytes_content:caml_ml_bytes_content,
- caml_is_ml_string:caml_is_ml_string,
- caml_js_to_byte_string:caml_js_to_byte_string,
- caml_new_string:caml_new_string,
- caml_js_from_string:caml_js_from_string,
- caml_to_js_string:caml_to_js_string,
- caml_js_to_string:caml_js_to_string,
- caml_md5_chan:caml_md5_chan,
- caml_md5_string:caml_md5_string,
- caml_md5_bytes:caml_md5_bytes,
- caml_marshal_constants:caml_marshal_constants,
- MlStringReader:MlStringReader,
- BigStringReader:BigStringReader,
- caml_float_of_bytes:caml_float_of_bytes,
- caml_input_value_from_string:caml_input_value_from_string,
- caml_input_value_from_bytes:caml_input_value_from_bytes,
- caml_int64_unmarshal:caml_int64_unmarshal,
- caml_int64_marshal:caml_int64_marshal,
- caml_int32_unmarshal:caml_int32_unmarshal,
- caml_nativeint_unmarshal:caml_nativeint_unmarshal,
- caml_custom_ops:caml_custom_ops,
- caml_input_value_from_reader:caml_input_value_from_reader,
- caml_marshal_data_size:caml_marshal_data_size,
- MlObjectTable:MlObjectTable,
- caml_legacy_custom_code:caml_legacy_custom_code,
- caml_output_val:caml_output_val,
- caml_output_value_to_string:caml_output_value_to_string,
- caml_output_value_to_bytes:caml_output_value_to_bytes,
- caml_output_value_to_buffer:caml_output_value_to_buffer,
- caml_lex_array:caml_lex_array,
- caml_lex_engine:caml_lex_engine,
- caml_new_lex_engine:caml_new_lex_engine,
- caml_js_on_ie:caml_js_on_ie,
- caml_js_html_escape:caml_js_html_escape,
- caml_js_html_entities:caml_js_html_entities,
- caml_js_get_console:caml_js_get_console,
- caml_xmlhttprequest_create:caml_xmlhttprequest_create,
- caml_js_error_of_exception:caml_js_error_of_exception,
- caml_js_pure_expr:caml_js_pure_expr,
- caml_js_set:caml_js_set,
- caml_js_get:caml_js_get,
- caml_js_delete:caml_js_delete,
- caml_js_instanceof:caml_js_instanceof,
- caml_js_typeof:caml_js_typeof,
- caml_trampoline:caml_trampoline,
- caml_trampoline_return:caml_trampoline_return,
- js_print_stdout:js_print_stdout,
- js_print_stderr:js_print_stderr,
- caml_is_js:caml_is_js,
- caml_wrap_exception:caml_wrap_exception,
- caml_exn_with_js_backtrace:caml_exn_with_js_backtrace,
- caml_js_error_option_of_exception:caml_js_error_option_of_exception,
- caml_js_from_bool:caml_js_from_bool,
- caml_js_to_bool:caml_js_to_bool,
- caml_js_from_float:caml_js_from_float,
- caml_js_to_float:caml_js_to_float,
- caml_js_from_array:caml_js_from_array,
- caml_js_to_array:caml_js_to_array,
- caml_list_of_js_array:caml_list_of_js_array,
- caml_list_to_js_array:caml_list_to_js_array,
- caml_js_var:caml_js_var,
- caml_js_call:caml_js_call,
- caml_js_fun_call:caml_js_fun_call,
- caml_js_meth_call:caml_js_meth_call,
- caml_js_new:caml_js_new,
- caml_ojs_new_arr:caml_ojs_new_arr,
- caml_js_wrap_callback:caml_js_wrap_callback,
- caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments,
- caml_js_wrap_callback_strict:caml_js_wrap_callback_strict,
- caml_js_wrap_meth_callback:caml_js_wrap_meth_callback,
- caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments,
- caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict,
- caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe,
- caml_js_equals:caml_js_equals,
- caml_js_eval_string:caml_js_eval_string,
- caml_js_expr:caml_js_expr,
- caml_pure_js_expr:caml_pure_js_expr,
- caml_js_object:caml_js_object,
- caml_sys_close:caml_sys_close,
- caml_std_output:caml_std_output,
- caml_sys_open:caml_sys_open,
- caml_ml_set_channel_name:caml_ml_set_channel_name,
- caml_ml_channels:caml_ml_channels,
- caml_ml_out_channels_list:caml_ml_out_channels_list,
- caml_ml_open_descriptor_out:caml_ml_open_descriptor_out,
- caml_ml_open_descriptor_in:caml_ml_open_descriptor_in,
- caml_channel_descriptor:caml_channel_descriptor,
- win_filedescr_of_channel:win_filedescr_of_channel,
- caml_ml_set_binary_mode:caml_ml_set_binary_mode,
- caml_ml_close_channel:caml_ml_close_channel,
- caml_ml_channel_size:caml_ml_channel_size,
- caml_ml_channel_size_64:caml_ml_channel_size_64,
- caml_ml_set_channel_output:caml_ml_set_channel_output,
- caml_ml_set_channel_refill:caml_ml_set_channel_refill,
- caml_ml_refill_input:caml_ml_refill_input,
- caml_ml_may_refill_input:caml_ml_may_refill_input,
- caml_ml_input:caml_ml_input,
- caml_input_value:caml_input_value,
- caml_ml_input_char:caml_ml_input_char,
- caml_ml_input_int:caml_ml_input_int,
- caml_ml_seek_in:caml_ml_seek_in,
- caml_ml_seek_in_64:caml_ml_seek_in_64,
- caml_ml_pos_in:caml_ml_pos_in,
- caml_ml_pos_in_64:caml_ml_pos_in_64,
- caml_ml_input_scan_line:caml_ml_input_scan_line,
- caml_ml_flush:caml_ml_flush,
- caml_ml_output_bytes:caml_ml_output_bytes,
- caml_ml_output:caml_ml_output,
- caml_ml_output_char:caml_ml_output_char,
- caml_output_value:caml_output_value,
- caml_ml_seek_out:caml_ml_seek_out,
- caml_ml_seek_out_64:caml_ml_seek_out_64,
- caml_ml_pos_out:caml_ml_pos_out,
- caml_ml_pos_out_64:caml_ml_pos_out_64,
- caml_ml_output_int:caml_ml_output_int,
- caml_ml_is_buffered:caml_ml_is_buffered,
- caml_ml_set_buffered:caml_ml_set_buffered,
- caml_format_int:caml_format_int,
- caml_parse_sign_and_base:caml_parse_sign_and_base,
- caml_parse_digit:caml_parse_digit,
- caml_int_of_string:caml_int_of_string,
- caml_mul:caml_mul,
- caml_div:caml_div,
- caml_mod:caml_mod,
- caml_bswap16:caml_bswap16,
- caml_int32_bswap:caml_int32_bswap,
- caml_int64_bswap:caml_int64_bswap,
- caml_int64_offset:caml_int64_offset,
- MlInt64:MlInt64,
- caml_int64_ult:caml_int64_ult,
- caml_int64_compare:caml_int64_compare,
- caml_int64_neg:caml_int64_neg,
- caml_int64_add:caml_int64_add,
- caml_int64_sub:caml_int64_sub,
- caml_int64_mul:caml_int64_mul,
- caml_int64_is_zero:caml_int64_is_zero,
- caml_int64_is_negative:caml_int64_is_negative,
- caml_int64_and:caml_int64_and,
- caml_int64_or:caml_int64_or,
- caml_int64_xor:caml_int64_xor,
- caml_int64_shift_left:caml_int64_shift_left,
- caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned,
- caml_int64_shift_right:caml_int64_shift_right,
- caml_int64_div:caml_int64_div,
- caml_int64_mod:caml_int64_mod,
- caml_int64_of_int32:caml_int64_of_int32,
- caml_int64_to_int32:caml_int64_to_int32,
- caml_int64_to_float:caml_int64_to_float,
- caml_int64_of_float:caml_int64_of_float,
- caml_int64_format:caml_int64_format,
- caml_int64_of_string:caml_int64_of_string,
- caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi,
- caml_int64_create_lo_hi:caml_int64_create_lo_hi,
- caml_int64_lo32:caml_int64_lo32,
- caml_int64_hi32:caml_int64_hi32,
- caml_int64_of_bytes:caml_int64_of_bytes,
- caml_int64_to_bytes:caml_int64_to_bytes,
- caml_int64_hash:caml_int64_hash,
- jsoo_floor_log2:jsoo_floor_log2,
- caml_int64_bits_of_float:caml_int64_bits_of_float,
- caml_int32_bits_of_float:caml_int32_bits_of_float,
- caml_hexstring_of_float:caml_hexstring_of_float,
- caml_int64_float_of_bits:caml_int64_float_of_bits,
- caml_nextafter_float:caml_nextafter_float,
- caml_trunc_float:caml_trunc_float,
- caml_int32_float_of_bits:caml_int32_float_of_bits,
- caml_classify_float:caml_classify_float,
- caml_modf_float:caml_modf_float,
- caml_ldexp_float:caml_ldexp_float,
- caml_frexp_float:caml_frexp_float,
- caml_float_compare:caml_float_compare,
- caml_copysign_float:caml_copysign_float,
- caml_signbit_float:caml_signbit_float,
- caml_expm1_float:caml_expm1_float,
- caml_exp2_float:caml_exp2_float,
- caml_log1p_float:caml_log1p_float,
- caml_log2_float:caml_log2_float,
- caml_hypot_float:caml_hypot_float,
- caml_log10_float:caml_log10_float,
- caml_cosh_float:caml_cosh_float,
- caml_acosh_float:caml_acosh_float,
- caml_sinh_float:caml_sinh_float,
- caml_asinh_float:caml_asinh_float,
- caml_tanh_float:caml_tanh_float,
- caml_atanh_float:caml_atanh_float,
- caml_round_float:caml_round_float,
- caml_cbrt_float:caml_cbrt_float,
- caml_erf_float:caml_erf_float,
- caml_erfc_float:caml_erfc_float,
- caml_fma_float:caml_fma_float,
- caml_format_float:caml_format_float,
- caml_float_of_string:caml_float_of_string,
- caml_hash_univ_param:caml_hash_univ_param,
- caml_hash_mix_int:caml_hash_mix_int,
- caml_hash_mix_final:caml_hash_mix_final,
- caml_hash_mix_float:caml_hash_mix_float,
- caml_hash_mix_int64:caml_hash_mix_int64,
- caml_hash_mix_jsbytes:caml_hash_mix_jsbytes,
- caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr,
- caml_hash_mix_bytes:caml_hash_mix_bytes,
- caml_hash_mix_string:caml_hash_mix_string,
- caml_hash:caml_hash,
- caml_gr_state:caml_gr_state,
- caml_gr_state_get:caml_gr_state_get,
- caml_gr_state_set:caml_gr_state_set,
- caml_gr_open_graph:caml_gr_open_graph,
- caml_gr_state_init:caml_gr_state_init,
- caml_gr_state_create:caml_gr_state_create,
- caml_gr_doc_of_state:caml_gr_doc_of_state,
- caml_gr_close_graph:caml_gr_close_graph,
- caml_gr_set_window_title:caml_gr_set_window_title,
- caml_gr_resize_window:caml_gr_resize_window,
- caml_gr_clear_graph:caml_gr_clear_graph,
- caml_gr_size_x:caml_gr_size_x,
- caml_gr_size_y:caml_gr_size_y,
- caml_gr_set_color:caml_gr_set_color,
- caml_gr_plot:caml_gr_plot,
- caml_gr_point_color:caml_gr_point_color,
- caml_gr_moveto:caml_gr_moveto,
- caml_gr_current_x:caml_gr_current_x,
- caml_gr_current_y:caml_gr_current_y,
- caml_gr_lineto:caml_gr_lineto,
- caml_gr_draw_rect:caml_gr_draw_rect,
- caml_gr_arc_aux:caml_gr_arc_aux,
- caml_gr_draw_arc:caml_gr_draw_arc,
- caml_gr_set_line_width:caml_gr_set_line_width,
- caml_gr_fill_rect:caml_gr_fill_rect,
- caml_gr_fill_poly:caml_gr_fill_poly,
- caml_gr_fill_arc:caml_gr_fill_arc,
- caml_gr_draw_str:caml_gr_draw_str,
- caml_gr_draw_char:caml_gr_draw_char,
- caml_gr_draw_string:caml_gr_draw_string,
- caml_gr_set_font:caml_gr_set_font,
- caml_gr_set_text_size:caml_gr_set_text_size,
- caml_gr_text_size:caml_gr_text_size,
- caml_gr_make_image:caml_gr_make_image,
- caml_gr_dump_image:caml_gr_dump_image,
- caml_gr_draw_image:caml_gr_draw_image,
- caml_gr_create_image:caml_gr_create_image,
- caml_gr_blit_image:caml_gr_blit_image,
- caml_gr_sigio_handler:caml_gr_sigio_handler,
- caml_gr_sigio_signal:caml_gr_sigio_signal,
- caml_gr_wait_event:caml_gr_wait_event,
- caml_gr_synchronize:caml_gr_synchronize,
- caml_gr_remember_mode:caml_gr_remember_mode,
- caml_gr_display_mode:caml_gr_display_mode,
- caml_gr_window_id:caml_gr_window_id,
- caml_gr_open_subwindow:caml_gr_open_subwindow,
- caml_gr_close_subwindow:caml_gr_close_subwindow,
- caml_gc_minor:caml_gc_minor,
- caml_gc_major:caml_gc_major,
- caml_gc_full_major:caml_gc_full_major,
- caml_gc_compaction:caml_gc_compaction,
- caml_gc_counters:caml_gc_counters,
- caml_gc_quick_stat:caml_gc_quick_stat,
- caml_gc_stat:caml_gc_stat,
- caml_gc_set:caml_gc_set,
- caml_gc_get:caml_gc_get,
- caml_memprof_set:caml_memprof_set,
- caml_final_register:caml_final_register,
- caml_final_register_called_without_value:
- caml_final_register_called_without_value,
- caml_final_release:caml_final_release,
- caml_memprof_start:caml_memprof_start,
- caml_memprof_stop:caml_memprof_stop,
- caml_eventlog_resume:caml_eventlog_resume,
- caml_eventlog_pause:caml_eventlog_pause,
- caml_gc_huge_fallback_count:caml_gc_huge_fallback_count,
- caml_gc_major_slice:caml_gc_major_slice,
- caml_gc_minor_words:caml_gc_minor_words,
- caml_get_minor_free:caml_get_minor_free,
- caml_get_major_bucket:caml_get_major_bucket,
- caml_get_major_credit:caml_get_major_credit,
- fs_node_supported:fs_node_supported,
- MlNodeDevice:MlNodeDevice,
- MlNodeFile:MlNodeFile,
- MlFakeDevice:MlFakeDevice,
- MlFakeFile:MlFakeFile,
- caml_trailing_slash:caml_trailing_slash,
- caml_current_dir:caml_current_dir,
- caml_get_root:caml_get_root,
- caml_root:caml_root,
- MlFile:MlFile,
- path_is_absolute:path_is_absolute,
- caml_make_path:caml_make_path,
- jsoo_mount_point:jsoo_mount_point,
- caml_list_mount_point:caml_list_mount_point,
- resolve_fs_device:resolve_fs_device,
- caml_mount_autoload:caml_mount_autoload,
- caml_unmount:caml_unmount,
- caml_sys_getcwd:caml_sys_getcwd,
- caml_sys_chdir:caml_sys_chdir,
- caml_raise_no_such_file:caml_raise_no_such_file,
- caml_raise_not_a_dir:caml_raise_not_a_dir,
- caml_sys_file_exists:caml_sys_file_exists,
- caml_sys_read_directory:caml_sys_read_directory,
- caml_sys_remove:caml_sys_remove,
- caml_sys_is_directory:caml_sys_is_directory,
- caml_sys_rename:caml_sys_rename,
- caml_sys_mkdir:caml_sys_mkdir,
- caml_sys_rmdir:caml_sys_rmdir,
- caml_ba_map_file:caml_ba_map_file,
- caml_ba_map_file_bytecode:caml_ba_map_file_bytecode,
- jsoo_create_file_extern:jsoo_create_file_extern,
- caml_fs_init:caml_fs_init,
- caml_create_file:caml_create_file,
- jsoo_create_file:jsoo_create_file,
- caml_read_file_content:caml_read_file_content,
- caml_parse_format:caml_parse_format,
- caml_finish_formatting:caml_finish_formatting,
- caml_raise_constant:caml_raise_constant,
- caml_return_exn_constant:caml_return_exn_constant,
- caml_raise_with_arg:caml_raise_with_arg,
- caml_raise_with_args:caml_raise_with_args,
- caml_raise_with_string:caml_raise_with_string,
- caml_failwith:caml_failwith,
- caml_invalid_argument:caml_invalid_argument,
- caml_raise_end_of_file:caml_raise_end_of_file,
- caml_raise_zero_divide:caml_raise_zero_divide,
- caml_raise_not_found:caml_raise_not_found,
- caml_array_bound_error:caml_array_bound_error,
- caml_compare_val_tag:caml_compare_val_tag,
- caml_compare_val_get_custom:caml_compare_val_get_custom,
- caml_compare_val_number_custom:caml_compare_val_number_custom,
- caml_compare_val:caml_compare_val,
- caml_compare:caml_compare,
- caml_int_compare:caml_int_compare,
- caml_equal:caml_equal,
- caml_notequal:caml_notequal,
- caml_greaterequal:caml_greaterequal,
- caml_greaterthan:caml_greaterthan,
- caml_lessequal:caml_lessequal,
- caml_lessthan:caml_lessthan,
- caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring,
- caml_blit_bigstring_to_string:caml_blit_bigstring_to_string,
- caml_blit_string_to_bigstring:caml_blit_string_to_bigstring,
- caml_hash_mix_bigstring:caml_hash_mix_bigstring,
- bigstring_to_array_buffer:bigstring_to_array_buffer,
- bigstring_to_typed_array:bigstring_to_typed_array,
- bigstring_of_array_buffer:bigstring_of_array_buffer,
- bigstring_of_typed_array:bigstring_of_typed_array,
- caml_bigstring_memcmp:caml_bigstring_memcmp,
- caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba,
- caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba,
- caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba,
- caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes,
- caml_ba_init:caml_ba_init,
- caml_ba_get_size:caml_ba_get_size,
- caml_ba_get_size_per_element:caml_ba_get_size_per_element,
- caml_ba_create_buffer:caml_ba_create_buffer,
- caml_ba_custom_name:caml_ba_custom_name,
- Ml_Bigarray:Ml_Bigarray,
- Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1,
- caml_ba_compare:caml_ba_compare,
- caml_ba_create_unsafe:caml_ba_create_unsafe,
- caml_ba_create:caml_ba_create,
- caml_ba_change_layout:caml_ba_change_layout,
- caml_ba_kind:caml_ba_kind,
- caml_ba_layout:caml_ba_layout,
- caml_ba_num_dims:caml_ba_num_dims,
- caml_ba_dim:caml_ba_dim,
- caml_ba_dim_1:caml_ba_dim_1,
- caml_ba_dim_2:caml_ba_dim_2,
- caml_ba_dim_3:caml_ba_dim_3,
- caml_ba_get_generic:caml_ba_get_generic,
- caml_ba_uint8_get16:caml_ba_uint8_get16,
- caml_ba_uint8_get32:caml_ba_uint8_get32,
- caml_ba_uint8_get64:caml_ba_uint8_get64,
- caml_ba_get_1:caml_ba_get_1,
- caml_ba_get_2:caml_ba_get_2,
- caml_ba_get_3:caml_ba_get_3,
- caml_ba_set_generic:caml_ba_set_generic,
- caml_ba_uint8_set16:caml_ba_uint8_set16,
- caml_ba_uint8_set32:caml_ba_uint8_set32,
- caml_ba_uint8_set64:caml_ba_uint8_set64,
- caml_ba_set_1:caml_ba_set_1,
- caml_ba_set_2:caml_ba_set_2,
- caml_ba_set_3:caml_ba_set_3,
- caml_ba_fill:caml_ba_fill,
- caml_ba_blit:caml_ba_blit,
- caml_ba_sub:caml_ba_sub,
- caml_ba_slice:caml_ba_slice,
- caml_ba_reshape:caml_ba_reshape,
- caml_ba_serialize:caml_ba_serialize,
- caml_ba_deserialize:caml_ba_deserialize,
- caml_ba_create_from:caml_ba_create_from,
- caml_ba_hash:caml_ba_hash,
- caml_ba_to_typed_array:caml_ba_to_typed_array,
- caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array,
- caml_ba_from_typed_array:caml_ba_from_typed_array,
- caml_ml_debug_info_status:caml_ml_debug_info_status,
- caml_backtrace_status:caml_backtrace_status,
- caml_get_exception_backtrace:caml_get_exception_backtrace,
- caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace,
- caml_record_backtrace:caml_record_backtrace,
- caml_convert_raw_backtrace:caml_convert_raw_backtrace,
- caml_raw_backtrace_length:caml_raw_backtrace_length,
- caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot,
- caml_raw_backtrace_slot:caml_raw_backtrace_slot,
- caml_restore_raw_backtrace:caml_restore_raw_backtrace,
- caml_get_current_callstack:caml_get_current_callstack,
- caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot,
- caml_array_sub:caml_array_sub,
- caml_array_append:caml_array_append,
- caml_array_concat:caml_array_concat,
- caml_array_blit:caml_array_blit,
- caml_floatarray_blit:caml_floatarray_blit,
- caml_array_set:caml_array_set,
- caml_array_get:caml_array_get,
- caml_array_fill:caml_array_fill,
- caml_check_bound:caml_check_bound,
- caml_make_vect:caml_make_vect,
- caml_make_float_vect:caml_make_float_vect,
- caml_floatarray_create:caml_floatarray_create};
- caml_fs_init();
- caml_register_global
- (0,[248,caml_string_of_jsbytes("Out_of_memory"),-1],"Out_of_memory");
- caml_register_global
- (1,[248,caml_string_of_jsbytes("Sys_error"),-2],"Sys_error");
- caml_register_global
- (2,[248,caml_string_of_jsbytes("Failure"),-3],"Failure");
- caml_register_global
- (3,
- [248,caml_string_of_jsbytes("Invalid_argument"),-4],
- "Invalid_argument");
- caml_register_global
- (4,[248,caml_string_of_jsbytes("End_of_file"),-5],"End_of_file");
- caml_register_global
- (5,
- [248,caml_string_of_jsbytes("Division_by_zero"),-6],
- "Division_by_zero");
- caml_register_global
- (6,[248,caml_string_of_jsbytes("Not_found"),-7],"Not_found");
- caml_register_global
- (7,[248,caml_string_of_jsbytes("Match_failure"),-8],"Match_failure");
- caml_register_global
- (8,[248,caml_string_of_jsbytes("Stack_overflow"),-9],"Stack_overflow");
- caml_register_global
- (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-10],"Sys_blocked_io");
- caml_register_global
- (10,[248,caml_string_of_jsbytes("Assert_failure"),-11],"Assert_failure");
- caml_register_global
- (11,
- [248,caml_string_of_jsbytes("Undefined_recursive_module"),-12],
- "Undefined_recursive_module");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/stdlib/stdlib.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_array_concat=runtime.caml_array_concat,
- caml_array_get=runtime.caml_array_get,
- caml_array_set=runtime.caml_array_set,
- caml_array_sub=runtime.caml_array_sub,
- caml_ba_change_layout=runtime.caml_ba_change_layout,
- caml_ba_create=runtime.caml_ba_create,
- caml_ba_dim_1=runtime.caml_ba_dim_1,
- caml_ba_dim_2=runtime.caml_ba_dim_2,
- caml_ba_kind=runtime.caml_ba_kind,
- caml_ba_num_dims=runtime.caml_ba_num_dims,
- caml_ba_reshape=runtime.caml_ba_reshape,
- caml_ba_set_1=runtime.caml_ba_set_1,
- caml_ba_set_2=runtime.caml_ba_set_2,
- caml_ba_set_3=runtime.caml_ba_set_3,
- caml_ba_set_generic=runtime.caml_ba_set_generic,
- caml_ba_slice=runtime.caml_ba_slice,
- caml_blit_bytes=runtime.caml_blit_bytes,
- caml_blit_string=runtime.caml_blit_string,
- caml_bswap16=runtime.caml_bswap16,
- caml_bytes_get=runtime.caml_bytes_get,
- caml_bytes_get16=runtime.caml_bytes_get16,
- caml_bytes_get32=runtime.caml_bytes_get32,
- caml_bytes_get64=runtime.caml_bytes_get64,
- caml_bytes_of_string=runtime.caml_bytes_of_string,
- caml_bytes_set=runtime.caml_bytes_set,
- caml_bytes_set16=runtime.caml_bytes_set16,
- caml_bytes_set32=runtime.caml_bytes_set32,
- caml_bytes_set64=runtime.caml_bytes_set64,
- caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
- caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
- caml_check_bound=runtime.caml_check_bound,
- caml_compare=runtime.caml_compare,
- caml_create_bytes=runtime.caml_create_bytes,
- caml_div=runtime.caml_div,
- caml_ephe_set_key=runtime.caml_ephe_set_key,
- caml_ephe_unset_key=runtime.caml_ephe_unset_key,
- caml_equal=runtime.caml_equal,
- caml_fill_bytes=runtime.caml_fill_bytes,
- caml_float_compare=runtime.caml_float_compare,
- caml_float_of_string=runtime.caml_float_of_string,
- caml_floatarray_blit=runtime.caml_floatarray_blit,
- caml_floatarray_create=runtime.caml_floatarray_create,
- caml_format_float=runtime.caml_format_float,
- caml_format_int=runtime.caml_format_int,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace,
- caml_get_public_method=runtime.caml_get_public_method,
- caml_greaterequal=runtime.caml_greaterequal,
- caml_greaterthan=runtime.caml_greaterthan,
- caml_hash=runtime.caml_hash,
- caml_input_value=runtime.caml_input_value,
- caml_int32_bswap=runtime.caml_int32_bswap,
- caml_int64_add=runtime.caml_int64_add,
- caml_int64_bswap=runtime.caml_int64_bswap,
- caml_int64_compare=runtime.caml_int64_compare,
- caml_int64_float_of_bits=runtime.caml_int64_float_of_bits,
- caml_int64_format=runtime.caml_int64_format,
- caml_int64_mul=runtime.caml_int64_mul,
- caml_int64_of_int32=runtime.caml_int64_of_int32,
- caml_int64_of_string=runtime.caml_int64_of_string,
- caml_int64_or=runtime.caml_int64_or,
- caml_int64_shift_left=runtime.caml_int64_shift_left,
- caml_int64_sub=runtime.caml_int64_sub,
- caml_int_compare=runtime.caml_int_compare,
- caml_int_of_string=runtime.caml_int_of_string,
- caml_lessequal=runtime.caml_lessequal,
- caml_lessthan=runtime.caml_lessthan,
- caml_make_vect=runtime.caml_make_vect,
- caml_marshal_data_size=runtime.caml_marshal_data_size,
- caml_md5_string=runtime.caml_md5_string,
- caml_ml_bytes_length=runtime.caml_ml_bytes_length,
- caml_ml_channel_size=runtime.caml_ml_channel_size,
- caml_ml_channel_size_64=runtime.caml_ml_channel_size_64,
- caml_ml_close_channel=runtime.caml_ml_close_channel,
- caml_ml_flush=runtime.caml_ml_flush,
- caml_ml_input=runtime.caml_ml_input,
- caml_ml_input_char=runtime.caml_ml_input_char,
- caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in,
- caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out,
- caml_ml_output=runtime.caml_ml_output,
- caml_ml_output_bytes=runtime.caml_ml_output_bytes,
- caml_ml_output_char=runtime.caml_ml_output_char,
- caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode,
- caml_ml_set_channel_name=runtime.caml_ml_set_channel_name,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_mod=runtime.caml_mod,
- caml_mul=runtime.caml_mul,
- caml_nextafter_float=runtime.caml_nextafter_float,
- caml_notequal=runtime.caml_notequal,
- caml_obj_block=runtime.caml_obj_block,
- caml_obj_make_forward=runtime.caml_obj_make_forward,
- caml_obj_tag=runtime.caml_obj_tag,
- caml_output_value=runtime.caml_output_value,
- caml_register_global=runtime.caml_register_global,
- caml_register_named_value=runtime.caml_register_named_value,
- caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace,
- caml_set_oo_id=runtime.caml_set_oo_id,
- caml_signbit_float=runtime.caml_signbit_float,
- caml_string_compare=runtime.caml_string_compare,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_get=runtime.caml_string_get,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_bytes=runtime.caml_string_of_bytes,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_string_unsafe_get=runtime.caml_string_unsafe_get,
- caml_sys_argv=runtime.caml_sys_argv,
- caml_sys_getenv=runtime.caml_sys_getenv,
- caml_sys_open=runtime.caml_sys_open,
- caml_sys_random_seed=runtime.caml_sys_random_seed,
- caml_trampoline=runtime.caml_trampoline,
- caml_trampoline_return=runtime.caml_trampoline_return,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
- {return f.length == 7
- ?f(a0,a1,a2,a3,a4,a5,a6)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
- var
- global_data=runtime.caml_get_global_data(),
- cst$0=caml_string_of_jsbytes("%,"),
- cst_really_input=caml_string_of_jsbytes("really_input"),
- cst_input=caml_string_of_jsbytes("input"),
- cst_output_substring=caml_string_of_jsbytes("output_substring"),
- cst_output=caml_string_of_jsbytes("output"),
- cst_12g=caml_string_of_jsbytes("%.12g"),
- cst=caml_string_of_jsbytes("."),
- cst_false$1=caml_string_of_jsbytes("false"),
- cst_true$1=caml_string_of_jsbytes("true"),
- cst_false$0=caml_string_of_jsbytes("false"),
- cst_true$0=caml_string_of_jsbytes("true"),
- cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"),
- cst_true=caml_string_of_jsbytes("true"),
- cst_false=caml_string_of_jsbytes("false"),
- cst_char_of_int=caml_string_of_jsbytes("char_of_int"),
- cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"),
- cst_Stdlib_Pervasives_Exit=
- caml_string_of_jsbytes("Stdlib.Pervasives.Exit"),
- cst_option_is_None=caml_string_of_jsbytes("option is None"),
- cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"),
- cst_result_is_Error=caml_string_of_jsbytes("result is Error _"),
- cst_true$2=caml_string_of_jsbytes("true"),
- cst_false$2=caml_string_of_jsbytes("false"),
- cst$1=caml_string_of_jsbytes("\\\\"),
- cst$2=caml_string_of_jsbytes("\\'"),
- cst_b=caml_string_of_jsbytes("\\b"),
- cst_t=caml_string_of_jsbytes("\\t"),
- cst_n=caml_string_of_jsbytes("\\n"),
- cst_r=caml_string_of_jsbytes("\\r"),
- cst_Char_chr=caml_string_of_jsbytes("Char.chr"),
- cst_is_not_a_latin1_character=
- caml_string_of_jsbytes(" is not a latin1 character"),
- cst_04X=caml_string_of_jsbytes("%04X"),
- cst_U=caml_string_of_jsbytes("U+"),
- cst_is_not_an_Unicode_scalar_v=
- caml_string_of_jsbytes(" is not an Unicode scalar value"),
- cst_X=caml_string_of_jsbytes("%X"),
- err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"),
- err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"),
- cst_Stdlib_Sys_Break=caml_string_of_jsbytes("Stdlib.Sys.Break"),
- ocaml_version=caml_string_of_jsbytes("4.13.1"),
- cst_List_map2=caml_string_of_jsbytes("List.map2"),
- cst_List_iter2=caml_string_of_jsbytes("List.iter2"),
- cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"),
- cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"),
- cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"),
- cst_List_exists2=caml_string_of_jsbytes("List.exists2"),
- cst_List_combine=caml_string_of_jsbytes("List.combine"),
- cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"),
- cst_List_init=caml_string_of_jsbytes("List.init"),
- cst_List_nth$0=caml_string_of_jsbytes("List.nth"),
- cst_nth=caml_string_of_jsbytes("nth"),
- cst_List_nth=caml_string_of_jsbytes("List.nth"),
- cst_tl=caml_string_of_jsbytes("tl"),
- cst_hd=caml_string_of_jsbytes("hd"),
- cst_Bytes_of_seq_cannot_grow_b=
- caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"),
- cst_String_rcontains_from_Byte=
- caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"),
- cst_String_contains_from_Bytes=
- caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"),
- cst_String_rindex_from_opt_Byt=
- caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"),
- cst_String_rindex_from_Bytes_r=
- caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"),
- cst_String_index_from_opt_Byte=
- caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"),
- cst_String_index_from_Bytes_in=
- caml_string_of_jsbytes("String.index_from / Bytes.index_from"),
- cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"),
- cst_String_blit_Bytes_blit_str=
- caml_string_of_jsbytes("String.blit / Bytes.blit_string"),
- cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"),
- cst_String_fill_Bytes_fill=
- caml_string_of_jsbytes("String.fill / Bytes.fill"),
- cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"),
- cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"),
- cst_String_rcontains_from_Byte$0=
- caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"),
- cst_String_contains_from_Bytes$0=
- caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"),
- cst_String_rindex_from_opt_Byt$0=
- caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"),
- cst_String_rindex_from_Bytes_r$0=
- caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"),
- cst_String_index_from_opt_Byte$0=
- caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"),
- cst_String_index_from_Bytes_in$0=
- caml_string_of_jsbytes("String.index_from / Bytes.index_from"),
- cst$4=caml_string_of_jsbytes(""),
- cst$3=caml_string_of_jsbytes(""),
- cst_String_concat=caml_string_of_jsbytes("String.concat"),
- empty$1=caml_string_of_jsbytes(""),
- cst$5=caml_string_of_jsbytes("()"),
- cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"),
- cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"),
- cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"),
- cst_Marshal_to_buffer_substrin=
- caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"),
- cst_Obj_Ephemeron_blit_key=
- caml_string_of_jsbytes("Obj.Ephemeron.blit_key"),
- cst_Obj_Ephemeron_check_key=
- caml_string_of_jsbytes("Obj.Ephemeron.check_key"),
- cst_Obj_Ephemeron_unset_key=
- caml_string_of_jsbytes("Obj.Ephemeron.unset_key"),
- cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"),
- cst_Obj_Ephemeron_get_key_copy=
- caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"),
- cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"),
- cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"),
- cst_Obj_extension_constructor$0=
- caml_string_of_jsbytes("Obj.extension_constructor"),
- cst_Obj_extension_constructor=
- caml_string_of_jsbytes("Obj.extension_constructor"),
- cst_Array_combine=caml_string_of_jsbytes("Array.combine"),
- cst_Array_exists2=caml_string_of_jsbytes("Array.exists2"),
- cst_Array_for_all2=caml_string_of_jsbytes("Array.for_all2"),
- cst_Array_map2_arrays_must_hav=
- caml_string_of_jsbytes("Array.map2: arrays must have the same length"),
- cst_Array_iter2_arrays_must_ha=
- caml_string_of_jsbytes("Array.iter2: arrays must have the same length"),
- cst_Array_blit=caml_string_of_jsbytes("Array.blit"),
- cst_Array_fill=caml_string_of_jsbytes("Array.fill"),
- cst_Array_sub=caml_string_of_jsbytes("Array.sub"),
- cst_Array_init=caml_string_of_jsbytes("Array.init"),
- cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"),
- cst_Float_Array_map2_arrays_mu=
- caml_string_of_jsbytes
- ("Float.Array.map2: arrays must have the same length"),
- cst_Float_Array_iter2_arrays_m=
- caml_string_of_jsbytes
- ("Float.Array.iter2: arrays must have the same length"),
- cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"),
- cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"),
- cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"),
- cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"),
- cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"),
- cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"),
- cst_Stdlib_Float_Array_Bottom=
- caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"),
- cst_d=caml_string_of_jsbytes("%d"),
- cst_d$0=caml_string_of_jsbytes("%d"),
- zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0),
- one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
- min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768),
- max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767),
- cst_d$1=caml_string_of_jsbytes("%d"),
- cst_Lexing_lex_refill_cannot_g=
- caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"),
- dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1],
- zero_pos=[0,caml_string_of_jsbytes(""),1,0,0],
- cst_syntax_error=caml_string_of_jsbytes("syntax error"),
- cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"),
- cst_Stdlib_Parsing_Parse_error=
- caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"),
- cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"),
- cst_Set_bal=caml_string_of_jsbytes("Set.bal"),
- cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"),
- cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"),
- cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"),
- cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"),
- cst_Map_bal=caml_string_of_jsbytes("Map.bal"),
- cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"),
- cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"),
- cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"),
- cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"),
- cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"),
- cst_CamlinternalLazy_Undefined=
- caml_string_of_jsbytes("CamlinternalLazy.Undefined"),
- cst_count=caml_string_of_jsbytes("{count = "),
- cst_data=caml_string_of_jsbytes("; data = "),
- cst$6=caml_string_of_jsbytes("}"),
- cst_Sempty=caml_string_of_jsbytes("Sempty"),
- cst_Scons=caml_string_of_jsbytes("Scons ("),
- cst$7=caml_string_of_jsbytes(", "),
- cst$8=caml_string_of_jsbytes(")"),
- cst_Sapp=caml_string_of_jsbytes("Sapp ("),
- cst$9=caml_string_of_jsbytes(", "),
- cst$10=caml_string_of_jsbytes(")"),
- cst_Slazy=caml_string_of_jsbytes("Slazy"),
- cst_Sgen=caml_string_of_jsbytes("Sgen"),
- cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"),
- cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"),
- cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"),
- cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"),
- cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"),
- cst_Buffer_add_substring_add_s=
- caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"),
- cst_Buffer_add_cannot_grow_buf=
- caml_string_of_jsbytes("Buffer.add: cannot grow buffer"),
- cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"),
- cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"),
- cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"),
- cst_c=caml_string_of_jsbytes("%c"),
- cst_s=caml_string_of_jsbytes("%s"),
- cst_i=caml_string_of_jsbytes("%i"),
- cst_li=caml_string_of_jsbytes("%li"),
- cst_ni=caml_string_of_jsbytes("%ni"),
- cst_Li=caml_string_of_jsbytes("%Li"),
- cst_f=caml_string_of_jsbytes("%f"),
- cst_B=caml_string_of_jsbytes("%B"),
- cst$21=caml_string_of_jsbytes("%{"),
- cst$22=caml_string_of_jsbytes("%}"),
- cst$23=caml_string_of_jsbytes("%("),
- cst$24=caml_string_of_jsbytes("%)"),
- cst_a=caml_string_of_jsbytes("%a"),
- cst_t$0=caml_string_of_jsbytes("%t"),
- cst$25=caml_string_of_jsbytes("%?"),
- cst_r$0=caml_string_of_jsbytes("%r"),
- cst_r$1=caml_string_of_jsbytes("%_r"),
- cst_u$0=caml_string_of_jsbytes("%u"),
- cst_Printf_bad_conversion=
- caml_string_of_jsbytes("Printf: bad conversion %["),
- cst_Printf_bad_conversion$0=
- caml_string_of_jsbytes("Printf: bad conversion %_"),
- cst$30=caml_string_of_jsbytes("@{"),
- cst$31=caml_string_of_jsbytes("@["),
- cst$32=caml_string_of_jsbytes("@{"),
- cst$33=caml_string_of_jsbytes("@["),
- cst$34=caml_string_of_jsbytes("@{"),
- cst$35=caml_string_of_jsbytes("@["),
- cst_0=caml_string_of_jsbytes("0"),
- cst_padding=caml_string_of_jsbytes("padding"),
- cst_precision=caml_string_of_jsbytes("precision"),
- cst$40=caml_string_of_jsbytes("'*'"),
- cst$38=caml_string_of_jsbytes("'-'"),
- cst_0$2=caml_string_of_jsbytes("'0'"),
- cst$39=caml_string_of_jsbytes("'*'"),
- cst_0$0=caml_string_of_jsbytes("0"),
- cst_0$1=caml_string_of_jsbytes("0"),
- cst_precision$0=caml_string_of_jsbytes("precision"),
- cst_precision$1=caml_string_of_jsbytes("precision"),
- cst$41=caml_string_of_jsbytes("'+'"),
- cst$42=caml_string_of_jsbytes("'#'"),
- cst$43=caml_string_of_jsbytes("' '"),
- cst_padding$0=caml_string_of_jsbytes("`padding'"),
- cst_precision$2=caml_string_of_jsbytes("`precision'"),
- cst$44=caml_string_of_jsbytes("'+'"),
- cst$45=caml_string_of_jsbytes("'_'"),
- sub_format=[0,0,caml_string_of_jsbytes("")],
- formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0],
- cst_digit=caml_string_of_jsbytes("digit"),
- cst_character=caml_string_of_jsbytes("character ')'"),
- cst_character$0=caml_string_of_jsbytes("character '}'"),
- cst$49=caml_string_of_jsbytes("'#'"),
- cst$46=caml_string_of_jsbytes("'+'"),
- cst$47=caml_string_of_jsbytes("'+'"),
- cst$48=caml_string_of_jsbytes("' '"),
- cst$50=caml_string_of_jsbytes("'+'"),
- cst_non_zero_widths_are_unsupp=
- caml_string_of_jsbytes
- ("non-zero widths are unsupported for %c conversions"),
- cst_unexpected_end_of_format=
- caml_string_of_jsbytes("unexpected end of format"),
- cst$36=caml_string_of_jsbytes(""),
- cst$37=caml_string_of_jsbytes(""),
- cst_b$0=caml_string_of_jsbytes("b"),
- cst_h=caml_string_of_jsbytes("h"),
- cst_hov=caml_string_of_jsbytes("hov"),
- cst_hv=caml_string_of_jsbytes("hv"),
- cst_v=caml_string_of_jsbytes("v"),
- cst_nan=caml_string_of_jsbytes("nan"),
- cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"),
- cst_infinity=caml_string_of_jsbytes("infinity"),
- cst$29=caml_string_of_jsbytes("."),
- cst_nd$0=caml_string_of_jsbytes("%+nd"),
- cst_nd$1=caml_string_of_jsbytes("% nd"),
- cst_ni$1=caml_string_of_jsbytes("%+ni"),
- cst_ni$2=caml_string_of_jsbytes("% ni"),
- cst_nx=caml_string_of_jsbytes("%nx"),
- cst_nx$0=caml_string_of_jsbytes("%#nx"),
- cst_nX=caml_string_of_jsbytes("%nX"),
- cst_nX$0=caml_string_of_jsbytes("%#nX"),
- cst_no=caml_string_of_jsbytes("%no"),
- cst_no$0=caml_string_of_jsbytes("%#no"),
- cst_nd=caml_string_of_jsbytes("%nd"),
- cst_ni$0=caml_string_of_jsbytes("%ni"),
- cst_nu=caml_string_of_jsbytes("%nu"),
- cst_ld$0=caml_string_of_jsbytes("%+ld"),
- cst_ld$1=caml_string_of_jsbytes("% ld"),
- cst_li$1=caml_string_of_jsbytes("%+li"),
- cst_li$2=caml_string_of_jsbytes("% li"),
- cst_lx=caml_string_of_jsbytes("%lx"),
- cst_lx$0=caml_string_of_jsbytes("%#lx"),
- cst_lX=caml_string_of_jsbytes("%lX"),
- cst_lX$0=caml_string_of_jsbytes("%#lX"),
- cst_lo=caml_string_of_jsbytes("%lo"),
- cst_lo$0=caml_string_of_jsbytes("%#lo"),
- cst_ld=caml_string_of_jsbytes("%ld"),
- cst_li$0=caml_string_of_jsbytes("%li"),
- cst_lu=caml_string_of_jsbytes("%lu"),
- cst_Ld$0=caml_string_of_jsbytes("%+Ld"),
- cst_Ld$1=caml_string_of_jsbytes("% Ld"),
- cst_Li$1=caml_string_of_jsbytes("%+Li"),
- cst_Li$2=caml_string_of_jsbytes("% Li"),
- cst_Lx=caml_string_of_jsbytes("%Lx"),
- cst_Lx$0=caml_string_of_jsbytes("%#Lx"),
- cst_LX=caml_string_of_jsbytes("%LX"),
- cst_LX$0=caml_string_of_jsbytes("%#LX"),
- cst_Lo=caml_string_of_jsbytes("%Lo"),
- cst_Lo$0=caml_string_of_jsbytes("%#Lo"),
- cst_Ld=caml_string_of_jsbytes("%Ld"),
- cst_Li$0=caml_string_of_jsbytes("%Li"),
- cst_Lu=caml_string_of_jsbytes("%Lu"),
- cst_d$3=caml_string_of_jsbytes("%+d"),
- cst_d$4=caml_string_of_jsbytes("% d"),
- cst_i$1=caml_string_of_jsbytes("%+i"),
- cst_i$2=caml_string_of_jsbytes("% i"),
- cst_x=caml_string_of_jsbytes("%x"),
- cst_x$0=caml_string_of_jsbytes("%#x"),
- cst_X$0=caml_string_of_jsbytes("%X"),
- cst_X$1=caml_string_of_jsbytes("%#X"),
- cst_o=caml_string_of_jsbytes("%o"),
- cst_o$0=caml_string_of_jsbytes("%#o"),
- cst_d$2=caml_string_of_jsbytes("%d"),
- cst_i$0=caml_string_of_jsbytes("%i"),
- cst_u=caml_string_of_jsbytes("%u"),
- cst$26=caml_string_of_jsbytes("%!"),
- cst$27=caml_string_of_jsbytes("@{"),
- cst$28=caml_string_of_jsbytes("@["),
- cst_0c=caml_string_of_jsbytes("0c"),
- cst$20=caml_string_of_jsbytes("%%"),
- cst$12=caml_string_of_jsbytes("@]"),
- cst$13=caml_string_of_jsbytes("@}"),
- cst$14=caml_string_of_jsbytes("@?"),
- cst$15=caml_string_of_jsbytes("@\n"),
- cst$16=caml_string_of_jsbytes("@."),
- cst$17=caml_string_of_jsbytes("@@"),
- cst$18=caml_string_of_jsbytes("@%"),
- cst$19=caml_string_of_jsbytes("@"),
- cst$11=caml_string_of_jsbytes(".*"),
- cst_CamlinternalFormat_Type_mi=
- caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"),
- cst$58=caml_string_of_jsbytes(""),
- cst$59=caml_string_of_jsbytes("\n"),
- cst_a_boolean=caml_string_of_jsbytes("a boolean"),
- cst_an_integer=caml_string_of_jsbytes("an integer"),
- cst_an_integer$0=caml_string_of_jsbytes("an integer"),
- cst_a_float=caml_string_of_jsbytes("a float"),
- cst_a_float$0=caml_string_of_jsbytes("a float"),
- cst$55=caml_string_of_jsbytes(""),
- cst$56=caml_string_of_jsbytes(" "),
- cst$57=caml_string_of_jsbytes(""),
- cst_one_of=caml_string_of_jsbytes("one of: "),
- cst_Arg_Expand_is_is_only_allo=
- caml_string_of_jsbytes
- ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"),
- cst_no_argument=caml_string_of_jsbytes("no argument"),
- cst$54=caml_string_of_jsbytes("(?)"),
- cst_help$3=caml_string_of_jsbytes("--help"),
- cst_help$4=caml_string_of_jsbytes("-help"),
- cst_help$2=caml_string_of_jsbytes("-help"),
- cst_Display_this_list_of_optio=
- caml_string_of_jsbytes(" Display this list of options"),
- cst_help=caml_string_of_jsbytes("-help"),
- cst_help$1=caml_string_of_jsbytes("--help"),
- cst_Display_this_list_of_optio$0=
- caml_string_of_jsbytes(" Display this list of options"),
- cst_help$0=caml_string_of_jsbytes("--help"),
- cst$51=caml_string_of_jsbytes("}"),
- cst$52=caml_string_of_jsbytes("|"),
- cst$53=caml_string_of_jsbytes("{"),
- cst_none=caml_string_of_jsbytes(""),
- cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"),
- cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"),
- cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"),
- cst$61=caml_string_of_jsbytes(""),
- cst_Fatal_error_out_of_memory_=
- caml_string_of_jsbytes
- ("Fatal error: out of memory in uncaught exception handler"),
- cst$65=caml_string_of_jsbytes(""),
- cst_Program_not_linked_with_g_=
- caml_string_of_jsbytes
- ("(Program not linked with -g, cannot print stack backtrace)\n"),
- cst_Raised_at=caml_string_of_jsbytes("Raised at"),
- cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"),
- cst_Raised_by_primitive_operat=
- caml_string_of_jsbytes("Raised by primitive operation at"),
- cst_Called_from=caml_string_of_jsbytes("Called from"),
- cst_inlined=caml_string_of_jsbytes(" (inlined)"),
- cst$64=caml_string_of_jsbytes(""),
- partial=[4,0,0,0,[12,45,[4,0,0,0,0]]],
- cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"),
- cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"),
- cst_Pattern_matching_failed=
- caml_string_of_jsbytes("Pattern matching failed"),
- cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"),
- cst_Undefined_recursive_module=
- caml_string_of_jsbytes("Undefined recursive module"),
- cst$62=caml_string_of_jsbytes(""),
- cst$63=caml_string_of_jsbytes(""),
- cst$60=caml_string_of_jsbytes("_"),
- locfmt=
- [0,
- [11,
- caml_string_of_jsbytes('File "'),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes('", line '),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", characters "),
- [4,
- 0,
- 0,
- 0,
- [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]],
- caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')],
- cst_Fun_Finally_raised=caml_string_of_jsbytes("Fun.Finally_raised: "),
- cst_Stdlib_Fun_Finally_raised=
- caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"),
- cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"),
- cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"),
- cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"),
- cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"),
- cst_Random_int64=caml_string_of_jsbytes("Random.int64"),
- cst_Random_int32=caml_string_of_jsbytes("Random.int32"),
- cst_Random_full_int=caml_string_of_jsbytes("Random.full_int"),
- cst_Random_int=caml_string_of_jsbytes("Random.int"),
- cst_x$1=caml_string_of_jsbytes("x"),
- cst_Hashtbl_unsupported_hash_t=
- caml_string_of_jsbytes("Hashtbl: unsupported hash table format"),
- cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"),
- cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"),
- cst$66=caml_string_of_jsbytes(""),
- cst_Weak_Make_hash_bucket_cann=
- caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"),
- cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"),
- cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"),
- cst_Weak_check=caml_string_of_jsbytes("Weak.check"),
- cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"),
- cst_Weak_get=caml_string_of_jsbytes("Weak.get"),
- cst_Weak_set=caml_string_of_jsbytes("Weak.set"),
- cst_Weak_create=caml_string_of_jsbytes("Weak.create"),
- cst$84=caml_string_of_jsbytes(""),
- cst$85=caml_string_of_jsbytes(""),
- cst$83=caml_string_of_jsbytes("."),
- cst$80=caml_string_of_jsbytes(">"),
- cst$81=caml_string_of_jsbytes("<\/"),
- cst$82=caml_string_of_jsbytes(""),
- cst$77=caml_string_of_jsbytes(">"),
- cst$78=caml_string_of_jsbytes("<"),
- cst$79=caml_string_of_jsbytes(""),
- cst$76=caml_string_of_jsbytes("\n"),
- cst_Format_pp_set_geometry=
- caml_string_of_jsbytes("Format.pp_set_geometry: "),
- cst$72=caml_string_of_jsbytes(""),
- cst$73=caml_string_of_jsbytes(""),
- cst$74=caml_string_of_jsbytes(""),
- cst$75=caml_string_of_jsbytes(""),
- cst$68=caml_string_of_jsbytes(""),
- cst$69=caml_string_of_jsbytes(""),
- cst$70=caml_string_of_jsbytes(""),
- cst$71=caml_string_of_jsbytes(""),
- cst$67=caml_string_of_jsbytes(""),
- cst_Stdlib_Format_String_tag=
- caml_string_of_jsbytes("Stdlib.Format.String_tag"),
- cst_end_of_input_not_found=
- caml_string_of_jsbytes("end of input not found"),
- cst_scanf_bad_conversion_a=
- caml_string_of_jsbytes('scanf: bad conversion "%a"'),
- cst_scanf_bad_conversion_t=
- caml_string_of_jsbytes('scanf: bad conversion "%t"'),
- cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"),
- cst_scanf_bad_conversion_custo=
- caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'),
- cst_scanf_bad_conversion=
- caml_string_of_jsbytes('scanf: bad conversion "%*"'),
- cst_scanf_bad_conversion$0=
- caml_string_of_jsbytes('scanf: bad conversion "%*"'),
- cst_scanf_bad_conversion$1=
- caml_string_of_jsbytes('scanf: bad conversion "%-"'),
- cst_scanf_bad_conversion$2=
- caml_string_of_jsbytes('scanf: bad conversion "%*"'),
- cst$91=caml_string_of_jsbytes('"'),
- cst$92=caml_string_of_jsbytes('"'),
- cst$89=caml_string_of_jsbytes('"'),
- cst$90=caml_string_of_jsbytes('"'),
- cst$88=caml_string_of_jsbytes('"'),
- cst_in_format=caml_string_of_jsbytes(' in format "'),
- cst_an=caml_string_of_jsbytes("an"),
- cst_x$2=caml_string_of_jsbytes("x"),
- cst_nfinity=caml_string_of_jsbytes("nfinity"),
- cst_digits=caml_string_of_jsbytes("digits"),
- cst_decimal_digits=caml_string_of_jsbytes("decimal digits"),
- cst_0b=caml_string_of_jsbytes("0b"),
- cst_0o=caml_string_of_jsbytes("0o"),
- cst_0u=caml_string_of_jsbytes("0u"),
- cst_0x=caml_string_of_jsbytes("0x"),
- cst_false$3=caml_string_of_jsbytes("false"),
- cst_true$3=caml_string_of_jsbytes("true"),
- cst_not_a_valid_float_in_hexad=
- caml_string_of_jsbytes("not a valid float in hexadecimal notation"),
- cst_no_dot_or_exponent_part_fo=
- caml_string_of_jsbytes("no dot or exponent part found in float token"),
- cst$87=caml_string_of_jsbytes("-"),
- cst_unnamed_function=caml_string_of_jsbytes("unnamed function"),
- cst_unnamed_character_string=
- caml_string_of_jsbytes("unnamed character string"),
- cst_unnamed_Stdlib_input_chann=
- caml_string_of_jsbytes("unnamed Stdlib input channel"),
- cst$86=caml_string_of_jsbytes("-"),
- cst_Stdlib_Scanf_Scan_failure=
- caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"),
- cst_binary=caml_string_of_jsbytes("binary"),
- cst_octal=caml_string_of_jsbytes("octal"),
- cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"),
- cst_a_Char=caml_string_of_jsbytes("a Char"),
- cst_a_String=caml_string_of_jsbytes("a String"),
- cst$93=caml_string_of_jsbytes(""),
- cst_CamlinternalMod_update_mod=
- caml_string_of_jsbytes("CamlinternalMod.update_mod: not a module"),
- cst_CamlinternalMod_init_mod_n=
- caml_string_of_jsbytes("CamlinternalMod.init_mod: not a module"),
- cst$94=caml_string_of_jsbytes(""),
- cst$95=caml_string_of_jsbytes(""),
- cst$96=caml_string_of_jsbytes(""),
- cst$97=caml_string_of_jsbytes(""),
- cst$99=caml_string_of_jsbytes(""),
- cst$98=caml_string_of_jsbytes(""),
- cst_Illegal_character=caml_string_of_jsbytes("Illegal character "),
- cst_Filename_chop_extension=
- caml_string_of_jsbytes("Filename.chop_extension"),
- cst$127=caml_string_of_jsbytes(""),
- cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"),
- cst$126=caml_string_of_jsbytes(""),
- cst_2_1$0=caml_string_of_jsbytes(" 2>&1"),
- cst_2$0=caml_string_of_jsbytes(" 2>"),
- cst$125=caml_string_of_jsbytes(""),
- cst$117=caml_string_of_jsbytes(" >"),
- cst$124=caml_string_of_jsbytes(""),
- cst$118=caml_string_of_jsbytes(" <"),
- cst$123=caml_string_of_jsbytes(""),
- cst$119=caml_string_of_jsbytes(" "),
- cst$120=caml_string_of_jsbytes(" "),
- cst$121=caml_string_of_jsbytes('"'),
- cst$122=caml_string_of_jsbytes(""),
- cst_Filename_quote_command_bad=
- caml_string_of_jsbytes("Filename.quote_command: bad file name "),
- cst$115=caml_string_of_jsbytes('"'),
- cst$116=caml_string_of_jsbytes('"'),
- cst$113=caml_string_of_jsbytes("./"),
- cst$112=caml_string_of_jsbytes(".\\"),
- cst$111=caml_string_of_jsbytes("../"),
- cst$110=caml_string_of_jsbytes("..\\"),
- cst_2_1=caml_string_of_jsbytes(" 2>&1"),
- cst_2=caml_string_of_jsbytes(" 2>"),
- cst$109=caml_string_of_jsbytes(""),
- cst$104=caml_string_of_jsbytes(" >"),
- cst$108=caml_string_of_jsbytes(""),
- cst$105=caml_string_of_jsbytes(" <"),
- cst$107=caml_string_of_jsbytes(""),
- cst$106=caml_string_of_jsbytes(" "),
- cst$103=caml_string_of_jsbytes("./"),
- cst$102=caml_string_of_jsbytes("../"),
- cst$101=caml_string_of_jsbytes(""),
- cst$100=caml_string_of_jsbytes(""),
- null$0=caml_string_of_jsbytes("/dev/null"),
- current_dir_name=caml_string_of_jsbytes("."),
- parent_dir_name=caml_string_of_jsbytes(".."),
- dir_sep=caml_string_of_jsbytes("/"),
- cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"),
- cst_tmp=caml_string_of_jsbytes("/tmp"),
- quotequote=caml_string_of_jsbytes("'\\''"),
- null$1=caml_string_of_jsbytes("NUL"),
- current_dir_name$0=caml_string_of_jsbytes("."),
- parent_dir_name$0=caml_string_of_jsbytes(".."),
- dir_sep$0=caml_string_of_jsbytes("\\"),
- cst_TEMP=caml_string_of_jsbytes("TEMP"),
- cst$114=caml_string_of_jsbytes("."),
- null$2=caml_string_of_jsbytes("/dev/null"),
- current_dir_name$1=caml_string_of_jsbytes("."),
- parent_dir_name$1=caml_string_of_jsbytes(".."),
- dir_sep$1=caml_string_of_jsbytes("/"),
- cst_Cygwin=caml_string_of_jsbytes("Cygwin"),
- cst_Win32=caml_string_of_jsbytes("Win32"),
- zero$4=[254,0.,0.],
- one$4=[254,1.,0.],
- i=[254,0.,1.],
- cst_Bigarray_array3_of_genarra=
- caml_string_of_jsbytes("Bigarray.array3_of_genarray"),
- cst_Bigarray_array2_of_genarra=
- caml_string_of_jsbytes("Bigarray.array2_of_genarray"),
- cst_Bigarray_array1_of_genarra=
- caml_string_of_jsbytes("Bigarray.array1_of_genarray"),
- cst_Bigarray_array0_of_genarra=
- caml_string_of_jsbytes("Bigarray.array0_of_genarray"),
- cst_Bigarray_Array3_of_array_n=
- caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"),
- cst_Bigarray_Array3_of_array_n$0=
- caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"),
- cst_Bigarray_Array2_of_array_n=
- caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"),
- Invalid_argument=global_data.Invalid_argument,
- Failure=global_data.Failure,
- Match_failure=global_data.Match_failure,
- Assert_failure=global_data.Assert_failure,
- Not_found=global_data.Not_found,
- Out_of_memory=global_data.Out_of_memory,
- Stack_overflow=global_data.Stack_overflow,
- Sys_error=global_data.Sys_error,
- End_of_file=global_data.End_of_file,
- Division_by_zero=global_data.Division_by_zero,
- Sys_blocked_io=global_data.Sys_blocked_io,
- Undefined_recursive_module=global_data.Undefined_recursive_module,
- _l_=[0,0,[0,6,0]],
- _k_=[0,0,[0,7,0]],
- _j_=[0,1,[0,3,[0,4,[0,6,0]]]],
- _i_=[0,1,[0,3,[0,4,[0,7,0]]]],
- _g_=[0,1],
- _h_=[0,0],
- _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752),
- _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520),
- _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752),
- _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751),
- _e_=runtime.caml_int64_create_lo_mi_hi(0,0,16),
- _f_=runtime.caml_int64_create_lo_mi_hi(0,0,15536),
- _p_=[0,0,0],
- _q_=[0,caml_string_of_jsbytes("obj.ml"),100,4],
- _u_=[0,caml_string_of_jsbytes("array.ml"),322,4],
- _w_=[0,caml_string_of_jsbytes("float.ml"),395,6],
- _v_=[0,caml_string_of_jsbytes("float.ml"),222,14],
- _H_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
- _G_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
- _F_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- _E_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- _I_=[0,0,0,0],
- _J_=[0,0,0],
- _K_=[0,caml_string_of_jsbytes("set.ml"),570,18],
- _L_=[0,0,0,0],
- _M_=[0,caml_string_of_jsbytes("map.ml"),400,10],
- _N_=[0,0,0],
- _O_=[0,caml_string_of_jsbytes("stream.ml"),53,12],
- _P_=[0,0],
- _Q_=[0,caml_string_of_jsbytes("stream.ml"),82,12],
- ___=[0,caml_string_of_jsbytes("buffer.ml"),282,9],
- _Z_=[0,caml_string_of_jsbytes("buffer.ml"),263,2],
- _Y_=[0,caml_string_of_jsbytes("buffer.ml"),195,19],
- _X_=[0,caml_string_of_jsbytes("buffer.ml"),213,8],
- _W_=[0,caml_string_of_jsbytes("buffer.ml"),174,19],
- _V_=[0,caml_string_of_jsbytes("buffer.ml"),192,8],
- _U_=[0,caml_string_of_jsbytes("buffer.ml"),138,19],
- _T_=[0,caml_string_of_jsbytes("buffer.ml"),171,8],
- _S_=[0,caml_string_of_jsbytes("buffer.ml"),93,2],
- _R_=[0,caml_string_of_jsbytes("buffer.ml"),94,2],
- _aa_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23],
- _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21],
- _ad_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21],
- _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21],
- _ae_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21],
- _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19],
- _af_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19],
- _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22],
- _ag_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22],
- _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30],
- _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30],
- _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26],
- _ab_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26],
- _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28],
- _ac_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28],
- _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23],
- _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4],
- _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39],
- _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31],
- _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31],
- _av_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8],
- _aZ_=
- [0,
- [11,
- caml_string_of_jsbytes("bad input: format type mismatch between "),
- [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]],
- caml_string_of_jsbytes
- ("bad input: format type mismatch between %S and %S")],
- _aY_=
- [0,
- [11,
- caml_string_of_jsbytes("bad input: format type mismatch between "),
- [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]],
- caml_string_of_jsbytes
- ("bad input: format type mismatch between %S and %S")],
- _aB_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,0,0,0,[11,caml_string_of_jsbytes(", duplicate flag "),[1,0]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: at character number %d, duplicate flag %C")],
- _aC_=[0,1,0],
- _aD_=[0,0],
- _aE_=[1,0],
- _aF_=[1,1],
- _aH_=[1,1],
- _aG_=[1,1],
- _aL_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", flag "),
- [1,
- [11,
- caml_string_of_jsbytes(" is only allowed after the '"),
- [12,
- 37,
- [11,
- caml_string_of_jsbytes("', before padding and precision"),
- 0]]]]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")],
- _aI_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(', invalid conversion "'),
- [12,37,[0,[12,34,0]]]]]]]],
- caml_string_of_jsbytes
- ('invalid format %S: at character number %d, invalid conversion "%%%c"')],
- _aJ_=[0,0],
- _aK_=[0,0],
- _aM_=[0,[12,64,0]],
- _aN_=[0,caml_string_of_jsbytes("@ "),1,0],
- _aO_=[0,caml_string_of_jsbytes("@,"),0,0],
- _aP_=[2,60],
- _aQ_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": '"),
- [12,
- 37,
- [11,
- caml_string_of_jsbytes
- ("' alone is not accepted in character sets, use "),
- [12,
- 37,
- [12,
- 37,
- [11,
- caml_string_of_jsbytes(" instead at position "),
- [4,0,0,0,[12,46,0]]]]]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d.")],
- _aR_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": integer "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(" is greater than the limit "),
- [4,0,0,0,0]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: integer %d is greater than the limit %d")],
- _aS_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11],
- _aT_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(': unclosed sub-format, expected "'),
- [12,
- 37,
- [0,
- [11,caml_string_of_jsbytes('" at character number '),[4,0,0,0,0]]]]]]],
- caml_string_of_jsbytes
- ('invalid format %S: unclosed sub-format, expected "%%%c" at character number %d')],
- _aU_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34],
- _aV_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28],
- _aW_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11],
- _aX_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" is incompatible with '"),
- [0,[11,caml_string_of_jsbytes("' in sub-format "),[3,0,0]]]]]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S")],
- _aA_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [2,0,[11,caml_string_of_jsbytes(" expected, read "),[1,0]]]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: at character number %d, %s expected, read %C")],
- _az_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,
- 0,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", '"),
- [0,[11,caml_string_of_jsbytes("' without "),[2,0,0]]]]]]]],
- caml_string_of_jsbytes
- ("invalid format %S: at character number %d, '%c' without %s")],
- _ay_=
- [0,
- [11,
- caml_string_of_jsbytes("invalid format "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(": at character number "),
- [4,0,0,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]],
- caml_string_of_jsbytes("invalid format %S: at character number %d, %s")],
- _ax_=
- [0,
- [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]],
- caml_string_of_jsbytes("invalid box description %S")],
- _aw_=[0,0,4],
- _aq_=[0,103],
- _$_=[0,0,0],
- _bj_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")],
- _bd_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _be_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _bb_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _bc_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _ba_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _a5_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(": unknown option '"),
- [2,0,[11,caml_string_of_jsbytes("'.\n"),0]]]],
- caml_string_of_jsbytes("%s: unknown option '%s'.\n")],
- _a8_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(": wrong argument '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("'; option '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("' expects "),
- [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]],
- caml_string_of_jsbytes
- ("%s: wrong argument '%s'; option '%s' expects %s.\n")],
- _a9_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(": option '"),
- [2,0,[11,caml_string_of_jsbytes("' needs an argument.\n"),0]]]],
- caml_string_of_jsbytes("%s: option '%s' needs an argument.\n")],
- _a__=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(": "),
- [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]],
- caml_string_of_jsbytes("%s: %s.\n")],
- _a6_=[0,caml_string_of_jsbytes("-help")],
- _a7_=[0,caml_string_of_jsbytes("--help")],
- _a4_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _a3_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
- _a2_=[0,caml_string_of_jsbytes("-help")],
- _a0_=
- [0,
- [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]],
- caml_string_of_jsbytes(" %s %s\n")],
- _a1_=
- [0,
- [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]],
- caml_string_of_jsbytes(" %s %s%s\n")],
- _bo_=
- [0,
- [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]],
- caml_string_of_jsbytes(", %s%s")],
- _bA_=
- [0,
- [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]],
- caml_string_of_jsbytes("Fatal error: exception %s\n")],
- _bB_=
- [0,
- [11,
- caml_string_of_jsbytes
- ("Fatal error in uncaught exception handler: exception "),
- [2,0,[12,10,0]]],
- caml_string_of_jsbytes
- ("Fatal error in uncaught exception handler: exception %s\n")],
- _bz_=
- [0,
- [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]],
- caml_string_of_jsbytes("Fatal error: exception %s\n")],
- _bx_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
- _bv_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
- _bw_=
- [0,
- [11,
- caml_string_of_jsbytes
- ("(Program not linked with -g, cannot print stack backtrace)\n"),
- 0],
- caml_string_of_jsbytes
- ("(Program not linked with -g, cannot print stack backtrace)\n")],
- _bt_=
- [0,
- [2,
- 0,
- [12,
- 32,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(' in file "'),
- [2,
- 0,
- [12,
- 34,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(", line "),
- [4,0,0,0,[11,caml_string_of_jsbytes(", characters "),partial]]]]]]]]]],
- caml_string_of_jsbytes
- ('%s %s in file "%s"%s, line %d, characters %d-%d')],
- _bu_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]],
- caml_string_of_jsbytes("%s unknown location")],
- _bs_=
- [0,
- [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]],
- caml_string_of_jsbytes("Uncaught exception: %s\n")],
- _br_=
- [0,
- [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]],
- caml_string_of_jsbytes("Uncaught exception: %s\n")],
- _bp_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")],
- _bq_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
- _bn_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _bm_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _by_=
- [0,
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes
- ("(Cannot print locations:\n bytecode executable program file not found)"),
- caml_string_of_jsbytes
- ("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),
- caml_string_of_jsbytes
- ("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),
- caml_string_of_jsbytes
- ("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],
- _bI_=
- [0,
- [11,
- caml_string_of_jsbytes("minor_collections: "),
- [4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("minor_collections: %d\n")],
- _bJ_=
- [0,
- [11,
- caml_string_of_jsbytes("major_collections: "),
- [4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("major_collections: %d\n")],
- _bK_=
- [0,
- [11,
- caml_string_of_jsbytes("compactions: "),
- [4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("compactions: %d\n")],
- _bL_=
- [0,
- [11,
- caml_string_of_jsbytes("forced_major_collections: "),
- [4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("forced_major_collections: %d\n")],
- _bM_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
- _bN_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")],
- _bO_=
- [0,
- [11,
- caml_string_of_jsbytes("minor_words: "),
- [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
- caml_string_of_jsbytes("minor_words: %*.0f\n")],
- _bP_=
- [0,
- [11,
- caml_string_of_jsbytes("promoted_words: "),
- [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
- caml_string_of_jsbytes("promoted_words: %*.0f\n")],
- _bQ_=
- [0,
- [11,
- caml_string_of_jsbytes("major_words: "),
- [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
- caml_string_of_jsbytes("major_words: %*.0f\n")],
- _bR_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
- _bS_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _bT_=
- [0,
- [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("top_heap_words: %*d\n")],
- _bU_=
- [0,
- [11,caml_string_of_jsbytes("heap_words: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("heap_words: %*d\n")],
- _bV_=
- [0,
- [11,caml_string_of_jsbytes("live_words: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("live_words: %*d\n")],
- _bW_=
- [0,
- [11,caml_string_of_jsbytes("free_words: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("free_words: %*d\n")],
- _bX_=
- [0,
- [11,caml_string_of_jsbytes("largest_free: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("largest_free: %*d\n")],
- _bY_=
- [0,
- [11,caml_string_of_jsbytes("fragments: "),[4,0,[1,1],0,[12,10,0]]],
- caml_string_of_jsbytes("fragments: %*d\n")],
- _bZ_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
- _b0_=
- [0,
- [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("live_blocks: %d\n")],
- _b1_=
- [0,
- [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("free_blocks: %d\n")],
- _b2_=
- [0,
- [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]],
- caml_string_of_jsbytes("heap_chunks: %d\n")],
- _b__=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- _b$_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
- _ca_=
- [0,
- 987910699,
- 495797812,
- 364182224,
- 414272206,
- 318284740,
- 990407751,
- 383018966,
- 270373319,
- 840823159,
- 24560019,
- 536292337,
- 512266505,
- 189156120,
- 730249596,
- 143776328,
- 51606627,
- 140166561,
- 366354223,
- 1003410265,
- 700563762,
- 981890670,
- 913149062,
- 526082594,
- 1021425055,
- 784300257,
- 667753350,
- 630144451,
- 949649812,
- 48546892,
- 415514493,
- 258888527,
- 511570777,
- 89983870,
- 283659902,
- 308386020,
- 242688715,
- 482270760,
- 865188196,
- 1027664170,
- 207196989,
- 193777847,
- 619708188,
- 671350186,
- 149669678,
- 257044018,
- 87658204,
- 558145612,
- 183450813,
- 28133145,
- 901332182,
- 710253903,
- 510646120,
- 652377910,
- 409934019,
- 801085050],
- _cd_=[0,0],
- _cj_=[3,0,3],
- _ci_=[1,caml_string_of_jsbytes("max_indent < 2")],
- _cg_=[1,caml_string_of_jsbytes("margin <= max_indent")],
- _ch_=[0,0],
- _cf_=[0,caml_string_of_jsbytes("")],
- _ce_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")],
- _cz_=[0,91],
- _cy_=[0,123],
- _cA_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13],
- _cB_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")],
- _cx_=[0,37,caml_string_of_jsbytes("")],
- _cw_=
- [0,
- [11,
- caml_string_of_jsbytes("scanf: bad input at char number "),
- [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
- caml_string_of_jsbytes("scanf: bad input at char number %i: %s")],
- _cv_=
- [0,
- [11,
- caml_string_of_jsbytes("the character "),
- [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]],
- caml_string_of_jsbytes("the character %C cannot start a boolean")],
- _cu_=
- [0,
- [11,
- caml_string_of_jsbytes("bad character hexadecimal encoding \\"),
- [0,[0,0]]],
- caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")],
- _ct_=
- [0,
- [11,
- caml_string_of_jsbytes("bad character decimal encoding \\"),
- [0,[0,[0,0]]]],
- caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")],
- _cs_=
- [0,
- [11,
- caml_string_of_jsbytes("character "),
- [1,
- [11,
- caml_string_of_jsbytes(" is not a valid "),
- [2,0,[11,caml_string_of_jsbytes(" digit"),0]]]]],
- caml_string_of_jsbytes("character %C is not a valid %s digit")],
- _cr_=
- [0,
- [11,
- caml_string_of_jsbytes("character "),
- [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]],
- caml_string_of_jsbytes("character %C is not a decimal digit")],
- _cq_=[0,caml_string_of_jsbytes("scanf.ml"),555,9],
- _cp_=
- [0,
- [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]],
- caml_string_of_jsbytes("invalid boolean '%s'")],
- _co_=
- [0,
- [11,
- caml_string_of_jsbytes("looking for "),
- [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]],
- caml_string_of_jsbytes("looking for %C, found %C")],
- _cn_=
- [0,
- [11,
- caml_string_of_jsbytes("scanning of "),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- (" failed: premature end of file occurred before end of token"),
- 0]]],
- caml_string_of_jsbytes
- ("scanning of %s failed: premature end of file occurred before end of token")],
- _cm_=
- [0,
- [11,
- caml_string_of_jsbytes("scanning of "),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- (" failed: the specified length was too short for token"),
- 0]]],
- caml_string_of_jsbytes
- ("scanning of %s failed: the specified length was too short for token")],
- _cl_=
- [0,
- [11,caml_string_of_jsbytes("illegal escape character "),[1,0]],
- caml_string_of_jsbytes("illegal escape character %C")],
- _cI_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17],
- _cH_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13],
- _cG_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13],
- _cF_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13],
- _cE_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13],
- _cD_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13],
- _cC_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50],
- _cJ_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5],
- _cK_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2],
- _cN_=[0,0],
- _cM_=[0,0],
- _cL_=[0,0],
- _cS_=[0,7,0],
- _cR_=[0,1,[0,3,[0,5,0]]],
- _cQ_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")],
- _cP_=[0,caml_string_of_jsbytes('"'),0],
- _cT_=[254,0.,0.];
- function erase_rel(param)
- {if(typeof param === "number")
- return 0;
- else
- switch(param[0])
- {case 0:var rest=param[1];return [0,erase_rel(rest)];
- case 1:var rest$0=param[1];return [1,erase_rel(rest$0)];
- case 2:var rest$1=param[1];return [2,erase_rel(rest$1)];
- case 3:var rest$2=param[1];return [3,erase_rel(rest$2)];
- case 4:var rest$3=param[1];return [4,erase_rel(rest$3)];
- case 5:var rest$4=param[1];return [5,erase_rel(rest$4)];
- case 6:var rest$5=param[1];return [6,erase_rel(rest$5)];
- case 7:var rest$6=param[1];return [7,erase_rel(rest$6)];
- case 8:
- var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)];
- case 9:
- var rest$8=param[3],ty1=param[1];
- return [9,ty1,ty1,erase_rel(rest$8)];
- case 10:var rest$9=param[1];return [10,erase_rel(rest$9)];
- case 11:var rest$10=param[1];return [11,erase_rel(rest$10)];
- case 12:var rest$11=param[1];return [12,erase_rel(rest$11)];
- case 13:var rest$12=param[1];return [13,erase_rel(rest$12)];
- default:var rest$13=param[1];return [14,erase_rel(rest$13)]}}
- function concat_fmtty(fmtty1,fmtty2)
- {if(typeof fmtty1 === "number")
- return fmtty2;
- else
- switch(fmtty1[0])
- {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)];
- case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)];
- case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)];
- case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)];
- case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)];
- case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)];
- case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)];
- case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)];
- case 8:
- var rest$7=fmtty1[2],ty=fmtty1[1];
- return [8,ty,concat_fmtty(rest$7,fmtty2)];
- case 9:
- var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1];
- return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)];
- case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)];
- case 11:
- var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)];
- case 12:
- var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)];
- case 13:
- var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)];
- default:
- var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}}
- function concat_fmt(fmt1,fmt2)
- {if(typeof fmt1 === "number")
- return fmt2;
- else
- switch(fmt1[0])
- {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)];
- case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)];
- case 2:
- var rest$1=fmt1[2],pad=fmt1[1];
- return [2,pad,concat_fmt(rest$1,fmt2)];
- case 3:
- var rest$2=fmt1[2],pad$0=fmt1[1];
- return [3,pad$0,concat_fmt(rest$2,fmt2)];
- case 4:
- var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1];
- return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)];
- case 5:
- var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1];
- return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)];
- case 6:
- var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1];
- return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)];
- case 7:
- var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1];
- return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)];
- case 8:
- var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1];
- return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)];
- case 9:
- var rest$8=fmt1[2],pad$6=fmt1[1];
- return [9,pad$6,concat_fmt(rest$8,fmt2)];
- case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)];
- case 11:
- var rest$10=fmt1[2],str=fmt1[1];
- return [11,str,concat_fmt(rest$10,fmt2)];
- case 12:
- var rest$11=fmt1[2],chr=fmt1[1];
- return [12,chr,concat_fmt(rest$11,fmt2)];
- case 13:
- var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1];
- return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)];
- case 14:
- var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1];
- return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)];
- case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)];
- case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)];
- case 17:
- var rest$16=fmt1[2],fmting_lit=fmt1[1];
- return [17,fmting_lit,concat_fmt(rest$16,fmt2)];
- case 18:
- var rest$17=fmt1[2],fmting_gen=fmt1[1];
- return [18,fmting_gen,concat_fmt(rest$17,fmt2)];
- case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)];
- case 20:
- var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1];
- return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)];
- case 21:
- var rest$20=fmt1[2],counter=fmt1[1];
- return [21,counter,concat_fmt(rest$20,fmt2)];
- case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)];
- case 23:
- var rest$22=fmt1[2],ign=fmt1[1];
- return [23,ign,concat_fmt(rest$22,fmt2)];
- default:
- var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1];
- return [24,arity,f,concat_fmt(rest$23,fmt2)]}}
- var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt];
- caml_register_global
- (745,CamlinternalFormatBasics,"CamlinternalFormatBasics");
- function make(v){return [0,v]}
- function get(r){return r[1]}
- function set(r,v){r[1] = v;return 0}
- function exchange(r,v){var cur=r[1];r[1] = v;return cur}
- function compare_and_set(r,seen,v)
- {var cur=r[1];return cur === seen?(r[1] = v,1):0}
- function fetch_and_add(r,n){var cur=r[1];r[1] = cur + n | 0;return cur}
- function incr(r){fetch_and_add(r,1);return 0}
- function decr(r){fetch_and_add(r,-1);return 0}
- var
- include=
- [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr];
- caml_register_global(746,include,"CamlinternalAtomic");
- function failwith(s){throw [0,Failure,s]}
- function invalid_arg(s){throw [0,Invalid_argument,s]}
- var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)];
- function min(x,y){return caml_lessequal(x,y)?x:y}
- function max(x,y){return caml_greaterequal(x,y)?x:y}
- function abs(x){return 0 <= x?x:- x | 0}
- function lnot(x){return x ^ -1}
- var
- infinity=caml_int64_float_of_bits(_a_),
- neg_infinity=caml_int64_float_of_bits(_b_),
- nan=caml_int64_float_of_bits(_c_),
- max_float=caml_int64_float_of_bits(_d_),
- min_float=caml_int64_float_of_bits(_e_),
- epsilon=caml_int64_float_of_bits(_f_),
- max_int=2147483647,
- min_int=-2147483648;
- function cat(s1,s2)
- {var
- l1=caml_ml_string_length(s1),
- l2=caml_ml_string_length(s2),
- s=caml_create_bytes(l1 + l2 | 0);
- caml_blit_string(s1,0,s,0,l1);
- caml_blit_string(s2,0,s,l1,l2);
- return caml_string_of_bytes(s)}
- function char_of_int(n)
- {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)}
- function string_of_bool(b){return b?cst_true:cst_false}
- function bool_of_string(param)
- {return caml_string_notequal(param,cst_false$0)
- ?caml_string_notequal(param,cst_true$0)
- ?invalid_arg(cst_bool_of_string)
- :1
- :0}
- function bool_of_string_opt(param)
- {return caml_string_notequal(param,cst_false$1)
- ?caml_string_notequal(param,cst_true$1)?0:_g_
- :_h_}
- function string_of_int(n){return caml_string_of_jsbytes("" + n)}
- function int_of_string_opt(s)
- {try
- {var _CD_=[0,caml_int_of_string(s)];return _CD_}
- catch(_CE_)
- {_CE_ = caml_wrap_exception(_CE_);
- if(_CE_[1] === Failure)return 0;
- throw _CE_}}
- function valid_float_lexem(s)
- {var l=caml_ml_string_length(s),i=0;
- for(;;)
- {if(l <= i)return cat(s,cst);
- var match=caml_string_get(s,i),switch$0=0;
- if(48 <= match)
- {if(! (58 <= match))switch$0 = 1}
- else
- if(45 === match)switch$0 = 1;
- if(switch$0){var i$0=i + 1 | 0,i=i$0;continue}
- return s}}
- function to_string(f)
- {return valid_float_lexem(caml_format_float(cst_12g,f))}
- function of_string_opt(s)
- {try
- {var _CB_=[0,caml_float_of_string(s)];return _CB_}
- catch(_CC_)
- {_CC_ = caml_wrap_exception(_CC_);
- if(_CC_[1] === Failure)return 0;
- throw _CC_}}
- function append(l1,l2)
- {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2}
- var
- stdin=caml_ml_open_descriptor_in(0),
- stdout=caml_ml_open_descriptor_out(1),
- stderr=caml_ml_open_descriptor_out(2);
- function open_out_gen(mode,perm,name)
- {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm));
- caml_ml_set_channel_name(c,name);
- return c}
- function open_out(name){return open_out_gen(_i_,438,name)}
- function open_out_bin(name){return open_out_gen(_j_,438,name)}
- function flush_all(param)
- {function iter(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1];
- try
- {caml_ml_flush(a)}
- catch(_CA_)
- {_CA_ = caml_wrap_exception(_CA_);
- if(_CA_[1] !== Sys_error)throw _CA_;
- var _Cz_=_CA_}
- var param$0=l;
- continue}
- return 0}}
- return iter(runtime.caml_ml_out_channels_list(0))}
- function output_bytes(oc,s)
- {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))}
- function output_string(oc,s)
- {return caml_ml_output(oc,s,0,caml_ml_string_length(s))}
- function output(oc,s,ofs,len)
- {if
- (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
- return caml_ml_output_bytes(oc,s,ofs,len);
- return invalid_arg(cst_output)}
- function output_substring(oc,s,ofs,len)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_string_length(s) - len | 0) < ofs))
- return caml_ml_output(oc,s,ofs,len);
- return invalid_arg(cst_output_substring)}
- function output_value(chan,v){return caml_output_value(chan,v,0)}
- function close_out(oc){caml_ml_flush(oc);return caml_ml_close_channel(oc)}
- function close_out_noerr(oc)
- {try {caml_ml_flush(oc)}catch(_Cy_){}
- try
- {var _Cw_=caml_ml_close_channel(oc);return _Cw_}
- catch(_Cx_){return 0}}
- function open_in_gen(mode,perm,name)
- {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm));
- caml_ml_set_channel_name(c,name);
- return c}
- function open_in(name){return open_in_gen(_k_,0,name)}
- function open_in_bin(name){return open_in_gen(_l_,0,name)}
- function input(ic,s,ofs,len)
- {if
- (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
- return caml_ml_input(ic,s,ofs,len);
- return invalid_arg(cst_input)}
- function unsafe_really_input(ic,s,ofs,len)
- {var ofs$0=ofs,len$0=len;
- for(;;)
- {if(0 < len$0)
- {var r=caml_ml_input(ic,s,ofs$0,len$0);
- if(0 === r)throw End_of_file;
- var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1;
- continue}
- return 0}}
- function really_input(ic,s,ofs,len)
- {if
- (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
- return unsafe_really_input(ic,s,ofs,len);
- return invalid_arg(cst_really_input)}
- function really_input_string(ic,len)
- {var s=caml_create_bytes(len);
- really_input(ic,s,0,len);
- return caml_string_of_bytes(s)}
- function input_line(chan)
- {function build_result(buf,pos,param)
- {var pos$0=pos,param$0=param;
- for(;;)
- {if(param$0)
- {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd);
- caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len);
- var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl;
- continue}
- return buf}}
- var accu=0,len=0;
- for(;;)
- {var n=runtime.caml_ml_input_scan_line(chan);
- if(0 === n)
- {if(! accu)throw End_of_file;
- var _Cv_=build_result(caml_create_bytes(len),len,accu)}
- else
- {if(! (0 < n))
- {var beg=caml_create_bytes(- n | 0);
- caml_ml_input(chan,beg,0,- n | 0);
- var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1;
- continue}
- var res=caml_create_bytes(n - 1 | 0);
- caml_ml_input(chan,res,0,n - 1 | 0);
- caml_ml_input_char(chan);
- if(accu)
- var
- len$0=(len + n | 0) - 1 | 0,
- _Cv_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]);
- else
- var _Cv_=res}
- return caml_string_of_bytes(_Cv_)}}
- function close_in_noerr(ic)
- {try
- {var _Ct_=caml_ml_close_channel(ic);return _Ct_}
- catch(_Cu_){return 0}}
- function print_char(c){return caml_ml_output_char(stdout,c)}
- function print_string(s){return output_string(stdout,s)}
- function print_bytes(s){return output_bytes(stdout,s)}
- function print_int(i)
- {return output_string(stdout,caml_string_of_jsbytes("" + i))}
- function print_float(f){return output_string(stdout,to_string(f))}
- function print_endline(s)
- {output_string(stdout,s);
- caml_ml_output_char(stdout,10);
- return caml_ml_flush(stdout)}
- function print_newline(param)
- {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)}
- function prerr_char(c){return caml_ml_output_char(stderr,c)}
- function prerr_string(s){return output_string(stderr,s)}
- function prerr_bytes(s){return output_bytes(stderr,s)}
- function prerr_int(i)
- {return output_string(stderr,caml_string_of_jsbytes("" + i))}
- function prerr_float(f){return output_string(stderr,to_string(f))}
- function prerr_endline(s)
- {output_string(stderr,s);
- caml_ml_output_char(stderr,10);
- return caml_ml_flush(stderr)}
- function prerr_newline(param)
- {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)}
- function read_line(param){caml_ml_flush(stdout);return input_line(stdin)}
- function read_int(param){return caml_int_of_string(read_line(0))}
- function read_int_opt(param){return int_of_string_opt(read_line(0))}
- function read_float(param){return caml_float_of_string(read_line(0))}
- function read_float_opt(param){return of_string_opt(read_line(0))}
- function string_of_format(param){var str=param[2];return str}
- function symbol(param,_Cr_)
- {var
- str2=_Cr_[2],
- fmt2=_Cr_[1],
- str1=param[2],
- fmt1=param[1],
- _Cs_=cat(str1,cat(cst$0,str2));
- return [0,concat_fmt(fmt1,fmt2),_Cs_]}
- var exit_function=[0,flush_all];
- function at_exit(f)
- {for(;;)
- {var
- f_yet_to_run=[0,1],
- old_exit=exit_function[1],
- new_exit$0=
- function(f_yet_to_run,old_exit)
- {function new_exit(param)
- {if(compare_and_set(f_yet_to_run,1,0))caml_call1(f,0);
- return caml_call1(old_exit,0)}
- return new_exit},
- new_exit=new_exit$0(f_yet_to_run,old_exit),
- success=compare_and_set(exit_function,old_exit,new_exit),
- _Cq_=1 - success;
- if(_Cq_)continue;
- return _Cq_}}
- function do_at_exit(param){return caml_call1(exit_function[1],0)}
- function exit(retcode)
- {do_at_exit(0);return runtime.caml_sys_exit(retcode)}
- caml_register_named_value
- (caml_string_of_jsbytes("Pervasives.do_at_exit"),do_at_exit);
- var
- set_binary_mode_in=caml_ml_set_binary_mode,
- close_in=caml_ml_close_channel,
- in_channel_length=caml_ml_channel_size,
- pos_in=runtime.caml_ml_pos_in,
- seek_in=runtime.caml_ml_seek_in,
- input_value=caml_input_value,
- input_binary_int=runtime.caml_ml_input_int,
- input_byte=caml_ml_input_char,
- input_char=caml_ml_input_char,
- set_binary_mode_out=caml_ml_set_binary_mode,
- out_channel_length=caml_ml_channel_size,
- pos_out=runtime.caml_ml_pos_out,
- seek_out=runtime.caml_ml_seek_out,
- output_binary_int=runtime.caml_ml_output_int,
- output_byte=caml_ml_output_char,
- output_char=caml_ml_output_char,
- flush=caml_ml_flush,
- Stdlib=
- [0,
- invalid_arg,
- failwith,
- Exit,
- Match_failure,
- Assert_failure,
- Invalid_argument,
- Failure,
- Not_found,
- Out_of_memory,
- Stack_overflow,
- Sys_error,
- End_of_file,
- Division_by_zero,
- Sys_blocked_io,
- Undefined_recursive_module,
- min,
- max,
- abs,
- max_int,
- min_int,
- lnot,
- infinity,
- neg_infinity,
- nan,
- max_float,
- min_float,
- epsilon,
- cat,
- char_of_int,
- string_of_bool,
- bool_of_string_opt,
- bool_of_string,
- string_of_int,
- int_of_string_opt,
- to_string,
- of_string_opt,
- append,
- stdin,
- stdout,
- stderr,
- print_char,
- print_string,
- print_bytes,
- print_int,
- print_float,
- print_endline,
- print_newline,
- prerr_char,
- prerr_string,
- prerr_bytes,
- prerr_int,
- prerr_float,
- prerr_endline,
- prerr_newline,
- read_line,
- read_int_opt,
- read_int,
- read_float_opt,
- read_float,
- open_out,
- open_out_bin,
- open_out_gen,
- flush,
- flush_all,
- output_char,
- output_string,
- output_bytes,
- output,
- output_substring,
- output_byte,
- output_binary_int,
- output_value,
- seek_out,
- pos_out,
- out_channel_length,
- close_out,
- close_out_noerr,
- set_binary_mode_out,
- open_in,
- open_in_bin,
- open_in_gen,
- input_char,
- input_line,
- input,
- really_input,
- really_input_string,
- input_byte,
- input_binary_int,
- input_value,
- seek_in,
- pos_in,
- in_channel_length,
- close_in,
- close_in_noerr,
- set_binary_mode_in,
- [0,
- runtime.caml_ml_seek_out_64,
- runtime.caml_ml_pos_out_64,
- caml_ml_channel_size_64,
- runtime.caml_ml_seek_in_64,
- runtime.caml_ml_pos_in_64,
- caml_ml_channel_size_64],
- string_of_format,
- symbol,
- exit,
- at_exit,
- valid_float_lexem,
- unsafe_really_input,
- do_at_exit];
- caml_register_global(759,Stdlib,"Stdlib");
- var
- Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)],
- Stdlib_Pervasives=
- [0,
- invalid_arg,
- failwith,
- Exit$0,
- min,
- max,
- abs,
- max_int,
- min_int,
- lnot,
- infinity,
- neg_infinity,
- nan,
- max_float,
- min_float,
- epsilon,
- cat,
- char_of_int,
- string_of_bool,
- bool_of_string,
- bool_of_string_opt,
- string_of_int,
- int_of_string_opt,
- to_string,
- of_string_opt,
- append,
- stdin,
- stdout,
- stderr,
- print_char,
- print_string,
- print_bytes,
- print_int,
- print_float,
- print_endline,
- print_newline,
- prerr_char,
- prerr_string,
- prerr_bytes,
- prerr_int,
- prerr_float,
- prerr_endline,
- prerr_newline,
- read_line,
- read_int,
- read_int_opt,
- read_float,
- read_float_opt,
- open_out,
- open_out_bin,
- open_out_gen,
- flush,
- flush_all,
- output_char,
- output_string,
- output_bytes,
- output,
- output_substring,
- output_byte,
- output_binary_int,
- output_value,
- seek_out,
- pos_out,
- out_channel_length,
- close_out,
- close_out_noerr,
- set_binary_mode_out,
- open_in,
- open_in_bin,
- open_in_gen,
- input_char,
- input_line,
- input,
- really_input,
- really_input_string,
- input_byte,
- input_binary_int,
- input_value,
- seek_in,
- pos_in,
- in_channel_length,
- close_in,
- close_in_noerr,
- set_binary_mode_in,
- string_of_format,
- symbol,
- exit,
- at_exit,
- valid_float_lexem,
- do_at_exit];
- caml_register_global(760,Stdlib_Pervasives,"Stdlib__Pervasives");
- function empty(param){return 0}
- function return$0(x,param){return [0,x,empty]}
- function cons(x,next,param){return [0,x,next]}
- function append$0(seq1,seq2,param)
- {var match=caml_call1(seq1,0);
- if(match)
- {var next=match[2],x=match[1];
- return [0,x,function(_Cp_){return append$0(next,seq2,_Cp_)}]}
- return caml_call1(seq2,0)}
- function map(f,seq,param)
- {var match=caml_call1(seq,0);
- if(match)
- {var
- next=match[2],
- x=match[1],
- _Cn_=function(_Co_){return map(f,next,_Co_)};
- return [0,caml_call1(f,x),_Cn_]}
- return 0}
- function filter_map(f,seq,param)
- {var seq$0=seq;
- for(;;)
- {var match=caml_call1(seq$0,0);
- if(match)
- {var next=match[2],x=match[1],match$0=caml_call1(f,x);
- if(match$0)
- {var y=match$0[1];
- return [0,y,function(_Cm_){return filter_map(f,next,_Cm_)}]}
- var seq$0=next;
- continue}
- return 0}}
- function filter(f,seq,param)
- {var seq$0=seq;
- for(;;)
- {var match=caml_call1(seq$0,0);
- if(match)
- {var next=match[2],x=match[1];
- if(caml_call1(f,x))
- return [0,x,function(_Cl_){return filter(f,next,_Cl_)}];
- var seq$0=next;
- continue}
- return 0}}
- function concat(seq,param)
- {var match=caml_call1(seq,0);
- if(match)
- {var next=match[2],x=match[1],_Cj_=0;
- return append$0(x,function(_Ck_){return concat(next,_Ck_)},_Cj_)}
- return 0}
- function flat_map(f,seq,param)
- {var match=caml_call1(seq,0);
- if(match)
- {var
- next=match[2],
- x=match[1],
- _Cg_=0,
- _Ch_=function(_Ci_){return flat_map(f,next,_Ci_)};
- return append$0(caml_call1(f,x),_Ch_,_Cg_)}
- return 0}
- function fold_left(f,acc,seq)
- {var acc$0=acc,seq$0=seq;
- for(;;)
- {var match=caml_call1(seq$0,0);
- if(match)
- {var
- next=match[2],
- x=match[1],
- acc$1=caml_call2(f,acc$0,x),
- acc$0=acc$1,
- seq$0=next;
- continue}
- return acc$0}}
- function iter(f,seq)
- {var seq$0=seq;
- for(;;)
- {var match=caml_call1(seq$0,0);
- if(match)
- {var next=match[2],x=match[1];
- caml_call1(f,x);
- var seq$0=next;
- continue}
- return 0}}
- function unfold(f,u,param)
- {var match=caml_call1(f,u);
- if(match)
- {var match$0=match[1],u$0=match$0[2],x=match$0[1];
- return [0,x,function(_Cf_){return unfold(f,u$0,_Cf_)}]}
- return 0}
- var
- Stdlib_Seq=
- [0,
- empty,
- return$0,
- cons,
- append$0,
- map,
- filter,
- filter_map,
- concat,
- flat_map,
- flat_map,
- fold_left,
- iter,
- unfold];
- caml_register_global(761,Stdlib_Seq,"Stdlib__Seq");
- var none=0;
- function some(v){return [0,v]}
- function value(o,default$0){if(o){var v=o[1];return v}return default$0}
- function get$0(param)
- {if(param){var v=param[1];return v}
- return invalid_arg(cst_option_is_None)}
- function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0}
- function join(param){if(param){var o=param[1];return o}return 0}
- function map$0(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0}
- function fold(none,some,param)
- {if(param){var v=param[1];return caml_call1(some,v)}return none}
- function iter$0(f,param)
- {if(param){var v=param[1];return caml_call1(f,v)}return 0}
- function is_none(param){return param?0:1}
- function is_some(param){return param?1:0}
- function equal(eq,o0,o1)
- {if(o0)
- {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}}
- else
- if(! o1)return 1;
- return 0}
- function compare(cmp,o0,o1)
- {if(o0)
- {var _Ce_=o0[1];
- if(o1){var v1=o1[1];return caml_call2(cmp,_Ce_,v1)}
- return 1}
- return o1?-1:0}
- function to_result(none,param)
- {if(param){var v=param[1];return [0,v]}return [1,none]}
- function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0}
- function to_seq(param)
- {if(param){var v=param[1];return function(_Cd_){return return$0(v,_Cd_)}}
- return empty}
- var
- Stdlib_Option=
- [0,
- none,
- some,
- value,
- get$0,
- bind,
- join,
- map$0,
- fold,
- iter$0,
- is_none,
- is_some,
- equal,
- compare,
- to_result,
- to_list,
- to_seq];
- caml_register_global(762,Stdlib_Option,"Stdlib__Option");
- function left(v){return [0,v]}
- function right(v){return [1,v]}
- function is_left(param){return 0 === param[0]?1:0}
- function is_right(param){return 0 === param[0]?0:1}
- function find_left(param)
- {if(0 === param[0]){var v=param[1];return [0,v]}return 0}
- function find_right(param)
- {if(0 === param[0])return 0;var v=param[1];return [0,v]}
- function map_left(f,e)
- {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e}
- function map_right(f,e)
- {if(0 === e[0])return e;var v=e[1];return [1,caml_call1(f,v)]}
- function map$1(left,right,param)
- {if(0 === param[0]){var v=param[1];return [0,caml_call1(left,v)]}
- var v$0=param[1];
- return [1,caml_call1(right,v$0)]}
- function fold$0(left,right,param)
- {if(0 === param[0]){var v=param[1];return caml_call1(left,v)}
- var v$0=param[1];
- return caml_call1(right,v$0)}
- function equal$0(left,right,e1,e2)
- {if(0 === e1[0])
- {var _Cb_=e1[1];
- if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Cb_,v2)}}
- else
- {var _Cc_=e1[1];
- if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Cc_,v2$0)}}
- return 0}
- function compare$0(left,right,e1,e2)
- {if(0 === e1[0])
- {var _B$_=e1[1];
- if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_B$_,v2)}
- return -1}
- var _Ca_=e1[1];
- if(0 === e2[0])return 1;
- var v2$0=e2[1];
- return caml_call2(right,_Ca_,v2$0)}
- var
- Stdlib_Either=
- [0,
- left,
- right,
- is_left,
- is_right,
- find_left,
- find_right,
- map_left,
- map_right,
- map$1,
- fold$0,
- fold$0,
- fold$0,
- equal$0,
- compare$0];
- caml_register_global(763,Stdlib_Either,"Stdlib__Either");
- function ok(v){return [0,v]}
- function error(e){return [1,e]}
- function value$0(r,default$0)
- {if(0 === r[0]){var v=r[1];return v}return default$0}
- function get_ok(param)
- {if(0 === param[0]){var v=param[1];return v}
- return invalid_arg(cst_result_is_Error)}
- function get_error(param)
- {if(0 === param[0])return invalid_arg(cst_result_is_Ok);
- var e=param[1];
- return e}
- function bind$0(r,f)
- {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r}
- function join$0(e){if(0 === e[0]){var r=e[1];return r}return e}
- function map$2(f,e)
- {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e}
- function map_error(f,v)
- {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]}
- function fold$1(ok,error,param)
- {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)}
- var e=param[1];
- return caml_call1(error,e)}
- function iter$1(f,param)
- {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0}
- function iter_error(f,param)
- {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)}
- function is_ok(param){return 0 === param[0]?1:0}
- function is_error(param){return 0 === param[0]?0:1}
- function equal$1(ok,error,r0,r1)
- {if(0 === r0[0])
- {var _B9_=r0[1];
- if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_B9_,v1)}}
- else
- {var _B__=r0[1];
- if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_B__,e1)}}
- return 0}
- function compare$1(ok,error,r0,r1)
- {if(0 === r0[0])
- {var _B7_=r0[1];
- if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_B7_,v1)}
- return -1}
- var _B8_=r0[1];
- if(0 === r1[0])return 1;
- var e1=r1[1];
- return caml_call2(error,_B8_,e1)}
- function to_option(param)
- {if(0 === param[0]){var v=param[1];return [0,v]}return 0}
- function to_list$0(param)
- {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0}
- function to_seq$0(param)
- {if(0 === param[0])
- {var v=param[1];return function(_B6_){return return$0(v,_B6_)}}
- return empty}
- var
- Stdlib_Result=
- [0,
- ok,
- error,
- value$0,
- get_ok,
- get_error,
- bind$0,
- join$0,
- map$2,
- map_error,
- fold$1,
- iter$1,
- iter_error,
- is_ok,
- is_error,
- equal$1,
- compare$1,
- to_option,
- to_list$0,
- to_seq$0];
- caml_register_global(764,Stdlib_Result,"Stdlib__Result");
- function equal$2(_B5_,_B4_){return _B5_ === _B4_?1:0}
- var compare$2=caml_int_compare;
- function to_float(param){return param?1.:0.}
- function to_string$0(param){return param?cst_true$2:cst_false$2}
- function _m_(_B3_){return _B3_}
- var
- Stdlib_Bool=
- [0,
- function(_B2_){return 1 - _B2_},
- equal$2,
- compare$2,
- _m_,
- to_float,
- to_string$0];
- caml_register_global(765,Stdlib_Bool,"Stdlib__Bool");
- function chr(n)
- {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)}
- function escaped(c)
- {var switch$0=0;
- if(40 <= c)
- {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1}
- else
- if(32 <= c)
- {if(39 <= c)return cst$2;switch$0 = 1}
- else
- if(! (14 <= c))
- switch(c)
- {case 8:return cst_b;
- case 9:return cst_t;
- case 10:return cst_n;
- case 13:return cst_r
- }
- if(switch$0)
- {var s$0=caml_create_bytes(1);
- caml_bytes_unsafe_set(s$0,0,c);
- return caml_string_of_bytes(s$0)}
- var s=caml_create_bytes(4);
- caml_bytes_unsafe_set(s,0,92);
- caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0);
- caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0);
- caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0);
- return caml_string_of_bytes(s)}
- function lowercase(c)
- {var _B1_=c - 192 | 0,switch$0=0;
- if(30 < _B1_ >>> 0)
- {if(! (25 < _B1_ + 127 >>> 0))switch$0 = 1}
- else
- if(23 !== _B1_)switch$0 = 1;
- return switch$0?c + 32 | 0:c}
- function uppercase(c)
- {var _B0_=c - 224 | 0,switch$0=0;
- if(30 < _B0_ >>> 0)
- {if(! (25 < _B0_ + 127 >>> 0))switch$0 = 1}
- else
- if(23 !== _B0_)switch$0 = 1;
- return switch$0?c - 32 | 0:c}
- function lowercase_ascii(c){return 25 < c - 65 >>> 0?c:c + 32 | 0}
- function uppercase_ascii(c){return 25 < c - 97 >>> 0?c:c - 32 | 0}
- function compare$3(c1,c2){return c1 - c2 | 0}
- function equal$3(c1,c2){return 0 === (c1 - c2 | 0)?1:0}
- var
- Stdlib_Char=
- [0,
- chr,
- escaped,
- lowercase,
- uppercase,
- lowercase_ascii,
- uppercase_ascii,
- compare$3,
- equal$3];
- caml_register_global(766,Stdlib_Char,"Stdlib__Char");
- var
- min$0=0,
- max$0=1114111,
- lo_bound=55295,
- hi_bound=57344,
- bom=65279,
- rep=65533;
- function succ(u)
- {return u === 55295
- ?hi_bound
- :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0}
- function pred(u)
- {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0}
- function is_valid(i)
- {var _BW_=0 <= i?1:0,_BX_=_BW_?i <= 55295?1:0:_BW_;
- if(_BX_)
- var _BY_=_BX_;
- else
- var _BZ_=57344 <= i?1:0,_BY_=_BZ_?i <= 1114111?1:0:_BZ_;
- return _BY_}
- function of_int(i)
- {return is_valid(i)
- ?i
- :invalid_arg
- (cat(caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))}
- function is_char(u){return u < 256?1:0}
- function of_char(c){return c}
- function to_char(u)
- {return 255 < u
- ?invalid_arg
- (cat
- (cst_U,
- cat
- (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character)))
- :u}
- function unsafe_to_char(_BV_){return _BV_}
- function equal$4(_BU_,_BT_){return _BU_ === _BT_?1:0}
- var compare$4=caml_int_compare;
- function hash(_BS_){return _BS_}
- function _n_(_BR_){return _BR_}
- var
- Stdlib_Uchar=
- [0,
- min$0,
- max$0,
- bom,
- rep,
- succ,
- pred,
- is_valid,
- of_int,
- function(_BQ_){return _BQ_},
- _n_,
- is_char,
- of_char,
- to_char,
- unsafe_to_char,
- equal$4,
- compare$4,
- hash];
- caml_register_global(767,Stdlib_Uchar,"Stdlib__Uchar");
- var
- executable_name=runtime.caml_sys_executable_name(0),
- match=runtime.caml_sys_get_config(0),
- os_type=match[1],
- match$0=[0,caml_string_of_jsbytes("js_of_ocaml")],
- unix=runtime.caml_sys_const_ostype_unix(0),
- win32=runtime.caml_sys_const_ostype_win32(0),
- cygwin=runtime.caml_sys_const_ostype_cygwin(0),
- max_array_length=runtime.caml_sys_const_max_wosize(0),
- max_floatarray_length=max_array_length / 2 | 0,
- max_string_length=(4 * max_array_length | 0) - 1 | 0,
- big_endian=0,
- match$1=32,
- int_size=32;
- function getenv_opt(s)
- {try
- {var _BO_=[0,caml_sys_getenv(s)];return _BO_}
- catch(_BP_)
- {_BP_ = caml_wrap_exception(_BP_);
- if(_BP_ === Not_found)return 0;
- throw _BP_}}
- var interactive=[0,0];
- function set_signal(sig_num,sig_beh){return 0}
- var
- Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)],
- sigabrt=-1,
- sigalrm=-2,
- sigfpe=-3,
- sighup=-4,
- sigill=-5,
- sigint=-6,
- sigkill=-7,
- sigpipe=-8,
- sigquit=-9,
- sigsegv=-10,
- sigterm=-11,
- sigusr1=-12,
- sigusr2=-13,
- sigchld=-14,
- sigcont=-15,
- sigstop=-16,
- sigtstp=-17,
- sigttin=-18,
- sigttou=-19,
- sigvtalrm=-20,
- sigprof=-21,
- sigbus=-22,
- sigpoll=-23,
- sigsys=-24,
- sigtrap=-25,
- sigurg=-26,
- sigxcpu=-27,
- sigxfsz=-28;
- function catch_break(on){return on?0:0}
- function Make(_BN_,_BM_){return [0,1]}
- var
- Immediate64=[0,Make],
- Stdlib_Sys=
- [0,
- executable_name,
- getenv_opt,
- interactive,
- os_type,
- match$0,
- unix,
- win32,
- cygwin,
- match$1,
- int_size,
- big_endian,
- max_string_length,
- max_array_length,
- max_floatarray_length,
- set_signal,
- sigabrt,
- sigalrm,
- sigfpe,
- sighup,
- sigill,
- sigint,
- sigkill,
- sigpipe,
- sigquit,
- sigsegv,
- sigterm,
- sigusr1,
- sigusr2,
- sigchld,
- sigcont,
- sigstop,
- sigtstp,
- sigttin,
- sigttou,
- sigvtalrm,
- sigprof,
- sigbus,
- sigpoll,
- sigsys,
- sigtrap,
- sigurg,
- sigxcpu,
- sigxfsz,
- Break,
- catch_break,
- ocaml_version,
- runtime.caml_ml_enable_runtime_warnings,
- runtime.caml_ml_runtime_warnings_enabled,
- Immediate64];
- caml_register_global(768,Stdlib_Sys,"Stdlib__Sys");
- function length(l)
- {var len=0,param=l;
- for(;;)
- {if(param)
- {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0;
- continue}
- return len}}
- function cons$0(a,l){return [0,a,l]}
- function hd(param)
- {if(param){var a=param[1];return a}return failwith(cst_hd)}
- function tl(param)
- {if(param){var l=param[2];return l}return failwith(cst_tl)}
- function nth(l,n)
- {if(0 <= n)
- {var l$0=l,n$0=n;
- for(;;)
- {if(l$0)
- {var l$1=l$0[2],a=l$0[1];
- if(0 === n$0)return a;
- var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;
- continue}
- return failwith(cst_nth)}}
- return invalid_arg(cst_List_nth)}
- function nth_opt(l,n)
- {if(0 <= n)
- {var l$0=l,n$0=n;
- for(;;)
- {if(l$0)
- {var l$1=l$0[2],a=l$0[1];
- if(0 === n$0)return [0,a];
- var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;
- continue}
- return 0}}
- return invalid_arg(cst_List_nth$0)}
- function rev_append(l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1;
- continue}
- return l2$0}}
- function rev(l){return rev_append(l,0)}
- function init_aux(i,n,f)
- {if(n <= i)return 0;
- var r=caml_call1(f,i);
- return [0,r,init_aux(i + 1 | 0,n,f)]}
- function init(len,f)
- {if(0 <= len)
- {if(50 < len)
- {var acc=0,i=0;
- for(;;)
- {if(len <= i)return rev(acc);
- var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0;
- continue}}
- return init_aux(0,len,f)}
- return invalid_arg(cst_List_init)}
- function flatten(param)
- {if(param){var r=param[2],l=param[1];return append(l,flatten(r))}
- return 0}
- function map$3(f,param)
- {if(param)
- {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$3(f,l)]}
- return 0}
- function _o_(i,f,param)
- {if(param)
- {var l=param[2],a=param[1],r=caml_call2(f,i,a);
- return [0,r,_o_(i + 1 | 0,f,l)]}
- return 0}
- function mapi(f,l){return _o_(0,f,l)}
- function rev_map(f,param)
- {var accu=0,param$0=param;
- for(;;)
- {if(param$0)
- {var
- l=param$0[2],
- a=param$0[1],
- accu$0=[0,caml_call1(f,a),accu],
- accu=accu$0,
- param$0=l;
- continue}
- return accu}}
- function iter$2(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1];
- caml_call1(f,a);
- var param$0=l;
- continue}
- return 0}}
- function iteri(f,l$0)
- {var i=0,param=l$0;
- for(;;)
- {if(param)
- {var l=param[2],a=param[1];
- caml_call2(f,i,a);
- var i$0=i + 1 | 0,i=i$0,param=l;
- continue}
- return 0}}
- function fold_left$0(f,accu,l)
- {var accu$0=accu,l$0=l;
- for(;;)
- {if(l$0)
- {var
- l$1=l$0[2],
- a=l$0[1],
- accu$1=caml_call2(f,accu$0,a),
- accu$0=accu$1,
- l$0=l$1;
- continue}
- return accu$0}}
- function fold_right(f,l,accu)
- {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))}
- return accu}
- function map2(f,l1,l2)
- {if(l1)
- {if(l2)
- {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2);
- return [0,r,map2(f,l1$0,l2$0)]}}
- else
- if(! l2)return 0;
- return invalid_arg(cst_List_map2)}
- function rev_map2(f,l1,l2)
- {var accu=0,l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var
- l2$1=l2$0[2],
- a2=l2$0[1],
- l1$1=l1$0[2],
- a1=l1$0[1],
- accu$0=[0,caml_call2(f,a1,a2),accu],
- accu=accu$0,
- l1$0=l1$1,
- l2$0=l2$1;
- continue}}
- else
- if(! l2$0)return accu;
- return invalid_arg(cst_List_rev_map2)}}
- function iter2(f,l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1];
- caml_call2(f,a1,a2);
- var l1$0=l1$1,l2$0=l2$1;
- continue}}
- else
- if(! l2$0)return 0;
- return invalid_arg(cst_List_iter2)}}
- function fold_left2(f,accu,l1,l2)
- {var accu$0=accu,l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var
- l2$1=l2$0[2],
- a2=l2$0[1],
- l1$1=l1$0[2],
- a1=l1$0[1],
- accu$1=caml_call3(f,accu$0,a1,a2),
- accu$0=accu$1,
- l1$0=l1$1,
- l2$0=l2$1;
- continue}}
- else
- if(! l2$0)return accu$0;
- return invalid_arg(cst_List_fold_left2)}}
- function fold_right2(f,l1,l2,accu)
- {if(l1)
- {if(l2)
- {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1];
- return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}}
- else
- if(! l2)return accu;
- return invalid_arg(cst_List_fold_right2)}
- function for_all(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1],_BL_=caml_call1(p,a);
- if(_BL_){var param$0=l;continue}
- return _BL_}
- return 1}}
- function exists(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1],_BK_=caml_call1(p,a);
- if(_BK_)return _BK_;
- var param$0=l;
- continue}
- return 0}}
- function for_all2(p,l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var
- l2$1=l2$0[2],
- a2=l2$0[1],
- l1$1=l1$0[2],
- a1=l1$0[1],
- _BJ_=caml_call2(p,a1,a2);
- if(_BJ_){var l1$0=l1$1,l2$0=l2$1;continue}
- return _BJ_}}
- else
- if(! l2$0)return 1;
- return invalid_arg(cst_List_for_all2)}}
- function exists2(p,l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var
- l2$1=l2$0[2],
- a2=l2$0[1],
- l1$1=l1$0[2],
- a1=l1$0[1],
- _BI_=caml_call2(p,a1,a2);
- if(_BI_)return _BI_;
- var l1$0=l1$1,l2$0=l2$1;
- continue}}
- else
- if(! l2$0)return 0;
- return invalid_arg(cst_List_exists2)}}
- function mem(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1],_BH_=0 === caml_compare(a,x)?1:0;
- if(_BH_)return _BH_;
- var param$0=l;
- continue}
- return 0}}
- function memq(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],a=param$0[1],_BG_=a === x?1:0;
- if(_BG_)return _BG_;
- var param$0=l;
- continue}
- return 0}}
- function assoc(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
- if(0 === caml_compare(a,x))return b;
- var param$0=l;
- continue}
- throw Not_found}}
- function assoc_opt(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
- if(0 === caml_compare(a,x))return [0,b];
- var param$0=l;
- continue}
- return 0}}
- function assq(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
- if(a === x)return b;
- var param$0=l;
- continue}
- throw Not_found}}
- function assq_opt(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
- if(a === x)return [0,b];
- var param$0=l;
- continue}
- return 0}}
- function mem_assoc(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- l=param$0[2],
- match=param$0[1],
- a=match[1],
- _BF_=0 === caml_compare(a,x)?1:0;
- if(_BF_)return _BF_;
- var param$0=l;
- continue}
- return 0}}
- function mem_assq(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],match=param$0[1],a=match[1],_BE_=a === x?1:0;
- if(_BE_)return _BE_;
- var param$0=l;
- continue}
- return 0}}
- function remove_assoc(x,param)
- {if(param)
- {var l=param[2],pair=param[1],a=pair[1];
- return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]}
- return 0}
- function remove_assq(x,param)
- {if(param)
- {var l=param[2],pair=param[1],a=pair[1];
- return a === x?l:[0,pair,remove_assq(x,l)]}
- return 0}
- function find(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],x=param$0[1];
- if(caml_call1(p,x))return x;
- var param$0=l;
- continue}
- throw Not_found}}
- function find_opt(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],x=param$0[1];
- if(caml_call1(p,x))return [0,x];
- var param$0=l;
- continue}
- return 0}}
- function find_map(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],x=param$0[1],result=caml_call1(f,x);
- if(result)return result;
- var param$0=l;
- continue}
- return 0}}
- function find_all(p)
- {var accu=0;
- return function(param$0)
- {var accu$0=accu,param=param$0;
- for(;;)
- {if(param)
- {var l=param[2],x=param[1];
- if(caml_call1(p,x))
- {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue}
- var param=l;
- continue}
- return rev(accu$0)}}}
- function filteri(p,param)
- {var i=0,acc=0,param$0=param;
- for(;;)
- {if(param$0)
- {var
- l=param$0[2],
- x=param$0[1],
- acc$0=caml_call2(p,i,x)?[0,x,acc]:acc,
- i$0=i + 1 | 0,
- i=i$0,
- acc=acc$0,
- param$0=l;
- continue}
- return rev(acc)}}
- function filter_map$0(f)
- {var accu=0;
- return function(param$0)
- {var accu$0=accu,param=param$0;
- for(;;)
- {if(param)
- {var l=param[2],x=param[1],match=caml_call1(f,x);
- if(match)
- {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l;
- continue}
- var param=l;
- continue}
- return rev(accu$0)}}}
- function concat_map(f,param)
- {var acc=0,param$0=param;
- for(;;)
- {if(param$0)
- {var
- l=param$0[2],
- x=param$0[1],
- xs=caml_call1(f,x),
- acc$0=rev_append(xs,acc),
- acc=acc$0,
- param$0=l;
- continue}
- return rev(acc)}}
- function fold_left_map(f,accu,param)
- {var accu$0=accu,l_accu=0,param$0=param;
- for(;;)
- {if(param$0)
- {var
- l=param$0[2],
- x=param$0[1],
- match=caml_call2(f,accu$0,x),
- x$0=match[2],
- accu$1=match[1],
- l_accu$0=[0,x$0,l_accu],
- accu$0=accu$1,
- l_accu=l_accu$0,
- param$0=l;
- continue}
- return [0,accu$0,rev(l_accu)]}}
- function partition(p,param)
- {var yes=0,no=0,param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],x=param$0[1];
- if(caml_call1(p,x))
- {var yes$0=[0,x,yes],yes=yes$0,param$0=l;continue}
- var no$0=[0,x,no],no=no$0,param$0=l;
- continue}
- var _BD_=rev(no);
- return [0,rev(yes),_BD_]}}
- function partition_map(p,param)
- {var left=0,right=0,param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],x=param$0[1],match=caml_call1(p,x);
- if(0 === match[0])
- {var v=match[1],left$0=[0,v,left],left=left$0,param$0=l;continue}
- var v$0=match[1],right$0=[0,v$0,right],right=right$0,param$0=l;
- continue}
- var _BC_=rev(right);
- return [0,rev(left),_BC_]}}
- function split(param)
- {if(param)
- {var
- l=param[2],
- match=param[1],
- y=match[2],
- x=match[1],
- match$0=split(l),
- ry=match$0[2],
- rx=match$0[1];
- return [0,[0,x,rx],[0,y,ry]]}
- return _p_}
- function combine(l1,l2)
- {if(l1)
- {if(l2)
- {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1];
- return [0,[0,a1,a2],combine(l1$0,l2$0)]}}
- else
- if(! l2)return 0;
- return invalid_arg(cst_List_combine)}
- function merge(cmp,l1,l2)
- {if(l1)
- {if(l2)
- {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1];
- return 0 < caml_call2(cmp,h1,h2)
- ?[0,h2,merge(cmp,l1,t2)]
- :[0,h1,merge(cmp,t1,l2)]}
- return l1}
- return l2}
- function fast_sort(cmp,l)
- {function rev_sort(n,l)
- {if(2 === n)
- {if(l)
- {var _By_=l[2];
- if(_By_)
- {var
- tl=_By_[2],
- x2=_By_[1],
- x1=l[1],
- s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]];
- return [0,s,tl]}}}
- else
- if(3 === n && l)
- {var _BA_=l[2];
- if(_BA_)
- {var _BB_=_BA_[2];
- if(_BB_)
- {var
- tl$1=_BB_[2],
- x3=_BB_[1],
- x2$0=_BA_[1],
- x1$0=l[1],
- s$0=
- 0 < caml_call2(cmp,x1$0,x2$0)
- ?0 < caml_call2(cmp,x2$0,x3)
- ?[0,x1$0,[0,x2$0,[0,x3,0]]]
- :0 < caml_call2(cmp,x1$0,x3)
- ?[0,x1$0,[0,x3,[0,x2$0,0]]]
- :[0,x3,[0,x1$0,[0,x2$0,0]]]
- :0 < caml_call2(cmp,x1$0,x3)
- ?[0,x2$0,[0,x1$0,[0,x3,0]]]
- :0 < caml_call2(cmp,x2$0,x3)
- ?[0,x2$0,[0,x3,[0,x1$0,0]]]
- :[0,x3,[0,x2$0,[0,x1$0,0]]];
- return [0,s$0,tl$1]}}}
- var
- n1=n >> 1,
- n2=n - n1 | 0,
- match=sort(n1,l),
- l2$0=match[2],
- s1=match[1],
- match$0=sort(n2,l2$0),
- tl$0=match$0[2],
- s2=match$0[1],
- l1=s1,
- l2=s2,
- accu=0;
- for(;;)
- {if(l1)
- {if(l2)
- {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1];
- if(0 < caml_call2(cmp,h1,h2))
- {var accu$0=[0,h2,accu],l2=t2,accu=accu$0;continue}
- var accu$1=[0,h1,accu],l1=t1,accu=accu$1;
- continue}
- var _Bz_=rev_append(l1,accu)}
- else
- var _Bz_=rev_append(l2,accu);
- return [0,_Bz_,tl$0]}}
- function sort(n,l)
- {if(2 === n)
- {if(l)
- {var _Bu_=l[2];
- if(_Bu_)
- {var
- tl=_Bu_[2],
- x2=_Bu_[1],
- x1=l[1],
- s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]];
- return [0,s,tl]}}}
- else
- if(3 === n && l)
- {var _Bw_=l[2];
- if(_Bw_)
- {var _Bx_=_Bw_[2];
- if(_Bx_)
- {var
- tl$1=_Bx_[2],
- x3=_Bx_[1],
- x2$0=_Bw_[1],
- x1$0=l[1],
- s$0=
- 0 < caml_call2(cmp,x1$0,x2$0)
- ?0 < caml_call2(cmp,x1$0,x3)
- ?0 < caml_call2(cmp,x2$0,x3)
- ?[0,x3,[0,x2$0,[0,x1$0,0]]]
- :[0,x2$0,[0,x3,[0,x1$0,0]]]
- :[0,x2$0,[0,x1$0,[0,x3,0]]]
- :0 < caml_call2(cmp,x2$0,x3)
- ?0 < caml_call2(cmp,x1$0,x3)
- ?[0,x3,[0,x1$0,[0,x2$0,0]]]
- :[0,x1$0,[0,x3,[0,x2$0,0]]]
- :[0,x1$0,[0,x2$0,[0,x3,0]]];
- return [0,s$0,tl$1]}}}
- var
- n1=n >> 1,
- n2=n - n1 | 0,
- match=rev_sort(n1,l),
- l2$0=match[2],
- s1=match[1],
- match$0=rev_sort(n2,l2$0),
- tl$0=match$0[2],
- s2=match$0[1],
- l1=s1,
- l2=s2,
- accu=0;
- for(;;)
- {if(l1)
- {if(l2)
- {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1];
- if(0 < caml_call2(cmp,h1,h2))
- {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue}
- var accu$1=[0,h2,accu],l2=t2,accu=accu$1;
- continue}
- var _Bv_=rev_append(l1,accu)}
- else
- var _Bv_=rev_append(l2,accu);
- return [0,_Bv_,tl$0]}}
- var len=length(l);
- return 2 <= len?sort(len,l)[1]:l}
- function sort_uniq(cmp,l)
- {function rev_sort(n,l)
- {if(2 === n)
- {if(l)
- {var _Bl_=l[2];
- if(_Bl_)
- {var
- tl=_Bl_[2],
- x2=_Bl_[1],
- x1=l[1],
- c$0=caml_call2(cmp,x1,x2),
- s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]];
- return [0,s,tl]}}}
- else
- if(3 === n && l)
- {var _Bn_=l[2];
- if(_Bn_)
- {var _Bo_=_Bn_[2];
- if(_Bo_)
- {var
- tl$1=_Bo_[2],
- x3=_Bo_[1],
- x2$0=_Bn_[1],
- x1$0=l[1],
- c$1=caml_call2(cmp,x1$0,x2$0);
- if(0 === c$1)
- var
- c$2=caml_call2(cmp,x2$0,x3),
- _Bp_=
- 0 === c$2
- ?[0,x2$0,0]
- :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]],
- s$0=_Bp_;
- else
- if(0 < c$1)
- {var c$3=caml_call2(cmp,x2$0,x3);
- if(0 === c$3)
- var _Bq_=[0,x1$0,[0,x2$0,0]];
- else
- if(0 < c$3)
- var _Bq_=[0,x1$0,[0,x2$0,[0,x3,0]]];
- else
- var
- c$4=caml_call2(cmp,x1$0,x3),
- _Br_=
- 0 === c$4
- ?[0,x1$0,[0,x2$0,0]]
- :0 < c$4
- ?[0,x1$0,[0,x3,[0,x2$0,0]]]
- :[0,x3,[0,x1$0,[0,x2$0,0]]],
- _Bq_=_Br_;
- var s$0=_Bq_}
- else
- {var c$5=caml_call2(cmp,x1$0,x3);
- if(0 === c$5)
- var _Bs_=[0,x2$0,[0,x1$0,0]];
- else
- if(0 < c$5)
- var _Bs_=[0,x2$0,[0,x1$0,[0,x3,0]]];
- else
- var
- c$6=caml_call2(cmp,x2$0,x3),
- _Bt_=
- 0 === c$6
- ?[0,x2$0,[0,x1$0,0]]
- :0 < c$6
- ?[0,x2$0,[0,x3,[0,x1$0,0]]]
- :[0,x3,[0,x2$0,[0,x1$0,0]]],
- _Bs_=_Bt_;
- var s$0=_Bs_}
- return [0,s$0,tl$1]}}}
- var
- n1=n >> 1,
- n2=n - n1 | 0,
- match=sort(n1,l),
- l2$0=match[2],
- s1=match[1],
- match$0=sort(n2,l2$0),
- tl$0=match$0[2],
- s2=match$0[1],
- l1=s1,
- l2=s2,
- accu=0;
- for(;;)
- {if(l1)
- {if(l2)
- {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2);
- if(0 === c)
- {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue}
- if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue}
- var accu$2=[0,h1,accu],l1=t1,accu=accu$2;
- continue}
- var _Bm_=rev_append(l1,accu)}
- else
- var _Bm_=rev_append(l2,accu);
- return [0,_Bm_,tl$0]}}
- function sort(n,l)
- {if(2 === n)
- {if(l)
- {var _Bc_=l[2];
- if(_Bc_)
- {var
- tl=_Bc_[2],
- x2=_Bc_[1],
- x1=l[1],
- c$0=caml_call2(cmp,x1,x2),
- s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]];
- return [0,s,tl]}}}
- else
- if(3 === n && l)
- {var _Be_=l[2];
- if(_Be_)
- {var _Bf_=_Be_[2];
- if(_Bf_)
- {var
- tl$1=_Bf_[2],
- x3=_Bf_[1],
- x2$0=_Be_[1],
- x1$0=l[1],
- c$1=caml_call2(cmp,x1$0,x2$0);
- if(0 === c$1)
- var
- c$2=caml_call2(cmp,x2$0,x3),
- _Bg_=
- 0 === c$2
- ?[0,x2$0,0]
- :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]],
- s$0=_Bg_;
- else
- if(0 <= c$1)
- {var c$3=caml_call2(cmp,x1$0,x3);
- if(0 === c$3)
- var _Bh_=[0,x2$0,[0,x1$0,0]];
- else
- if(0 <= c$3)
- var
- c$4=caml_call2(cmp,x2$0,x3),
- _Bi_=
- 0 === c$4
- ?[0,x2$0,[0,x1$0,0]]
- :0 <= c$4
- ?[0,x3,[0,x2$0,[0,x1$0,0]]]
- :[0,x2$0,[0,x3,[0,x1$0,0]]],
- _Bh_=_Bi_;
- else
- var _Bh_=[0,x2$0,[0,x1$0,[0,x3,0]]];
- var s$0=_Bh_}
- else
- {var c$5=caml_call2(cmp,x2$0,x3);
- if(0 === c$5)
- var _Bj_=[0,x1$0,[0,x2$0,0]];
- else
- if(0 <= c$5)
- var
- c$6=caml_call2(cmp,x1$0,x3),
- _Bk_=
- 0 === c$6
- ?[0,x1$0,[0,x2$0,0]]
- :0 <= c$6
- ?[0,x3,[0,x1$0,[0,x2$0,0]]]
- :[0,x1$0,[0,x3,[0,x2$0,0]]],
- _Bj_=_Bk_;
- else
- var _Bj_=[0,x1$0,[0,x2$0,[0,x3,0]]];
- var s$0=_Bj_}
- return [0,s$0,tl$1]}}}
- var
- n1=n >> 1,
- n2=n - n1 | 0,
- match=rev_sort(n1,l),
- l2$0=match[2],
- s1=match[1],
- match$0=rev_sort(n2,l2$0),
- tl$0=match$0[2],
- s2=match$0[1],
- l1=s1,
- l2=s2,
- accu=0;
- for(;;)
- {if(l1)
- {if(l2)
- {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2);
- if(0 === c)
- {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue}
- if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue}
- var accu$2=[0,h2,accu],l2=t2,accu=accu$2;
- continue}
- var _Bd_=rev_append(l1,accu)}
- else
- var _Bd_=rev_append(l2,accu);
- return [0,_Bd_,tl$0]}}
- var len=length(l);
- return 2 <= len?sort(len,l)[1]:l}
- function compare_lengths(l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue}
- return 1}
- return l2$0?-1:0}}
- function compare_length_with(l,n)
- {var l$0=l,n$0=n;
- for(;;)
- {if(l$0)
- {var l$1=l$0[2];
- if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue}
- return 1}
- return 0 === n$0?0:0 < n$0?-1:1}}
- function equal$5(eq,l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {if(l2$0)
- {var
- l2$1=l2$0[2],
- a2=l2$0[1],
- l1$1=l1$0[2],
- a1=l1$0[1],
- _Bb_=caml_call2(eq,a1,a2);
- if(_Bb_){var l1$0=l1$1,l2$0=l2$1;continue}
- return _Bb_}}
- else
- if(! l2$0)return 1;
- return 0}}
- function compare$5(cmp,l1,l2)
- {var l1$0=l1,l2$0=l2;
- for(;;)
- {if(l1$0)
- {var _A$_=l1$0[2],_Ba_=l1$0[1];
- if(l2$0)
- {var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_Ba_,a2);
- if(0 === c){var l1$0=_A$_,l2$0=l2$1;continue}
- return c}
- return 1}
- return l2$0?-1:0}}
- function to_seq$1(l)
- {function aux(l,param)
- {if(l)
- {var tail=l[2],x=l[1];
- return [0,x,function(_A__){return aux(tail,_A__)}]}
- return 0}
- return function(_A9_){return aux(l,_A9_)}}
- function of_seq(seq)
- {function direct(depth,seq)
- {if(0 === depth)
- {var _A8_=0;
- return rev(fold_left(function(acc,x){return [0,x,acc]},_A8_,seq))}
- var match=caml_call1(seq,0);
- if(match)
- {var next=match[2],x=match[1];
- return [0,x,direct(depth - 1 | 0,next)]}
- return 0}
- return direct(500,seq)}
- var
- include$0=
- [0,
- length,
- compare_lengths,
- compare_length_with,
- cons$0,
- hd,
- tl,
- nth,
- nth_opt,
- rev,
- init,
- append,
- rev_append,
- flatten,
- flatten,
- equal$5,
- compare$5,
- iter$2,
- iteri,
- map$3,
- mapi,
- rev_map,
- filter_map$0,
- concat_map,
- fold_left_map,
- fold_left$0,
- fold_right,
- iter2,
- map2,
- rev_map2,
- fold_left2,
- fold_right2,
- for_all,
- exists,
- for_all2,
- exists2,
- mem,
- memq,
- find,
- find_opt,
- find_map,
- find_all,
- find_all,
- filteri,
- partition,
- partition_map,
- assoc,
- assoc_opt,
- assq,
- assq_opt,
- mem_assoc,
- mem_assq,
- remove_assoc,
- remove_assq,
- split,
- combine,
- fast_sort,
- fast_sort,
- fast_sort,
- sort_uniq,
- merge,
- to_seq$1,
- of_seq];
- caml_register_global(769,include$0,"Stdlib__List");
- var zero=0,one=1,minus_one=-1;
- function abs$0(x){return 0 <= x?x:- x | 0}
- var max_int$0=2147483647,min_int$0=-2147483648;
- function lognot(x){return x ^ -1}
- function equal$6(_A7_,_A6_){return _A7_ === _A6_?1:0}
- var compare$6=caml_int_compare;
- function min$1(x,y){return x <= y?x:y}
- function max$1(x,y){return y <= x?x:y}
- function to_string$1(x){return caml_string_of_jsbytes("" + x)}
- var
- Stdlib_Int=
- [0,
- zero,
- one,
- minus_one,
- abs$0,
- max_int$0,
- min_int$0,
- lognot,
- equal$6,
- compare$6,
- min$1,
- max$1,
- to_string$1];
- caml_register_global(770,Stdlib_Int,"Stdlib__Int");
- function make$0(n,c)
- {var s=caml_create_bytes(n);caml_fill_bytes(s,0,n,c);return s}
- function init$0(n,f)
- {var s=caml_create_bytes(n),_A4_=n - 1 | 0,_A3_=0;
- if(! (_A4_ < 0))
- {var i=_A3_;
- for(;;)
- {caml_bytes_unsafe_set(s,i,caml_call1(f,i));
- var _A5_=i + 1 | 0;
- if(_A4_ !== i){var i=_A5_;continue}
- break}}
- return s}
- var empty$0=caml_create_bytes(0);
- function copy(s)
- {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len);
- caml_blit_bytes(s,0,r,0,len);
- return r}
- function of_bytes(b){return caml_string_of_bytes(copy(b))}
- function to_bytes(s){return copy(caml_bytes_of_string(s))}
- function sub(s,ofs,len)
- {if
- (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
- {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r}
- return invalid_arg(cst_String_sub_Bytes_sub)}
- function sub_string(b,ofs,len)
- {return caml_string_of_bytes(sub(b,ofs,len))}
- function symbol$0(a,b)
- {var c=a + b | 0,_A2_=b < 0?1:0,match=c < 0?1:0,switch$0=0;
- if(a < 0)
- {if(_A2_ && ! match)switch$0 = 1}
- else
- if(! _A2_ && match)switch$0 = 1;
- return switch$0?invalid_arg(cst_Bytes_extend):c}
- function extend(s,left,right)
- {var
- len=symbol$0(symbol$0(caml_ml_bytes_length(s),left),right),
- r=caml_create_bytes(len);
- if(0 <= left)
- var dstoff=left,srcoff=0;
- else
- var dstoff=0,srcoff=- left | 0;
- var cpylen=min$1(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0);
- if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen);
- return r}
- function fill(s,ofs,len,c)
- {if
- (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
- return caml_fill_bytes(s,ofs,len,c);
- return invalid_arg(cst_String_fill_Bytes_fill)}
- function blit(s1,ofs1,s2,ofs2,len)
- {if
- (0
- <=
- len
- &&
- 0
- <=
- ofs1
- &&
- !
- ((caml_ml_bytes_length(s1) - len | 0) < ofs1)
- &&
- 0
- <=
- ofs2
- &&
- !
- ((caml_ml_bytes_length(s2) - len | 0) < ofs2))
- return caml_blit_bytes(s1,ofs1,s2,ofs2,len);
- return invalid_arg(cst_Bytes_blit)}
- function blit$0(s1,ofs1,s2,ofs2,len)
- {if
- (0
- <=
- len
- &&
- 0
- <=
- ofs1
- &&
- !
- ((caml_ml_string_length(s1) - len | 0) < ofs1)
- &&
- 0
- <=
- ofs2
- &&
- !
- ((caml_ml_bytes_length(s2) - len | 0) < ofs2))
- return caml_blit_string(s1,ofs1,s2,ofs2,len);
- return invalid_arg(cst_String_blit_Bytes_blit_str)}
- function iter$3(f,a)
- {var _A0_=caml_ml_bytes_length(a) - 1 | 0,_AZ_=0;
- if(! (_A0_ < 0))
- {var i=_AZ_;
- for(;;)
- {caml_call1(f,caml_bytes_unsafe_get(a,i));
- var _A1_=i + 1 | 0;
- if(_A0_ !== i){var i=_A1_;continue}
- break}}
- return 0}
- function iteri$0(f,a)
- {var _AX_=caml_ml_bytes_length(a) - 1 | 0,_AW_=0;
- if(! (_AX_ < 0))
- {var i=_AW_;
- for(;;)
- {caml_call2(f,i,caml_bytes_unsafe_get(a,i));
- var _AY_=i + 1 | 0;
- if(_AX_ !== i){var i=_AY_;continue}
- break}}
- return 0}
- function concat$0(sep,l)
- {if(l)
- {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0;
- for(;;)
- {if(param)
- {var _AT_=param[1];
- if(param[2])
- {var
- tl=param[2],
- x=(caml_ml_bytes_length(_AT_) + seplen | 0) + acc | 0,
- acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat),
- acc=acc$0,
- param=tl;
- continue}
- var _AV_=caml_ml_bytes_length(_AT_) + acc | 0}
- else
- var _AV_=acc;
- var dst=caml_create_bytes(_AV_),pos=pos$1,param$0=l;
- for(;;)
- {if(param$0)
- {var _AU_=param$0[1];
- if(param$0[2])
- {var tl$0=param$0[2];
- caml_blit_bytes(_AU_,0,dst,pos,caml_ml_bytes_length(_AU_));
- caml_blit_bytes
- (sep,0,dst,pos + caml_ml_bytes_length(_AU_) | 0,seplen);
- var
- pos$0=(pos + caml_ml_bytes_length(_AU_) | 0) + seplen | 0,
- pos=pos$0,
- param$0=tl$0;
- continue}
- caml_blit_bytes(_AU_,0,dst,pos,caml_ml_bytes_length(_AU_));
- return dst}
- return dst}}}
- return empty$0}
- function cat$0(s1,s2)
- {var
- l1=caml_ml_bytes_length(s1),
- l2=caml_ml_bytes_length(s2),
- r=caml_create_bytes(l1 + l2 | 0);
- caml_blit_bytes(s1,0,r,0,l1);
- caml_blit_bytes(s2,0,r,l1,l2);
- return r}
- function is_space(param)
- {var _AS_=param - 9 | 0,switch$0=0;
- if(4 < _AS_ >>> 0)
- {if(23 === _AS_)switch$0 = 1}
- else
- if(2 !== _AS_)switch$0 = 1;
- return switch$0?1:0}
- function trim(s)
- {var len=caml_ml_bytes_length(s),i=[0,0];
- for(;;)
- {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1])))
- {i[1]++;continue}
- var j=[0,len - 1 | 0];
- for(;;)
- {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1])))
- {j[1] += -1;continue}
- return i[1] <= j[1]?sub(s,i[1],(j[1] - i[1] | 0) + 1 | 0):empty$0}}}
- function escaped$0(s)
- {var n=[0,0],_AL_=caml_ml_bytes_length(s) - 1 | 0,_AK_=0;
- if(! (_AL_ < 0))
- {var i$0=_AK_;
- for(;;)
- {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0;
- if(32 <= match)
- {var _AP_=match - 34 | 0,switch$1=0;
- if(58 < _AP_ >>> 0)
- {if(93 <= _AP_)switch$1 = 1}
- else
- if(56 < _AP_ - 1 >>> 0){switch$0 = 1;switch$1 = 1}
- if(! switch$1){var _AQ_=1;switch$0 = 2}}
- else
- if(11 <= match)
- {if(13 === match)switch$0 = 1}
- else
- if(8 <= match)switch$0 = 1;
- switch(switch$0){case 0:var _AQ_=4;break;case 1:var _AQ_=2;break}
- n[1] = n[1] + _AQ_ | 0;
- var _AR_=i$0 + 1 | 0;
- if(_AL_ !== i$0){var i$0=_AR_;continue}
- break}}
- if(n[1] === caml_ml_bytes_length(s))return copy(s);
- var s$0=caml_create_bytes(n[1]);
- n[1] = 0;
- var _AN_=caml_ml_bytes_length(s) - 1 | 0,_AM_=0;
- if(! (_AN_ < 0))
- {var i=_AM_;
- for(;;)
- {var c=caml_bytes_unsafe_get(s,i),switch$2=0;
- if(35 <= c)
- if(92 === c)
- switch$2 = 2;
- else
- if(127 <= c)switch$2 = 1;else switch$2 = 3;
- else
- if(32 <= c)
- if(34 <= c)switch$2 = 2;else switch$2 = 3;
- else
- if(14 <= c)
- switch$2 = 1;
- else
- switch(c)
- {case 8:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],98);
- break;
- case 9:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],116);
- break;
- case 10:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],110);
- break;
- case 13:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],114);
- break;
- default:switch$2 = 1}
- switch(switch$2)
- {case 1:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0);
- break;
- case 2:
- caml_bytes_unsafe_set(s$0,n[1],92);
- n[1]++;
- caml_bytes_unsafe_set(s$0,n[1],c);
- break;
- case 3:caml_bytes_unsafe_set(s$0,n[1],c);break
- }
- n[1]++;
- var _AO_=i + 1 | 0;
- if(_AN_ !== i){var i=_AO_;continue}
- break}}
- return s$0}
- function map$4(f,s)
- {var l=caml_ml_bytes_length(s);
- if(0 === l)return s;
- var r=caml_create_bytes(l),_AI_=l - 1 | 0,_AH_=0;
- if(! (_AI_ < 0))
- {var i=_AH_;
- for(;;)
- {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i)));
- var _AJ_=i + 1 | 0;
- if(_AI_ !== i){var i=_AJ_;continue}
- break}}
- return r}
- function mapi$0(f,s)
- {var l=caml_ml_bytes_length(s);
- if(0 === l)return s;
- var r=caml_create_bytes(l),_AF_=l - 1 | 0,_AE_=0;
- if(! (_AF_ < 0))
- {var i=_AE_;
- for(;;)
- {caml_bytes_unsafe_set
- (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i)));
- var _AG_=i + 1 | 0;
- if(_AF_ !== i){var i=_AG_;continue}
- break}}
- return r}
- function fold_left$1(f,x,a)
- {var r=[0,x],_AC_=caml_ml_bytes_length(a) - 1 | 0,_AB_=0;
- if(! (_AC_ < 0))
- {var i=_AB_;
- for(;;)
- {r[1] = caml_call2(f,r[1],caml_bytes_unsafe_get(a,i));
- var _AD_=i + 1 | 0;
- if(_AC_ !== i){var i=_AD_;continue}
- break}}
- return r[1]}
- function fold_right$0(f,a,x)
- {var r=[0,x],_Az_=caml_ml_bytes_length(a) - 1 | 0;
- if(! (_Az_ < 0))
- {var i=_Az_;
- for(;;)
- {r[1] = caml_call2(f,caml_bytes_unsafe_get(a,i),r[1]);
- var _AA_=i - 1 | 0;
- if(0 !== i){var i=_AA_;continue}
- break}}
- return r[1]}
- function exists$0(p,s)
- {var n=caml_ml_bytes_length(s),i=0;
- for(;;)
- {if(i === n)return 0;
- if(caml_call1(p,caml_bytes_unsafe_get(s,i)))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function for_all$0(p,s)
- {var n=caml_ml_bytes_length(s),i=0;
- for(;;)
- {if(i === n)return 1;
- if(caml_call1(p,caml_bytes_unsafe_get(s,i)))
- {var i$0=i + 1 | 0,i=i$0;continue}
- return 0}}
- function uppercase_ascii$0(s){return map$4(uppercase_ascii,s)}
- function lowercase_ascii$0(s){return map$4(lowercase_ascii,s)}
- function apply1(f,s)
- {if(0 === caml_ml_bytes_length(s))return s;
- var r=copy(s);
- caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0)));
- return r}
- function capitalize_ascii(s){return apply1(uppercase_ascii,s)}
- function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)}
- function starts_with(prefix,s)
- {var
- len_s=caml_ml_bytes_length(s),
- len_pre=caml_ml_bytes_length(prefix),
- _Ay_=len_pre <= len_s?1:0;
- if(_Ay_)
- {var i=0;
- for(;;)
- {if(i === len_pre)return 1;
- if(caml_bytes_unsafe_get(s,i) !== caml_bytes_unsafe_get(prefix,i))
- return 0;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- return _Ay_}
- function ends_with(suffix,s)
- {var
- len_s=caml_ml_bytes_length(s),
- len_suf=caml_ml_bytes_length(suffix),
- diff=len_s - len_suf | 0,
- _Ax_=0 <= diff?1:0;
- if(_Ax_)
- {var i=0;
- for(;;)
- {if(i === len_suf)return 1;
- if
- (caml_bytes_unsafe_get(s,diff + i | 0)
- !==
- caml_bytes_unsafe_get(suffix,i))
- return 0;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- return _Ax_}
- function index_rec(s,lim,i,c)
- {var i$0=i;
- for(;;)
- {if(lim <= i$0)throw Not_found;
- if(caml_bytes_unsafe_get(s,i$0) === c)return i$0;
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)}
- function index_rec_opt(s,lim,i,c)
- {var i$0=i;
- for(;;)
- {if(lim <= i$0)return 0;
- if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0];
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function index_opt(s,c)
- {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)}
- function index_from(s,i,c)
- {var l=caml_ml_bytes_length(s);
- if(0 <= i && ! (l < i))return index_rec(s,l,i,c);
- return invalid_arg(cst_String_index_from_Bytes_in)}
- function index_from_opt(s,i,c)
- {var l=caml_ml_bytes_length(s);
- if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c);
- return invalid_arg(cst_String_index_from_opt_Byte)}
- function rindex_rec(s,i,c)
- {var i$0=i;
- for(;;)
- {if(0 <= i$0)
- {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0;
- var i$1=i$0 - 1 | 0,i$0=i$1;
- continue}
- throw Not_found}}
- function rindex(s,c)
- {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)}
- function rindex_from(s,i,c)
- {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c);
- return invalid_arg(cst_String_rindex_from_Bytes_r)}
- function rindex_rec_opt(s,i,c)
- {var i$0=i;
- for(;;)
- {if(0 <= i$0)
- {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0];
- var i$1=i$0 - 1 | 0,i$0=i$1;
- continue}
- return 0}}
- function rindex_opt(s,c)
- {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)}
- function rindex_from_opt(s,i,c)
- {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))
- return rindex_rec_opt(s,i,c);
- return invalid_arg(cst_String_rindex_from_opt_Byt)}
- function contains_from(s,i,c)
- {var l=caml_ml_bytes_length(s);
- if(0 <= i && ! (l < i))
- try
- {index_rec(s,l,i,c);var _Av_=1;return _Av_}
- catch(_Aw_)
- {_Aw_ = caml_wrap_exception(_Aw_);
- if(_Aw_ === Not_found)return 0;
- throw _Aw_}
- return invalid_arg(cst_String_contains_from_Bytes)}
- function contains(s,c){return contains_from(s,0,c)}
- function rcontains_from(s,i,c)
- {if(0 <= i && ! (caml_ml_bytes_length(s) <= i))
- try
- {rindex_rec(s,i,c);var _At_=1;return _At_}
- catch(_Au_)
- {_Au_ = caml_wrap_exception(_Au_);
- if(_Au_ === Not_found)return 0;
- throw _Au_}
- return invalid_arg(cst_String_rcontains_from_Byte)}
- function compare$7(x,y){return runtime.caml_bytes_compare(x,y)}
- function split_on_char(sep,s)
- {var
- r=[0,0],
- j=[0,caml_ml_bytes_length(s)],
- _Ap_=caml_ml_bytes_length(s) - 1 | 0;
- if(! (_Ap_ < 0))
- {var i=_Ap_;
- for(;;)
- {if(caml_bytes_unsafe_get(s,i) === sep)
- {var _Ar_=r[1];
- r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Ar_];
- j[1] = i}
- var _As_=i - 1 | 0;
- if(0 !== i){var i=_As_;continue}
- break}}
- var _Aq_=r[1];
- return [0,sub(s,0,j[1]),_Aq_]}
- function uppercase$0(s){return map$4(uppercase,s)}
- function lowercase$0(s){return map$4(lowercase,s)}
- function capitalize(s){return apply1(uppercase,s)}
- function uncapitalize(s){return apply1(lowercase,s)}
- function to_seq$2(s)
- {function aux(i,param)
- {if(i === caml_ml_bytes_length(s))return 0;
- var x=caml_bytes_get(s,i),_An_=i + 1 | 0;
- return [0,x,function(_Ao_){return aux(_An_,_Ao_)}]}
- var _Al_=0;
- return function(_Am_){return aux(_Al_,_Am_)}}
- function to_seqi(s)
- {function aux(i,param)
- {if(i === caml_ml_bytes_length(s))return 0;
- var x=caml_bytes_get(s,i),_Aj_=i + 1 | 0;
- return [0,[0,i,x],function(_Ak_){return aux(_Aj_,_Ak_)}]}
- var _Ah_=0;
- return function(_Ai_){return aux(_Ah_,_Ai_)}}
- function of_seq$0(i)
- {var n=[0,0],buf=[0,make$0(256,0)];
- iter
- (function(c)
- {if(n[1] === caml_ml_bytes_length(buf[1]))
- {var
- new_len=
- min$1(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length);
- if(caml_ml_bytes_length(buf[1]) === new_len)
- failwith(cst_Bytes_of_seq_cannot_grow_b);
- var new_buf=make$0(new_len,0);
- blit(buf[1],0,new_buf,0,n[1]);
- buf[1] = new_buf}
- caml_bytes_set(buf[1],n[1],c);
- n[1]++;
- return 0},
- i);
- return sub(buf[1],0,n[1])}
- function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24}
- function get_uint16_le(b,i){return caml_bytes_get16(b,i)}
- function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))}
- function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16}
- function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16}
- function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16}
- function get_int32_le(b,i){return caml_bytes_get32(b,i)}
- function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))}
- function get_int64_le(b,i){return caml_bytes_get64(b,i)}
- function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))}
- function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)}
- function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))}
- function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)}
- function set_int32_be(b,i,x)
- {return caml_bytes_set32(b,i,caml_int32_bswap(x))}
- function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)}
- function set_int64_be(b,i,x)
- {return caml_bytes_set64(b,i,caml_int64_bswap(x))}
- var
- set_uint8=caml_bytes_set,
- set_uint16_ne=caml_bytes_set16,
- set_int64_ne=caml_bytes_set64,
- set_int32_ne=caml_bytes_set32,
- set_int16_ne=caml_bytes_set16,
- set_int8=caml_bytes_set,
- get_int64_ne=caml_bytes_get64,
- get_int32_ne=caml_bytes_get32,
- get_uint16_ne=caml_bytes_get16,
- get_uint8=caml_bytes_get,
- unsafe_of_string=caml_bytes_of_string,
- unsafe_to_string=caml_string_of_bytes,
- equal$7=runtime.caml_bytes_equal,
- include$1=
- [0,
- make$0,
- init$0,
- empty$0,
- copy,
- to_bytes,
- of_bytes,
- sub,
- sub_string,
- extend,
- fill,
- blit,
- blit$0,
- concat$0,
- cat$0,
- iter$3,
- iteri$0,
- map$4,
- mapi$0,
- fold_left$1,
- fold_right$0,
- for_all$0,
- exists$0,
- trim,
- escaped$0,
- index,
- index_opt,
- rindex,
- rindex_opt,
- index_from,
- index_from_opt,
- rindex_from,
- rindex_from_opt,
- contains,
- contains_from,
- rcontains_from,
- uppercase$0,
- lowercase$0,
- capitalize,
- uncapitalize,
- uppercase_ascii$0,
- lowercase_ascii$0,
- capitalize_ascii,
- uncapitalize_ascii,
- compare$7,
- equal$7,
- starts_with,
- ends_with,
- unsafe_to_string,
- unsafe_of_string,
- split_on_char,
- to_seq$2,
- to_seqi,
- of_seq$0,
- get_uint8,
- get_int8,
- get_uint16_ne,
- get_uint16_be,
- get_uint16_le,
- get_int16_ne,
- get_int16_be,
- get_int16_le,
- get_int32_ne,
- get_int32_be,
- get_int32_le,
- get_int64_ne,
- get_int64_be,
- get_int64_le,
- set_uint8,
- set_int8,
- set_uint16_ne,
- set_int16_be,
- set_int16_le,
- set_int16_ne,
- set_int16_be,
- set_int16_le,
- set_int32_ne,
- set_int32_be,
- set_int32_le,
- set_int64_ne,
- set_int64_be,
- set_int64_le];
- caml_register_global(771,include$1,"Stdlib__Bytes");
- function make$1(n,c){return caml_string_of_bytes(make$0(n,c))}
- function init$1(n,f){return caml_string_of_bytes(init$0(n,f))}
- function copy$0(s)
- {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))}
- function sub$0(s,ofs,len)
- {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))}
- function concat$1(sep,l)
- {if(l)
- {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0;
- for(;;)
- {if(param)
- {var _Ae_=param[1];
- if(param[2])
- {var
- tl=param[2],
- x=(caml_ml_string_length(_Ae_) + seplen | 0) + acc | 0,
- acc$0=acc <= x?x:invalid_arg(cst_String_concat),
- acc=acc$0,
- param=tl;
- continue}
- var _Ag_=caml_ml_string_length(_Ae_) + acc | 0}
- else
- var _Ag_=acc;
- var dst=caml_create_bytes(_Ag_),pos=pos$1,param$0=l;
- for(;;)
- {if(param$0)
- {var _Af_=param$0[1];
- if(param$0[2])
- {var tl$0=param$0[2];
- caml_blit_string(_Af_,0,dst,pos,caml_ml_string_length(_Af_));
- caml_blit_string
- (sep,0,dst,pos + caml_ml_string_length(_Af_) | 0,seplen);
- var
- pos$0=(pos + caml_ml_string_length(_Af_) | 0) + seplen | 0,
- pos=pos$0,
- param$0=tl$0;
- continue}
- caml_blit_string(_Af_,0,dst,pos,caml_ml_string_length(_Af_))}
- return caml_string_of_bytes(dst)}}}
- return cst$3}
- function iter$4(f,s)
- {var _Ac_=caml_ml_string_length(s) - 1 | 0,_Ab_=0;
- if(! (_Ac_ < 0))
- {var i=_Ab_;
- for(;;)
- {caml_call1(f,caml_string_unsafe_get(s,i));
- var _Ad_=i + 1 | 0;
- if(_Ac_ !== i){var i=_Ad_;continue}
- break}}
- return 0}
- function iteri$1(f,s)
- {var _z$_=caml_ml_string_length(s) - 1 | 0,_z__=0;
- if(! (_z$_ < 0))
- {var i=_z__;
- for(;;)
- {caml_call2(f,i,caml_string_unsafe_get(s,i));
- var _Aa_=i + 1 | 0;
- if(_z$_ !== i){var i=_Aa_;continue}
- break}}
- return 0}
- function map$5(f,s)
- {return caml_string_of_bytes(map$4(f,caml_bytes_of_string(s)))}
- function mapi$1(f,s)
- {return caml_string_of_bytes(mapi$0(f,caml_bytes_of_string(s)))}
- function fold_right$1(f,x,a)
- {return fold_right$0(f,caml_bytes_of_string(x),a)}
- function fold_left$2(f,a,x)
- {return fold_left$1(f,a,caml_bytes_of_string(x))}
- function exists$1(f,s){return exists$0(f,caml_bytes_of_string(s))}
- function for_all$1(f,s){return for_all$0(f,caml_bytes_of_string(s))}
- function is_space$0(param)
- {var _z9_=param - 9 | 0,switch$0=0;
- if(4 < _z9_ >>> 0)
- {if(23 === _z9_)switch$0 = 1}
- else
- if(2 !== _z9_)switch$0 = 1;
- return switch$0?1:0}
- function trim$0(s)
- {if(caml_string_equal(s,cst$4))return s;
- if
- (!
- is_space$0(caml_string_unsafe_get(s,0))
- &&
- !
- is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0)))
- return s;
- return caml_string_of_bytes(trim(caml_bytes_of_string(s)))}
- function escaped$1(s)
- {var n=caml_ml_string_length(s),i=0;
- for(;;)
- {if(n <= i)return s;
- var match=caml_string_unsafe_get(s,i),_z8_=match - 32 | 0,switch$0=0;
- if(59 < _z8_ >>> 0)
- {if(33 < _z8_ - 61 >>> 0)switch$0 = 1}
- else
- if(2 === _z8_)switch$0 = 1;
- if(switch$0)
- return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s)));
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function index_rec$0(s,lim,i,c)
- {var i$0=i;
- for(;;)
- {if(lim <= i$0)throw Not_found;
- if(caml_string_unsafe_get(s,i$0) === c)return i$0;
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)}
- function index_rec_opt$0(s,lim,i,c)
- {var i$0=i;
- for(;;)
- {if(lim <= i$0)return 0;
- if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0];
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function index_opt$0(s,c)
- {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)}
- function index_from$0(s,i,c)
- {var l=caml_ml_string_length(s);
- if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c);
- return invalid_arg(cst_String_index_from_Bytes_in$0)}
- function index_from_opt$0(s,i,c)
- {var l=caml_ml_string_length(s);
- if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c);
- return invalid_arg(cst_String_index_from_opt_Byte$0)}
- function rindex_rec$0(s,i,c)
- {var i$0=i;
- for(;;)
- {if(0 <= i$0)
- {if(caml_string_unsafe_get(s,i$0) === c)return i$0;
- var i$1=i$0 - 1 | 0,i$0=i$1;
- continue}
- throw Not_found}}
- function rindex$0(s,c)
- {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)}
- function rindex_from$0(s,i,c)
- {if(-1 <= i && ! (caml_ml_string_length(s) <= i))
- return rindex_rec$0(s,i,c);
- return invalid_arg(cst_String_rindex_from_Bytes_r$0)}
- function rindex_rec_opt$0(s,i,c)
- {var i$0=i;
- for(;;)
- {if(0 <= i$0)
- {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0];
- var i$1=i$0 - 1 | 0,i$0=i$1;
- continue}
- return 0}}
- function rindex_opt$0(s,c)
- {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)}
- function rindex_from_opt$0(s,i,c)
- {if(-1 <= i && ! (caml_ml_string_length(s) <= i))
- return rindex_rec_opt$0(s,i,c);
- return invalid_arg(cst_String_rindex_from_opt_Byt$0)}
- function contains_from$0(s,i,c)
- {var l=caml_ml_string_length(s);
- if(0 <= i && ! (l < i))
- try
- {index_rec$0(s,l,i,c);var _z6_=1;return _z6_}
- catch(_z7_)
- {_z7_ = caml_wrap_exception(_z7_);
- if(_z7_ === Not_found)return 0;
- throw _z7_}
- return invalid_arg(cst_String_contains_from_Bytes$0)}
- function contains$0(s,c){return contains_from$0(s,0,c)}
- function rcontains_from$0(s,i,c)
- {if(0 <= i && ! (caml_ml_string_length(s) <= i))
- try
- {rindex_rec$0(s,i,c);var _z4_=1;return _z4_}
- catch(_z5_)
- {_z5_ = caml_wrap_exception(_z5_);
- if(_z5_ === Not_found)return 0;
- throw _z5_}
- return invalid_arg(cst_String_rcontains_from_Byte$0)}
- function uppercase_ascii$1(s)
- {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))}
- function lowercase_ascii$1(s)
- {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))}
- function capitalize_ascii$0(s)
- {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))}
- function uncapitalize_ascii$0(s)
- {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))}
- function starts_with$0(prefix,s)
- {var
- len_s=caml_ml_string_length(s),
- len_pre=caml_ml_string_length(prefix),
- _z3_=len_pre <= len_s?1:0;
- if(_z3_)
- {var i=0;
- for(;;)
- {if(i === len_pre)return 1;
- if(caml_string_unsafe_get(s,i) !== caml_string_unsafe_get(prefix,i))
- return 0;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- return _z3_}
- function ends_with$0(suffix,s)
- {var
- len_s=caml_ml_string_length(s),
- len_suf=caml_ml_string_length(suffix),
- diff=len_s - len_suf | 0,
- _z2_=0 <= diff?1:0;
- if(_z2_)
- {var i=0;
- for(;;)
- {if(i === len_suf)return 1;
- if
- (caml_string_unsafe_get(s,diff + i | 0)
- !==
- caml_string_unsafe_get(suffix,i))
- return 0;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- return _z2_}
- function split_on_char$0(sep,s)
- {var
- r=[0,0],
- j=[0,caml_ml_string_length(s)],
- _zY_=caml_ml_string_length(s) - 1 | 0;
- if(! (_zY_ < 0))
- {var i=_zY_;
- for(;;)
- {if(caml_string_unsafe_get(s,i) === sep)
- {var _z0_=r[1];
- r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_z0_];
- j[1] = i}
- var _z1_=i - 1 | 0;
- if(0 !== i){var i=_z1_;continue}
- break}}
- var _zZ_=r[1];
- return [0,sub$0(s,0,j[1]),_zZ_]}
- function uppercase$1(s)
- {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))}
- function lowercase$1(s)
- {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))}
- function capitalize$0(s)
- {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))}
- function uncapitalize$0(s)
- {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))}
- function compare$8(x,y){return caml_string_compare(x,y)}
- function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))}
- function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))}
- function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))}
- function get_int8$0(s,i){return get_int8(caml_bytes_of_string(s),i)}
- function get_uint16_le$0(s,i)
- {return caml_bytes_get16(caml_bytes_of_string(s),i)}
- function get_uint16_be$0(s,i)
- {return get_uint16_be(caml_bytes_of_string(s),i)}
- function get_int16_ne$0(s,i)
- {return get_int16_ne(caml_bytes_of_string(s),i)}
- function get_int16_le$0(s,i)
- {return get_int16_le(caml_bytes_of_string(s),i)}
- function get_int16_be$0(s,i)
- {return get_int16_be(caml_bytes_of_string(s),i)}
- function get_int32_le$0(s,i)
- {return caml_bytes_get32(caml_bytes_of_string(s),i)}
- function get_int32_be$0(s,i)
- {return get_int32_be(caml_bytes_of_string(s),i)}
- function get_int64_le$0(s,i)
- {return caml_bytes_get64(caml_bytes_of_string(s),i)}
- function get_int64_be$0(s,i)
- {return get_int64_be(caml_bytes_of_string(s),i)}
- var
- get_int64_ne$0=runtime.caml_string_get64,
- get_int32_ne$0=runtime.caml_string_get32,
- get_uint16_ne$0=runtime.caml_string_get16,
- get_uint8$0=caml_string_get,
- equal$8=caml_string_equal,
- include$2=
- [0,
- make$1,
- init$1,
- empty$1,
- of_bytes,
- to_bytes,
- concat$1,
- cat,
- equal$8,
- compare$8,
- starts_with$0,
- ends_with$0,
- contains_from$0,
- rcontains_from$0,
- contains$0,
- sub$0,
- split_on_char$0,
- map$5,
- mapi$1,
- fold_left$2,
- fold_right$1,
- for_all$1,
- exists$1,
- trim$0,
- escaped$1,
- uppercase_ascii$1,
- lowercase_ascii$1,
- capitalize_ascii$0,
- uncapitalize_ascii$0,
- iter$4,
- iteri$1,
- index_from$0,
- index_from_opt$0,
- rindex_from$0,
- rindex_from_opt$0,
- index$0,
- index_opt$0,
- rindex$0,
- rindex_opt$0,
- to_seq$3,
- to_seqi$0,
- of_seq$1,
- blit$0,
- copy$0,
- fill,
- uppercase$1,
- lowercase$1,
- capitalize$0,
- uncapitalize$0,
- get_uint8$0,
- get_int8$0,
- get_uint16_ne$0,
- get_uint16_be$0,
- get_uint16_le$0,
- get_int16_ne$0,
- get_int16_be$0,
- get_int16_le$0,
- get_int32_ne$0,
- get_int32_be$0,
- get_int32_le$0,
- get_int64_ne$0,
- get_int64_be$0,
- get_int64_le$0];
- caml_register_global(772,include$2,"Stdlib__String");
- function equal$9(param,_zX_){return 1}
- function compare$9(param,_zW_){return 0}
- function to_string$2(param){return cst$5}
- var Stdlib_Unit=[0,equal$9,compare$9,to_string$2];
- caml_register_global(773,Stdlib_Unit,"Stdlib__Unit");
- function to_buffer(buff,ofs,len,v,flags)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buff) - len | 0) < ofs))
- return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags);
- return invalid_arg(cst_Marshal_to_buffer_substrin)}
- var header_size=20;
- function data_size(buff,ofs)
- {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs))
- return caml_marshal_data_size(buff,ofs);
- return invalid_arg(cst_Marshal_data_size)}
- function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0}
- function from_bytes(buff,ofs)
- {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs))
- {var len=caml_marshal_data_size(buff,ofs);
- return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs
- ?invalid_arg(cst_Marshal_from_bytes$0)
- :runtime.caml_input_value_from_bytes(buff,ofs)}
- return invalid_arg(cst_Marshal_from_bytes)}
- function from_string(buff,ofs)
- {return from_bytes(caml_bytes_of_string(buff),ofs)}
- var
- Stdlib_Marshal=
- [0,
- caml_output_value,
- to_buffer,
- caml_input_value,
- from_bytes,
- from_string,
- header_size,
- data_size,
- total_size];
- caml_register_global(774,Stdlib_Marshal,"Stdlib__Marshal");
- function is_block(a){return 1 - (typeof a === "number"?1:0)}
- function double_field(x,i){return caml_array_get(x,i)}
- function set_double_field(x,i,v){return caml_array_set(x,i,v)}
- function marshal(obj){return runtime.caml_output_value_to_bytes(obj,0)}
- function unmarshal(str,pos)
- {var _zV_=pos + total_size(str,pos) | 0;
- return [0,from_bytes(str,pos),_zV_]}
- var
- first_non_constant_constructor=0,
- last_non_constant_constructor_=245,
- lazy_tag=246,
- closure_tag=247,
- object_tag=248,
- infix_tag=249,
- forward_tag=250,
- no_scan_tag=251,
- abstract_tag=251,
- string_tag=252,
- double_tag=253,
- double_array_tag=254,
- custom_tag=255,
- int_tag=1000,
- out_of_heap_tag=1001,
- unaligned_tag=1002;
- function info(obj)
- {if(caml_obj_tag(obj) === 247)
- {var
- info=runtime.caml_obj_raw_field(obj,1),
- arity=info >> 24,
- start_env=info << 8 >>> 9 | 0;
- return [0,arity,start_env]}
- throw [0,Assert_failure,_q_]}
- function of_val(x)
- {var switch$0=0;
- if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1)
- {var slot=x[1];switch$0 = 1}
- if(! switch$0)var slot=x;
- var switch$1=0;
- if(is_block(slot) && caml_obj_tag(slot) === 248)
- {var name=slot[1];switch$1 = 1}
- if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0);
- return caml_obj_tag(name) === 252
- ?slot
- :invalid_arg(cst_Obj_extension_constructor)}
- function name(slot){return slot[1]}
- function id(slot){return slot[2]}
- var
- Extension_constructor=[0,of_val,name,id],
- extension_constructor=Extension_constructor[1],
- extension_name=Extension_constructor[2],
- extension_id=Extension_constructor[3],
- max_ephe_length=max_array_length - 2 | 0;
- function create(l)
- {var _zT_=0 <= l?1:0,_zU_=_zT_?l <= max_ephe_length?1:0:_zT_;
- if(1 - _zU_)invalid_arg(cst_Obj_Ephemeron_create);
- return runtime.caml_ephe_create(l)}
- function length$0(x){return x.length - 1 - 2 | 0}
- function raise_if_invalid_offset(e,o,msg)
- {var _zQ_=0 <= o?1:0,_zR_=_zQ_?o < length$0(e)?1:0:_zQ_,_zS_=1 - _zR_;
- return _zS_?invalid_arg(msg):_zS_}
- function get_key(e,o)
- {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key);
- return runtime.caml_ephe_get_key(e,o)}
- function get_key_copy(e,o)
- {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy);
- return runtime.caml_ephe_get_key_copy(e,o)}
- function set_key(e,o,x)
- {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key);
- return caml_ephe_set_key(e,o,x)}
- function unset_key(e,o)
- {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key);
- return caml_ephe_unset_key(e,o)}
- function check_key(e,o)
- {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_check_key);
- return runtime.caml_ephe_check_key(e,o)}
- function blit_key(e1,o1,e2,o2,l)
- {if
- (0
- <=
- l
- &&
- 0
- <=
- o1
- &&
- !
- ((length$0(e1) - l | 0) < o1)
- &&
- 0
- <=
- o2
- &&
- !
- ((length$0(e2) - l | 0) < o2))
- {var
- _zO_=0 !== l?1:0,
- _zP_=_zO_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_zO_;
- return _zP_}
- return invalid_arg(cst_Obj_Ephemeron_blit_key)}
- var
- _r_=runtime.caml_ephe_blit_data,
- _s_=runtime.caml_ephe_check_data,
- _t_=
- [0,
- create,
- length$0,
- get_key,
- get_key_copy,
- set_key,
- unset_key,
- check_key,
- blit_key,
- runtime.caml_ephe_get_data,
- runtime.caml_ephe_get_data_copy,
- runtime.caml_ephe_set_data,
- function(_zN_){return runtime.caml_ephe_unset_data(_zN_)},
- _s_,
- _r_,
- max_ephe_length],
- Stdlib_Obj=
- [0,
- is_block,
- double_field,
- set_double_field,
- first_non_constant_constructor,
- last_non_constant_constructor_,
- lazy_tag,
- closure_tag,
- object_tag,
- infix_tag,
- forward_tag,
- no_scan_tag,
- abstract_tag,
- string_tag,
- double_tag,
- double_array_tag,
- custom_tag,
- custom_tag,
- int_tag,
- out_of_heap_tag,
- unaligned_tag,
- [0,info],
- Extension_constructor,
- extension_constructor,
- extension_name,
- extension_id,
- marshal,
- unmarshal,
- _t_];
- caml_register_global(775,Stdlib_Obj,"Stdlib__Obj");
- var make_float=runtime.caml_make_float_vect,Floatarray=[0];
- function init$2(l,f)
- {if(0 === l)return [0];
- if(0 <= l)
- {var res=caml_make_vect(l,caml_call1(f,0)),_zL_=l - 1 | 0,_zK_=1;
- if(! (_zL_ < 1))
- {var i=_zK_;
- for(;;)
- {res[1 + i] = caml_call1(f,i);
- var _zM_=i + 1 | 0;
- if(_zL_ !== i){var i=_zM_;continue}
- break}}
- return res}
- return invalid_arg(cst_Array_init)}
- function create_matrix(sx,sy,init)
- {var res=caml_make_vect(sx,[0]),_zI_=sx - 1 | 0,_zH_=0;
- if(! (_zI_ < 0))
- {var x=_zH_;
- for(;;)
- {res[1 + x] = caml_make_vect(sy,init);
- var _zJ_=x + 1 | 0;
- if(_zI_ !== x){var x=_zJ_;continue}
- break}}
- return res}
- function copy$1(a)
- {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)}
- function append$1(a1,a2)
- {var l1=a1.length - 1;
- return 0 === l1
- ?copy$1(a2)
- :0 === a2.length - 1
- ?caml_array_sub(a1,0,l1)
- :runtime.caml_array_append(a1,a2)}
- function sub$1(a,ofs,len)
- {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs))
- return caml_array_sub(a,ofs,len);
- return invalid_arg(cst_Array_sub)}
- function fill$0(a,ofs,len,v)
- {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs))
- return runtime.caml_array_fill(a,ofs,len,v);
- return invalid_arg(cst_Array_fill)}
- function blit$1(a1,ofs1,a2,ofs2,len)
- {if
- (0
- <=
- len
- &&
- 0
- <=
- ofs1
- &&
- !
- ((a1.length - 1 - len | 0) < ofs1)
- &&
- 0
- <=
- ofs2
- &&
- !
- ((a2.length - 1 - len | 0) < ofs2))
- return runtime.caml_array_blit(a1,ofs1,a2,ofs2,len);
- return invalid_arg(cst_Array_blit)}
- function iter$5(f,a)
- {var _zF_=a.length - 1 - 1 | 0,_zE_=0;
- if(! (_zF_ < 0))
- {var i=_zE_;
- for(;;)
- {caml_call1(f,a[1 + i]);
- var _zG_=i + 1 | 0;
- if(_zF_ !== i){var i=_zG_;continue}
- break}}
- return 0}
- function iter2$0(f,a,b)
- {if(a.length - 1 !== b.length - 1)
- return invalid_arg(cst_Array_iter2_arrays_must_ha);
- var _zC_=a.length - 1 - 1 | 0,_zB_=0;
- if(! (_zC_ < 0))
- {var i=_zB_;
- for(;;)
- {caml_call2(f,a[1 + i],b[1 + i]);
- var _zD_=i + 1 | 0;
- if(_zC_ !== i){var i=_zD_;continue}
- break}}
- return 0}
- function map$6(f,a)
- {var l=a.length - 1;
- if(0 === l)return [0];
- var r=caml_make_vect(l,caml_call1(f,a[1])),_zz_=l - 1 | 0,_zy_=1;
- if(! (_zz_ < 1))
- {var i=_zy_;
- for(;;)
- {r[1 + i] = caml_call1(f,a[1 + i]);
- var _zA_=i + 1 | 0;
- if(_zz_ !== i){var i=_zA_;continue}
- break}}
- return r}
- function map2$0(f,a,b)
- {var la=a.length - 1,lb=b.length - 1;
- if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav);
- if(0 === la)return [0];
- var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_zw_=la - 1 | 0,_zv_=1;
- if(! (_zw_ < 1))
- {var i=_zv_;
- for(;;)
- {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]);
- var _zx_=i + 1 | 0;
- if(_zw_ !== i){var i=_zx_;continue}
- break}}
- return r}
- function iteri$2(f,a)
- {var _zt_=a.length - 1 - 1 | 0,_zs_=0;
- if(! (_zt_ < 0))
- {var i=_zs_;
- for(;;)
- {caml_call2(f,i,a[1 + i]);
- var _zu_=i + 1 | 0;
- if(_zt_ !== i){var i=_zu_;continue}
- break}}
- return 0}
- function mapi$2(f,a)
- {var l=a.length - 1;
- if(0 === l)return [0];
- var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zq_=l - 1 | 0,_zp_=1;
- if(! (_zq_ < 1))
- {var i=_zp_;
- for(;;)
- {r[1 + i] = caml_call2(f,i,a[1 + i]);
- var _zr_=i + 1 | 0;
- if(_zq_ !== i){var i=_zr_;continue}
- break}}
- return r}
- function to_list$1(a)
- {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0;
- for(;;)
- {if(0 <= i)
- {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue}
- return res}}
- function list_length(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var
- param$1=param$0[2],
- accu$1=accu$0 + 1 | 0,
- accu$0=accu$1,
- param$0=param$1;
- continue}
- return accu$0}}
- function of_list(l)
- {if(l)
- {var
- tl=l[2],
- hd=l[1],
- a=caml_make_vect(list_length(0,l),hd),
- i=1,
- param=tl;
- for(;;)
- {if(param)
- {var tl$0=param[2],hd$0=param[1];
- a[1 + i] = hd$0;
- var i$0=i + 1 | 0,i=i$0,param=tl$0;
- continue}
- return a}}
- return [0]}
- function fold_left$3(f,x,a)
- {var r=[0,x],_zn_=a.length - 1 - 1 | 0,_zm_=0;
- if(! (_zn_ < 0))
- {var i=_zm_;
- for(;;)
- {r[1] = caml_call2(f,r[1],a[1 + i]);
- var _zo_=i + 1 | 0;
- if(_zn_ !== i){var i=_zo_;continue}
- break}}
- return r[1]}
- function fold_left_map$0(f,acc,input_array)
- {var len=input_array.length - 1;
- if(0 === len)return [0,acc,[0]];
- var
- match=caml_call2(f,acc,input_array[1]),
- elt=match[2],
- acc$0=match[1],
- output_array=caml_make_vect(len,elt),
- acc$1=[0,acc$0],
- _zk_=len - 1 | 0,
- _zj_=1;
- if(! (_zk_ < 1))
- {var i=_zj_;
- for(;;)
- {var
- match$0=caml_call2(f,acc$1[1],input_array[1 + i]),
- elt$0=match$0[2],
- acc$2=match$0[1];
- acc$1[1] = acc$2;
- output_array[1 + i] = elt$0;
- var _zl_=i + 1 | 0;
- if(_zk_ !== i){var i=_zl_;continue}
- break}}
- return [0,acc$1[1],output_array]}
- function fold_right$2(f,a,x)
- {var r=[0,x],_zh_=a.length - 1 - 1 | 0;
- if(! (_zh_ < 0))
- {var i=_zh_;
- for(;;)
- {r[1] = caml_call2(f,a[1 + i],r[1]);
- var _zi_=i - 1 | 0;
- if(0 !== i){var i=_zi_;continue}
- break}}
- return r[1]}
- function exists$2(p,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(caml_call1(p,a[1 + i]))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function for_all$2(p,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 1;
- if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue}
- return 0}}
- function for_all2$0(p,l1,l2)
- {var n1=l1.length - 1,n2=l2.length - 1;
- if(n1 !== n2)return invalid_arg(cst_Array_for_all2);
- var i=0;
- for(;;)
- {if(i === n1)return 1;
- if(caml_call2(p,l1[1 + i],l2[1 + i]))
- {var i$0=i + 1 | 0,i=i$0;continue}
- return 0}}
- function exists2$0(p,l1,l2)
- {var n1=l1.length - 1,n2=l2.length - 1;
- if(n1 !== n2)return invalid_arg(cst_Array_exists2);
- var i=0;
- for(;;)
- {if(i === n1)return 0;
- if(caml_call2(p,l1[1 + i],l2[1 + i]))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function mem$0(x,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(0 === caml_compare(a[1 + i],x))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function memq$0(x,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(x === a[1 + i])return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function find_opt$0(p,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- var x=a[1 + i];
- if(caml_call1(p,x))return [0,x];
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function find_map$0(f,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- var r=caml_call1(f,a[1 + i]);
- if(r)return r;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function split$0(x)
- {if(caml_equal(x,[0]))return [0,[0],[0]];
- var
- match=x[1],
- b0=match[2],
- a0=match[1],
- n=x.length - 1,
- a=caml_make_vect(n,a0),
- b=caml_make_vect(n,b0),
- _zf_=n - 1 | 0,
- _ze_=1;
- if(! (_zf_ < 1))
- {var i=_ze_;
- for(;;)
- {var match$0=x[1 + i],bi=match$0[2],ai=match$0[1];
- a[1 + i] = ai;
- b[1 + i] = bi;
- var _zg_=i + 1 | 0;
- if(_zf_ !== i){var i=_zg_;continue}
- break}}
- return [0,a,b]}
- function combine$0(a,b)
- {var na=a.length - 1,nb=b.length - 1;
- if(na !== nb)invalid_arg(cst_Array_combine);
- if(0 === na)return [0];
- var x=caml_make_vect(na,[0,a[1],b[1]]),_zc_=na - 1 | 0,_zb_=1;
- if(! (_zc_ < 1))
- {var i=_zb_;
- for(;;)
- {x[1 + i] = [0,a[1 + i],b[1 + i]];
- var _zd_=i + 1 | 0;
- if(_zc_ !== i){var i=_zd_;continue}
- break}}
- return x}
- var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)];
- function sort(cmp,a)
- {function maxson(l,i)
- {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31];
- if((i31 + 2 | 0) < l)
- {var _y6_=i31 + 1 | 0,_y7_=caml_check_bound(a,_y6_)[1 + _y6_];
- if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_y7_) < 0)
- x[1] = i31 + 1 | 0;
- var
- _y8_=i31 + 2 | 0,
- _y9_=caml_check_bound(a,_y8_)[1 + _y8_],
- _y__=x[1];
- if(caml_call2(cmp,caml_check_bound(a,_y__)[1 + _y__],_y9_) < 0)
- x[1] = i31 + 2 | 0;
- return x[1]}
- if((i31 + 1 | 0) < l)
- {var _y$_=i31 + 1 | 0,_za_=caml_check_bound(a,_y$_)[1 + _y$_];
- if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_za_)))
- return i31 + 1 | 0}
- if(i31 < l)return i31;
- throw [0,Bottom,i]}
- function trickledown(l,i,e)
- {var i$0=i;
- for(;;)
- {var j=maxson(l,i$0);
- if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e))
- {var _y5_=caml_check_bound(a,j)[1 + j];
- caml_check_bound(a,i$0)[1 + i$0] = _y5_;
- var i$0=j;
- continue}
- caml_check_bound(a,i$0)[1 + i$0] = e;
- return 0}}
- function trickle(l,i,e)
- {try
- {var _y4_=trickledown(l,i,e);return _y4_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bottom)
- {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0}
- throw exn}}
- function bubbledown(l,i)
- {var i$0=i;
- for(;;)
- {var i$1=maxson(l,i$0),_y3_=caml_check_bound(a,i$1)[1 + i$1];
- caml_check_bound(a,i$0)[1 + i$0] = _y3_;
- var i$0=i$1;
- continue}}
- function bubble(l,i)
- {try
- {var _y2_=bubbledown(l,i);return _y2_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bottom){var i$0=exn[2];return i$0}
- throw exn}}
- var l=a.length - 1,_yU_=((l + 1 | 0) / 3 | 0) - 1 | 0;
- if(! (_yU_ < 0))
- {var i$2=_yU_;
- for(;;)
- {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]);
- var _y1_=i$2 - 1 | 0;
- if(0 !== i$2){var i$2=_y1_;continue}
- break}}
- var _yV_=l - 1 | 0;
- if(! (_yV_ < 2))
- {var i$0=_yV_;
- a:
- for(;;)
- {var
- e$0=caml_check_bound(a,i$0)[1 + i$0],
- _yZ_=caml_check_bound(a,0)[1];
- caml_check_bound(a,i$0)[1 + i$0] = _yZ_;
- var i$1=bubble(i$0,0),i=i$1;
- for(;;)
- {var father=(i - 1 | 0) / 3 | 0;
- if(i === father)throw [0,Assert_failure,_u_];
- if
- (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0))
- caml_check_bound(a,i)[1 + i] = e$0;
- else
- {var _yT_=caml_check_bound(a,father)[1 + father];
- caml_check_bound(a,i)[1 + i] = _yT_;
- if(0 < father){var i=father;continue}
- caml_check_bound(a,0)[1] = e$0}
- var _y0_=i$0 - 1 | 0;
- if(2 !== i$0){var i$0=_y0_;continue a}
- break}
- break}}
- var _yW_=1 < l?1:0;
- if(_yW_)
- {var e=caml_check_bound(a,1)[2],_yX_=caml_check_bound(a,0)[1];
- caml_check_bound(a,1)[2] = _yX_;
- caml_check_bound(a,0)[1] = e;
- var _yY_=0}
- else
- var _yY_=_yW_;
- return _yY_}
- function fast_sort$0(cmp,a)
- {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs)
- {var
- src1r=src1ofs + src1len | 0,
- src2r=src2ofs + src2len | 0,
- s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs],
- s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs],
- i1=src1ofs,
- s1=s1$1,
- i2=src2ofs,
- s2=s2$1,
- d=dstofs;
- for(;;)
- {if(0 < caml_call2(cmp,s1,s2))
- {caml_check_bound(dst,d)[1 + d] = s2;
- var i2$0=i2 + 1 | 0;
- if(i2$0 < src2r)
- {var
- d$0=d + 1 | 0,
- s2$0=caml_check_bound(src2,i2$0)[1 + i2$0],
- i2=i2$0,
- s2=s2$0,
- d=d$0;
- continue}
- return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)}
- caml_check_bound(dst,d)[1 + d] = s1;
- var i1$0=i1 + 1 | 0;
- if(i1$0 < src1r)
- {var
- d$1=d + 1 | 0,
- s1$0=caml_check_bound(a,i1$0)[1 + i1$0],
- i1=i1$0,
- s1=s1$0,
- d=d$1;
- continue}
- return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}}
- function isortto(srcofs,dst,dstofs,len)
- {var _yL_=len - 1 | 0,_yK_=0;
- if(! (_yL_ < 0))
- {var i=_yK_;
- a:
- for(;;)
- {var
- _yM_=srcofs + i | 0,
- e=caml_check_bound(a,_yM_)[1 + _yM_],
- j=[0,(dstofs + i | 0) - 1 | 0];
- for(;;)
- {if(dstofs <= j[1])
- {var _yN_=j[1];
- if(0 < caml_call2(cmp,caml_check_bound(dst,_yN_)[1 + _yN_],e))
- {var
- _yO_=j[1],
- _yP_=caml_check_bound(dst,_yO_)[1 + _yO_],
- _yQ_=j[1] + 1 | 0;
- caml_check_bound(dst,_yQ_)[1 + _yQ_] = _yP_;
- j[1] += -1;
- continue}}
- var _yR_=j[1] + 1 | 0;
- caml_check_bound(dst,_yR_)[1 + _yR_] = e;
- var _yS_=i + 1 | 0;
- if(_yL_ !== i){var i=_yS_;continue a}
- break}
- break}}
- return 0}
- function sortto(srcofs,dst,dstofs,len)
- {if(len <= 5)return isortto(srcofs,dst,dstofs,len);
- var l1=len / 2 | 0,l2=len - l1 | 0;
- sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2);
- sortto(srcofs,a,srcofs + l2 | 0,l1);
- return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)}
- var l=a.length - 1;
- if(l <= 5)return isortto(0,a,0,l);
- var
- l1=l / 2 | 0,
- l2=l - l1 | 0,
- t=caml_make_vect(l2,caml_check_bound(a,0)[1]);
- sortto(l1,t,0,l2);
- sortto(0,a,l2,l1);
- return merge(l2,l1,t,0,l2,a,0)}
- function to_seq$4(a)
- {function aux(i,param)
- {if(i < a.length - 1)
- {var x=a[1 + i],_yI_=i + 1 | 0;
- return [0,x,function(_yJ_){return aux(_yI_,_yJ_)}]}
- return 0}
- var _yG_=0;
- return function(_yH_){return aux(_yG_,_yH_)}}
- function to_seqi$1(a)
- {function aux(i,param)
- {if(i < a.length - 1)
- {var x=a[1 + i],_yE_=i + 1 | 0;
- return [0,[0,i,x],function(_yF_){return aux(_yE_,_yF_)}]}
- return 0}
- var _yC_=0;
- return function(_yD_){return aux(_yC_,_yD_)}}
- function of_seq$2(i$2)
- {var _yB_=0,l=fold_left(function(acc,x){return [0,x,acc]},_yB_,i$2);
- if(l)
- {var
- tl=l[2],
- hd=l[1],
- len=list_length(0,l),
- a=caml_make_vect(len,hd),
- i$1=len - 2 | 0,
- i=i$1,
- param=tl;
- for(;;)
- {if(param)
- {var tl$0=param[2],hd$0=param[1];
- a[1 + i] = hd$0;
- var i$0=i - 1 | 0,i=i$0,param=tl$0;
- continue}
- return a}}
- return [0]}
- var
- concat$2=caml_array_concat,
- include$3=
- [0,
- make_float,
- init$2,
- create_matrix,
- create_matrix,
- append$1,
- concat$2,
- sub$1,
- copy$1,
- fill$0,
- blit$1,
- to_list$1,
- of_list,
- iter$5,
- iteri$2,
- map$6,
- mapi$2,
- fold_left$3,
- fold_left_map$0,
- fold_right$2,
- iter2$0,
- map2$0,
- for_all$2,
- exists$2,
- for_all2$0,
- exists2$0,
- mem$0,
- memq$0,
- find_opt$0,
- find_map$0,
- split$0,
- combine$0,
- sort,
- fast_sort$0,
- fast_sort$0,
- to_seq$4,
- to_seqi$1,
- of_seq$2,
- Floatarray];
- caml_register_global(776,include$3,"Stdlib__Array");
- var zero$0=0.,one$0=1.,minus_one$0=-1.;
- function is_finite(x){return x - x == 0.?1:0}
- function is_infinite(x){return 1. / x == 0.?1:0}
- function is_nan(x){return x != x?1:0}
- var pi=3.14159265358979312;
- function is_integer(x)
- {var _yA_=x == runtime.caml_trunc_float(x)?1:0;
- return _yA_?is_finite(x):_yA_}
- function succ$0(x){return caml_nextafter_float(x,infinity)}
- function pred$0(x){return caml_nextafter_float(x,neg_infinity)}
- function equal$10(x,y){return 0 === caml_float_compare(x,y)?1:0}
- function min$2(x,y)
- {if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return x != x?x:y}
- return y != y?y:x}
- function max$2(x,y)
- {if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return y != y?y:x}
- return x != x?x:y}
- function min_max(x,y)
- {if(x == x && y == y)
- {if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return [0,y,x]}
- return [0,x,y]}
- return [0,nan,nan]}
- function min_num(x,y)
- {if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return y != y?x:y}
- return x != x?y:x}
- function max_num(x,y)
- {if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return x != x?y:x}
- return y != y?x:y}
- function min_max_num(x,y)
- {if(x != x)return [0,y,y];
- if(y != y)return [0,x,x];
- if(! (x < y))
- {var switch$0=0;
- if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
- if(switch$0)return [0,y,x]}
- return [0,x,y]}
- function hash$0(x){return caml_hash(10,100,0,x)}
- function unsafe_fill(a,ofs,len,v)
- {var _yy_=(ofs + len | 0) - 1 | 0;
- if(! (_yy_ < ofs))
- {var i=ofs;
- for(;;)
- {a[1 + i] = v;
- var _yz_=i + 1 | 0;
- if(_yy_ !== i){var i=_yz_;continue}
- break}}
- return 0}
- function check(a,ofs,len,msg)
- {var _yu_=ofs < 0?1:0;
- if(_yu_)
- var _yv_=_yu_;
- else
- {var _yw_=len < 0?1:0;
- if(_yw_)
- var _yv_=_yw_;
- else
- var
- _yx_=(ofs + len | 0) < 0?1:0,
- _yv_=_yx_ || (a.length - 1 < (ofs + len | 0)?1:0)}
- return _yv_?invalid_arg(msg):_yv_}
- function make$2(n,v)
- {var result=caml_floatarray_create(n);
- unsafe_fill(result,0,n,v);
- return result}
- function init$3(l,f)
- {if(0 <= l)
- {var res=caml_floatarray_create(l),_ys_=l - 1 | 0,_yr_=0;
- if(! (_ys_ < 0))
- {var i=_yr_;
- for(;;)
- {res[1 + i] = caml_call1(f,i);
- var _yt_=i + 1 | 0;
- if(_ys_ !== i){var i=_yt_;continue}
- break}}
- return res}
- return invalid_arg(cst_Float_Array_init)}
- function append$2(a1,a2)
- {var
- l1=a1.length - 1,
- l2=a2.length - 1,
- result=caml_floatarray_create(l1 + l2 | 0);
- caml_floatarray_blit(a1,0,result,0,l1);
- caml_floatarray_blit(a2,0,result,l1,l2);
- return result}
- function concat$3(l)
- {var acc=0,param=l;
- for(;;)
- {if(param)
- {var
- tl=param[2],
- hd=param[1],
- x=hd.length - 1 + acc | 0,
- acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat),
- acc=acc$0,
- param=tl;
- continue}
- var result=caml_floatarray_create(acc),l$0=l,i=0;
- for(;;)
- {if(l$0)
- {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1;
- caml_floatarray_blit(hd$0,0,result,i,hlen);
- var i$0=i + hlen | 0,l$0=tl$0,i=i$0;
- continue}
- if(i === acc)return result;
- throw [0,Assert_failure,_v_]}}}
- function sub$2(a,ofs,len)
- {check(a,ofs,len,cst_Float_Array_sub);
- var result=caml_floatarray_create(len);
- caml_floatarray_blit(a,ofs,result,0,len);
- return result}
- function copy$2(a)
- {var l=a.length - 1,result=caml_floatarray_create(l);
- caml_floatarray_blit(a,0,result,0,l);
- return result}
- function fill$1(a,ofs,len,v)
- {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)}
- function blit$2(src,sofs,dst,dofs,len)
- {check(src,sofs,len,cst_Float_array_blit);
- check(dst,dofs,len,cst_Float_array_blit$0);
- return caml_floatarray_blit(src,sofs,dst,dofs,len)}
- function to_list$2(a)
- {return init(a.length - 1,function(_yq_){return a[1 + _yq_]})}
- function of_list$0(l)
- {var result=caml_floatarray_create(length(l)),i=0,l$0=l;
- for(;;)
- {if(l$0)
- {var t=l$0[2],h=l$0[1];
- result[1 + i] = h;
- var i$0=i + 1 | 0,i=i$0,l$0=t;
- continue}
- return result}}
- function iter$6(f,a)
- {var _yo_=a.length - 1 - 1 | 0,_yn_=0;
- if(! (_yo_ < 0))
- {var i=_yn_;
- for(;;)
- {caml_call1(f,a[1 + i]);
- var _yp_=i + 1 | 0;
- if(_yo_ !== i){var i=_yp_;continue}
- break}}
- return 0}
- function iter2$1(f,a,b)
- {if(a.length - 1 !== b.length - 1)
- return invalid_arg(cst_Float_Array_iter2_arrays_m);
- var _yl_=a.length - 1 - 1 | 0,_yk_=0;
- if(! (_yl_ < 0))
- {var i=_yk_;
- for(;;)
- {caml_call2(f,a[1 + i],b[1 + i]);
- var _ym_=i + 1 | 0;
- if(_yl_ !== i){var i=_ym_;continue}
- break}}
- return 0}
- function map$7(f,a)
- {var l=a.length - 1,r=caml_floatarray_create(l),_yi_=l - 1 | 0,_yh_=0;
- if(! (_yi_ < 0))
- {var i=_yh_;
- for(;;)
- {r[1 + i] = caml_call1(f,a[1 + i]);
- var _yj_=i + 1 | 0;
- if(_yi_ !== i){var i=_yj_;continue}
- break}}
- return r}
- function map2$1(f,a,b)
- {var la=a.length - 1,lb=b.length - 1;
- if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu);
- var r=caml_floatarray_create(la),_yf_=la - 1 | 0,_ye_=0;
- if(! (_yf_ < 0))
- {var i=_ye_;
- for(;;)
- {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]);
- var _yg_=i + 1 | 0;
- if(_yf_ !== i){var i=_yg_;continue}
- break}}
- return r}
- function iteri$3(f,a)
- {var _yc_=a.length - 1 - 1 | 0,_yb_=0;
- if(! (_yc_ < 0))
- {var i=_yb_;
- for(;;)
- {caml_call2(f,i,a[1 + i]);
- var _yd_=i + 1 | 0;
- if(_yc_ !== i){var i=_yd_;continue}
- break}}
- return 0}
- function mapi$3(f,a)
- {var l=a.length - 1,r=caml_floatarray_create(l),_x$_=l - 1 | 0,_x__=0;
- if(! (_x$_ < 0))
- {var i=_x__;
- for(;;)
- {r[1 + i] = caml_call2(f,i,a[1 + i]);
- var _ya_=i + 1 | 0;
- if(_x$_ !== i){var i=_ya_;continue}
- break}}
- return r}
- function fold_left$4(f,x,a)
- {var r=[0,x],_x8_=a.length - 1 - 1 | 0,_x7_=0;
- if(! (_x8_ < 0))
- {var i=_x7_;
- for(;;)
- {r[1] = caml_call2(f,r[1],a[1 + i]);
- var _x9_=i + 1 | 0;
- if(_x8_ !== i){var i=_x9_;continue}
- break}}
- return r[1]}
- function fold_right$3(f,a,x)
- {var r=[0,x],_x5_=a.length - 1 - 1 | 0;
- if(! (_x5_ < 0))
- {var i=_x5_;
- for(;;)
- {r[1] = caml_call2(f,a[1 + i],r[1]);
- var _x6_=i - 1 | 0;
- if(0 !== i){var i=_x6_;continue}
- break}}
- return r[1]}
- function exists$3(p,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(caml_call1(p,a[1 + i]))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function for_all$3(p,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 1;
- if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue}
- return 0}}
- function mem$1(x,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(0 === caml_float_compare(a[1 + i],x))return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- function mem_ieee(x,a)
- {var n=a.length - 1,i=0;
- for(;;)
- {if(i === n)return 0;
- if(x == a[1 + i])return 1;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)];
- function sort$0(cmp,a)
- {function maxson(l,i)
- {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31];
- if((i31 + 2 | 0) < l)
- {if
- (caml_call2
- (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0))
- <
- 0)
- x[1] = i31 + 1 | 0;
- if
- (caml_call2
- (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0))
- <
- 0)
- x[1] = i31 + 2 | 0;
- return x[1]}
- if
- ((i31 + 1 | 0)
- <
- l
- &&
- !
- (0
- <=
- caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0))))
- return i31 + 1 | 0;
- if(i31 < l)return i31;
- throw [0,Bottom$0,i]}
- function trickledown(l,i,e)
- {var i$0=i;
- for(;;)
- {var j=maxson(l,i$0);
- if(0 < caml_call2(cmp,caml_array_get(a,j),e))
- {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue}
- return caml_array_set(a,i$0,e)}}
- function trickle(l,i,e)
- {try
- {var _x4_=trickledown(l,i,e);return _x4_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bottom$0)
- {var i$0=exn[2];return caml_array_set(a,i$0,e)}
- throw exn}}
- function bubbledown(l,i)
- {var i$0=i;
- for(;;)
- {var i$1=maxson(l,i$0);
- caml_array_set(a,i$0,caml_array_get(a,i$1));
- var i$0=i$1;
- continue}}
- function bubble(l,i)
- {try
- {var _x3_=bubbledown(l,i);return _x3_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bottom$0){var i$0=exn[2];return i$0}
- throw exn}}
- var l=a.length - 1,_xX_=((l + 1 | 0) / 3 | 0) - 1 | 0;
- if(! (_xX_ < 0))
- {var i$2=_xX_;
- for(;;)
- {trickle(l,i$2,caml_array_get(a,i$2));
- var _x2_=i$2 - 1 | 0;
- if(0 !== i$2){var i$2=_x2_;continue}
- break}}
- var _xY_=l - 1 | 0;
- if(! (_xY_ < 2))
- {var i$0=_xY_;
- a:
- for(;;)
- {var e$0=caml_array_get(a,i$0);
- caml_array_set(a,i$0,caml_array_get(a,0));
- var i$1=bubble(i$0,0),i=i$1;
- for(;;)
- {var father=(i - 1 | 0) / 3 | 0;
- if(i === father)throw [0,Assert_failure,_w_];
- if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0))
- caml_array_set(a,i,e$0);
- else
- {caml_array_set(a,i,caml_array_get(a,father));
- if(0 < father){var i=father;continue}
- caml_array_set(a,0,e$0)}
- var _x1_=i$0 - 1 | 0;
- if(2 !== i$0){var i$0=_x1_;continue a}
- break}
- break}}
- var _xZ_=1 < l?1:0;
- if(_xZ_)
- {var e=caml_array_get(a,1);
- caml_array_set(a,1,caml_array_get(a,0));
- var _x0_=caml_array_set(a,0,e)}
- else
- var _x0_=_xZ_;
- return _x0_}
- function stable_sort(cmp,a)
- {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs)
- {var
- src1r=src1ofs + src1len | 0,
- src2r=src2ofs + src2len | 0,
- s2$1=caml_array_get(src2,src2ofs),
- s1$1=caml_array_get(a,src1ofs),
- i1=src1ofs,
- s1=s1$1,
- i2=src2ofs,
- s2=s2$1,
- d=dstofs;
- for(;;)
- {if(0 < caml_call2(cmp,s1,s2))
- {caml_array_set(dst,d,s2);
- var i2$0=i2 + 1 | 0;
- if(i2$0 < src2r)
- {var
- d$0=d + 1 | 0,
- s2$0=caml_array_get(src2,i2$0),
- i2=i2$0,
- s2=s2$0,
- d=d$0;
- continue}
- return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)}
- caml_array_set(dst,d,s1);
- var i1$0=i1 + 1 | 0;
- if(i1$0 < src1r)
- {var
- d$1=d + 1 | 0,
- s1$0=caml_array_get(a,i1$0),
- i1=i1$0,
- s1=s1$0,
- d=d$1;
- continue}
- return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}}
- function isortto(srcofs,dst,dstofs,len)
- {var _xV_=len - 1 | 0,_xU_=0;
- if(! (_xV_ < 0))
- {var i=_xU_;
- a:
- for(;;)
- {var
- e=caml_array_get(a,srcofs + i | 0),
- j=[0,(dstofs + i | 0) - 1 | 0];
- for(;;)
- {if
- (dstofs
- <=
- j[1]
- &&
- 0
- <
- caml_call2(cmp,caml_array_get(dst,j[1]),e))
- {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1]));
- j[1] += -1;
- continue}
- caml_array_set(dst,j[1] + 1 | 0,e);
- var _xW_=i + 1 | 0;
- if(_xV_ !== i){var i=_xW_;continue a}
- break}
- break}}
- return 0}
- function sortto(srcofs,dst,dstofs,len)
- {if(len <= 5)return isortto(srcofs,dst,dstofs,len);
- var l1=len / 2 | 0,l2=len - l1 | 0;
- sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2);
- sortto(srcofs,a,srcofs + l2 | 0,l1);
- return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)}
- var l=a.length - 1;
- if(l <= 5)return isortto(0,a,0,l);
- var l1=l / 2 | 0,l2=l - l1 | 0,t=caml_floatarray_create(l2);
- sortto(l1,t,0,l2);
- sortto(0,a,l2,l1);
- return merge(l2,l1,t,0,l2,a,0)}
- function to_seq$5(a)
- {function aux(i,param)
- {if(i < a.length - 1)
- {var x=a[1 + i],_xS_=i + 1 | 0;
- return [0,x,function(_xT_){return aux(_xS_,_xT_)}]}
- return 0}
- var _xQ_=0;
- return function(_xR_){return aux(_xQ_,_xR_)}}
- function to_seqi$2(a)
- {function aux(i,param)
- {if(i < a.length - 1)
- {var x=a[1 + i],_xO_=i + 1 | 0;
- return [0,[0,i,x],function(_xP_){return aux(_xO_,_xP_)}]}
- return 0}
- var _xM_=0;
- return function(_xN_){return aux(_xM_,_xN_)}}
- function of_seq$3(i$2)
- {var
- _xL_=0,
- param$0=fold_left(function(acc,x){return [0,x,acc]},_xL_,i$2),
- len=length(param$0),
- a=caml_floatarray_create(len),
- i$1=len - 1 | 0,
- i=i$1,
- param=param$0;
- for(;;)
- {if(param)
- {var tl=param[2],hd=param[1];
- a[1 + i] = hd;
- var i$0=i - 1 | 0,i=i$0,param=tl;
- continue}
- return a}}
- function map_to_array(f,a)
- {var l=a.length - 1;
- if(0 === l)return [0];
- var r=caml_make_vect(l,caml_call1(f,a[1])),_xJ_=l - 1 | 0,_xI_=1;
- if(! (_xJ_ < 1))
- {var i=_xI_;
- for(;;)
- {r[1 + i] = caml_call1(f,a[1 + i]);
- var _xK_=i + 1 | 0;
- if(_xJ_ !== i){var i=_xK_;continue}
- break}}
- return r}
- function map_from_array(f,a)
- {var l=a.length - 1,r=caml_floatarray_create(l),_xG_=l - 1 | 0,_xF_=0;
- if(! (_xG_ < 0))
- {var i=_xF_;
- for(;;)
- {r[1 + i] = caml_call1(f,a[1 + i]);
- var _xH_=i + 1 | 0;
- if(_xG_ !== i){var i=_xH_;continue}
- break}}
- return r}
- var
- _x_=caml_floatarray_create,
- _y_=caml_array_set,
- _z_=caml_array_get,
- _A_=
- [0,
- function(_xE_){return _xE_.length - 1},
- _z_,
- _y_,
- make$2,
- _x_,
- init$3,
- append$2,
- concat$3,
- sub$2,
- copy$2,
- fill$1,
- blit$2,
- to_list$2,
- of_list$0,
- iter$6,
- iteri$3,
- map$7,
- mapi$3,
- fold_left$4,
- fold_right$3,
- iter2$1,
- map2$1,
- for_all$3,
- exists$3,
- mem$1,
- mem_ieee,
- sort$0,
- stable_sort,
- stable_sort,
- to_seq$5,
- to_seqi$2,
- of_seq$3,
- map_to_array,
- map_from_array],
- _B_=caml_floatarray_create,
- _C_=caml_array_set,
- _D_=caml_array_get,
- Stdlib_Float=
- [0,
- zero$0,
- one$0,
- minus_one$0,
- succ$0,
- pred$0,
- infinity,
- neg_infinity,
- nan,
- pi,
- max_float,
- min_float,
- epsilon,
- is_finite,
- is_infinite,
- is_nan,
- is_integer,
- of_string_opt,
- to_string,
- caml_float_compare,
- equal$10,
- min$2,
- max$2,
- min_max,
- min_num,
- max_num,
- min_max_num,
- hash$0,
- [0,
- function(_xD_){return _xD_.length - 1},
- _D_,
- _C_,
- make$2,
- _B_,
- init$3,
- append$2,
- concat$3,
- sub$2,
- copy$2,
- fill$1,
- blit$2,
- to_list$2,
- of_list$0,
- iter$6,
- iteri$3,
- map$7,
- mapi$3,
- fold_left$4,
- fold_right$3,
- iter2$1,
- map2$1,
- for_all$3,
- exists$3,
- mem$1,
- mem_ieee,
- sort$0,
- stable_sort,
- stable_sort,
- to_seq$5,
- to_seqi$2,
- of_seq$3,
- map_to_array,
- map_from_array],
- _A_];
- caml_register_global(777,Stdlib_Float,"Stdlib__Float");
- var zero$1=0,one$1=1,minus_one$1=-1;
- function succ$1(n){return n + 1 | 0}
- function pred$1(n){return n - 1 | 0}
- function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0}
- var min_int$1=-2147483648,max_int$1=2147483647;
- function lognot$0(n){return n ^ -1}
- function unsigned_to_int(n)
- {if
- (!
- (0 < caml_int_compare(0,n))
- &&
- !
- (0 < caml_int_compare(n,2147483647)))
- return [0,n];
- return 0}
- function to_string$3(n){return caml_format_int(cst_d,n)}
- function of_string_opt$0(s)
- {try
- {var _xB_=[0,caml_int_of_string(s)];return _xB_}
- catch(_xC_)
- {_xC_ = caml_wrap_exception(_xC_);
- if(_xC_[1] === Failure)return 0;
- throw _xC_}}
- function compare$10(x,y){return caml_int_compare(x,y)}
- function equal$11(x,y){return 0 === caml_int_compare(x,y)?1:0}
- function unsigned_compare(n,m)
- {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)}
- function min$3(x,y){return caml_lessequal(x,y)?x:y}
- function max$3(x,y){return caml_greaterequal(x,y)?x:y}
- function unsigned_div(n,d)
- {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1;
- var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0;
- return 0 <= unsigned_compare(r,d)?q + 1 | 0:q}
- function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0}
- var
- Stdlib_Int32=
- [0,
- zero$1,
- one$1,
- minus_one$1,
- unsigned_div,
- unsigned_rem,
- succ$1,
- pred$1,
- abs$1,
- max_int$1,
- min_int$1,
- lognot$0,
- unsigned_to_int,
- of_string_opt$0,
- to_string$3,
- compare$10,
- unsigned_compare,
- equal$11,
- min$3,
- max$3];
- caml_register_global(778,Stdlib_Int32,"Stdlib__Int32");
- function succ$2(n){return caml_int64_add(n,_E_)}
- function pred$2(n){return caml_int64_sub(n,_F_)}
- function abs$2(n)
- {return caml_greaterequal(n,_G_)?n:runtime.caml_int64_neg(n)}
- function lognot$1(n){return runtime.caml_int64_xor(n,_H_)}
- var max_int$3=caml_int64_of_int32(2147483647);
- function unsigned_to_int$0(n)
- {if
- (!
- (0 < caml_int64_compare(zero$2,n))
- &&
- !
- (0 < caml_int64_compare(n,max_int$3)))
- return [0,runtime.caml_int64_to_int32(n)];
- return 0}
- function to_string$4(n){return caml_int64_format(cst_d$0,n)}
- function of_string_opt$1(s)
- {try
- {var _xz_=[0,caml_int64_of_string(s)];return _xz_}
- catch(_xA_)
- {_xA_ = caml_wrap_exception(_xA_);
- if(_xA_[1] === Failure)return 0;
- throw _xA_}}
- function compare$11(x,y){return caml_int64_compare(x,y)}
- function equal$12(x,y){return 0 === caml_int64_compare(x,y)?1:0}
- function unsigned_compare$0(n,m)
- {return caml_int64_compare
- (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))}
- function min$4(x,y){return caml_lessequal(x,y)?x:y}
- function max$4(x,y){return caml_greaterequal(x,y)?x:y}
- function unsigned_div$0(n,d)
- {if(caml_lessthan(d,zero$2))
- return 0 <= unsigned_compare$0(n,d)?one$2:zero$2;
- var
- q=
- caml_int64_shift_left
- (runtime.caml_int64_div
- (runtime.caml_int64_shift_right_unsigned(n,1),d),
- 1),
- r=caml_int64_sub(n,caml_int64_mul(q,d));
- return 0 <= unsigned_compare$0(r,d)?succ$2(q):q}
- function unsigned_rem$0(n,d)
- {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))}
- var
- Stdlib_Int64=
- [0,
- zero$2,
- one$2,
- minus_one$2,
- unsigned_div$0,
- unsigned_rem$0,
- succ$2,
- pred$2,
- abs$2,
- max_int$2,
- min_int$2,
- lognot$1,
- unsigned_to_int$0,
- of_string_opt$1,
- to_string$4,
- compare$11,
- unsigned_compare$0,
- equal$12,
- min$4,
- max$4];
- caml_register_global(779,Stdlib_Int64,"Stdlib__Int64");
- var zero$3=0,one$3=1,minus_one$3=-1;
- function succ$3(n){return n + 1 | 0}
- function pred$3(n){return n - 1 | 0}
- function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0}
- var min_int$3=-2147483648,max_int$4=2147483647;
- function lognot$2(n){return n ^ -1}
- function unsigned_to_int$1(n)
- {if
- (!
- (0 < caml_int_compare(0,n))
- &&
- !
- (0 < caml_int_compare(n,2147483647)))
- return [0,n];
- return 0}
- function to_string$5(n){return caml_format_int(cst_d$1,n)}
- function of_string_opt$2(s)
- {try
- {var _xx_=[0,caml_int_of_string(s)];return _xx_}
- catch(_xy_)
- {_xy_ = caml_wrap_exception(_xy_);
- if(_xy_[1] === Failure)return 0;
- throw _xy_}}
- function compare$12(x,y){return caml_int_compare(x,y)}
- function equal$13(x,y){return 0 === caml_int_compare(x,y)?1:0}
- function unsigned_compare$1(n,m)
- {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)}
- function min$5(x,y){return caml_lessequal(x,y)?x:y}
- function max$5(x,y){return caml_greaterequal(x,y)?x:y}
- function unsigned_div$1(n,d)
- {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3;
- var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0;
- return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q}
- function unsigned_rem$1(n,d)
- {return n - caml_mul(unsigned_div$1(n,d),d) | 0}
- var
- Stdlib_Nativeint=
- [0,
- zero$3,
- one$3,
- minus_one$3,
- unsigned_div$1,
- unsigned_rem$1,
- succ$3,
- pred$3,
- abs$3,
- match$1,
- max_int$4,
- min_int$3,
- lognot$2,
- unsigned_to_int$1,
- of_string_opt$2,
- to_string$5,
- compare$12,
- unsigned_compare$1,
- equal$13,
- min$5,
- max$5];
- caml_register_global(780,Stdlib_Nativeint,"Stdlib__Nativeint");
- function engine(tbl,state,buf)
- {var
- result=runtime.caml_lex_engine(tbl,state,buf),
- _xu_=0 <= result?1:0,
- _xv_=_xu_?buf[12] !== dummy_pos?1:0:_xu_;
- if(_xv_)
- {buf[11] = buf[12];
- var _xw_=buf[12];
- buf[12] = [0,_xw_[1],_xw_[2],_xw_[3],buf[4] + buf[6] | 0]}
- return result}
- function new_engine(tbl,state,buf)
- {var
- result=runtime.caml_new_lex_engine(tbl,state,buf),
- _xr_=0 <= result?1:0,
- _xs_=_xr_?buf[12] !== dummy_pos?1:0:_xr_;
- if(_xs_)
- {buf[11] = buf[12];
- var _xt_=buf[12];
- buf[12] = [0,_xt_[1],_xt_[2],_xt_[3],buf[4] + buf[6] | 0]}
- return result}
- function from_function(opt,f)
- {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1;
- var
- _xd_=with_positions?zero_pos:dummy_pos,
- _xe_=with_positions?zero_pos:dummy_pos,
- aux_buffer=caml_create_bytes(512),
- _xf_=[0],
- _xg_=0,
- _xh_=0,
- _xi_=0,
- _xj_=0,
- _xk_=0,
- _xl_=0,
- _xm_=0,
- _xn_=caml_create_bytes(1024);
- return [0,
- function(lexbuf)
- {var
- read=
- caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)),
- n=0 < read?read:(lexbuf[9] = 1,0);
- if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0))
- {if
- (((lexbuf[3] - lexbuf[5] | 0) + n | 0)
- <=
- caml_ml_bytes_length(lexbuf[2]))
- blit
- (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0);
- else
- {var
- newlen=
- min$1
- (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length);
- if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0))
- failwith(cst_Lexing_lex_refill_cannot_g);
- var newbuf=caml_create_bytes(newlen);
- blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0);
- lexbuf[2] = newbuf}
- var s=lexbuf[5];
- lexbuf[4] = lexbuf[4] + s | 0;
- lexbuf[6] = lexbuf[6] - s | 0;
- lexbuf[5] = 0;
- lexbuf[7] = lexbuf[7] - s | 0;
- lexbuf[3] = lexbuf[3] - s | 0;
- var t=lexbuf[10],_xp_=t.length - 1 - 1 | 0,_xo_=0;
- if(! (_xp_ < 0))
- {var i=_xo_;
- for(;;)
- {var v=caml_check_bound(t,i)[1 + i];
- if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0;
- var _xq_=i + 1 | 0;
- if(_xp_ !== i){var i=_xq_;continue}
- break}}}
- blit(aux_buffer,0,lexbuf[2],lexbuf[3],n);
- lexbuf[3] = lexbuf[3] + n | 0;
- return 0},
- _xn_,
- _xm_,
- _xl_,
- _xk_,
- _xj_,
- _xi_,
- _xh_,
- _xg_,
- _xf_,
- _xe_,
- _xd_]}
- function from_channel(with_positions,ic)
- {return from_function
- (with_positions,function(buf,n){return input(ic,buf,0,n)})}
- function from_string$0(opt,s)
- {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1;
- var
- _w4_=with_positions?zero_pos:dummy_pos,
- _w5_=with_positions?zero_pos:dummy_pos,
- _w6_=[0],
- _w7_=1,
- _w8_=0,
- _w9_=0,
- _w__=0,
- _w$_=0,
- _xa_=0,
- _xb_=caml_ml_string_length(s),
- _xc_=to_bytes(s);
- return [0,
- function(lexbuf){lexbuf[9] = 1;return 0},
- _xc_,
- _xb_,
- _xa_,
- _w$_,
- _w__,
- _w9_,
- _w8_,
- _w7_,
- _w6_,
- _w5_,
- _w4_]}
- function set_position(lexbuf,position)
- {lexbuf[12] = [0,lexbuf[12][1],position[2],position[3],position[4]];
- lexbuf[4] = position[4];
- return 0}
- function set_filename(lexbuf,fname)
- {var _w3_=lexbuf[12];
- lexbuf[12] = [0,fname,_w3_[2],_w3_[3],_w3_[4]];
- return 0}
- function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0}
- function lexeme(lexbuf)
- {var len=lexbuf[6] - lexbuf[5] | 0;
- return sub_string(lexbuf[2],lexbuf[5],len)}
- function sub_lexeme(lexbuf,i1,i2)
- {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)}
- function sub_lexeme_opt(lexbuf,i1,i2)
- {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]}
- return 0}
- function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)}
- function sub_lexeme_char_opt(lexbuf,i)
- {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0}
- function lexeme_char(lexbuf,i)
- {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)}
- function lexeme_start(lexbuf){return lexbuf[11][4]}
- function lexeme_end(lexbuf){return lexbuf[12][4]}
- function lexeme_start_p(lexbuf){return lexbuf[11]}
- function lexeme_end_p(lexbuf){return lexbuf[12]}
- function new_line(lexbuf)
- {var
- lcp=lexbuf[12],
- _w1_=lcp !== dummy_pos?1:0,
- _w2_=_w1_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_w1_;
- return _w2_}
- function flush_input(lb)
- {lb[6] = 0;
- lb[4] = 0;
- var lcp=lb[12];
- if(lcp !== dummy_pos)
- lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]];
- lb[3] = 0;
- return 0}
- var
- Stdlib_Lexing=
- [0,
- dummy_pos,
- from_channel,
- from_string$0,
- from_function,
- set_position,
- set_filename,
- with_positions,
- lexeme,
- lexeme_char,
- lexeme_start,
- lexeme_end,
- lexeme_start_p,
- lexeme_end_p,
- new_line,
- flush_input,
- sub_lexeme,
- sub_lexeme_opt,
- sub_lexeme_char,
- sub_lexeme_char_opt,
- engine,
- new_engine];
- caml_register_global(781,Stdlib_Lexing,"Stdlib__Lexing");
- var
- YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)],
- Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)],
- env=
- [0,
- caml_make_vect(100,0),
- caml_make_vect(100,0),
- caml_make_vect(100,dummy_pos),
- caml_make_vect(100,dummy_pos),
- 100,
- 0,
- 0,
- 0,
- dummy_pos,
- dummy_pos,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0];
- function grow_stacks(param)
- {var
- oldsize=env[5],
- newsize=oldsize * 2 | 0,
- new_s=caml_make_vect(newsize,0),
- new_v=caml_make_vect(newsize,0),
- new_start=caml_make_vect(newsize,dummy_pos),
- new_end=caml_make_vect(newsize,dummy_pos);
- blit$1(env[1],0,new_s,0,oldsize);
- env[1] = new_s;
- blit$1(env[2],0,new_v,0,oldsize);
- env[2] = new_v;
- blit$1(env[3],0,new_start,0,oldsize);
- env[3] = new_start;
- blit$1(env[4],0,new_end,0,oldsize);
- env[4] = new_end;
- env[5] = newsize;
- return 0}
- function clear_parser(param)
- {fill$0(env[2],0,env[5],0);env[8] = 0;return 0}
- var current_lookahead_fun=[0,function(param){return 0}];
- function yyparse(tables,start,lexer,lexbuf)
- {var
- init_asp=env[11],
- init_sp=env[14],
- init_stackbase=env[6],
- init_state=env[15],
- init_curr_char=env[7],
- init_lval=env[8],
- init_errflag=env[16];
- env[6] = env[14] + 1 | 0;
- env[7] = start;
- env[10] = lexbuf[12];
- try
- {var cmd=0,arg=0;
- for(;;)
- {var match=runtime.caml_parse_engine(tables,env,cmd,arg);
- switch(match)
- {case 0:
- var arg$0=caml_call1(lexer,lexbuf);
- env[9] = lexbuf[11];
- env[10] = lexbuf[12];
- var cmd=1,arg=arg$0;
- continue;
- case 1:throw Parse_error;
- case 2:grow_stacks(0);var cmd=2,arg=0;continue;
- case 3:grow_stacks(0);var cmd=3,arg=0;continue;
- case 4:
- try
- {var
- _wV_=env[13],
- _wW_=
- caml_call1(caml_check_bound(tables[1],_wV_)[1 + _wV_],env),
- _wX_=4,
- arg$1=_wW_,
- cmd$0=_wX_}
- catch(_w0_)
- {_w0_ = caml_wrap_exception(_w0_);
- if(_w0_ !== Parse_error)throw _w0_;
- var arg$1=0,cmd$0=5,_wY_=_w0_}
- var cmd=cmd$0,arg=arg$1;
- continue;
- default:
- caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- var curr_char=env[7];
- env[11] = init_asp;
- env[14] = init_sp;
- env[6] = init_stackbase;
- env[15] = init_state;
- env[7] = init_curr_char;
- env[8] = init_lval;
- env[16] = init_errflag;
- if(exn[1] === YYexit){var v=exn[2];return v}
- current_lookahead_fun[1]
- =
- function(tok)
- {if(is_block(tok))
- {var _wZ_=caml_obj_tag(tok);
- return caml_check_bound(tables[3],_wZ_)[1 + _wZ_] === curr_char
- ?1
- :0}
- return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0};
- throw exn}}
- function peek_val(env,n)
- {var _wU_=env[11] - n | 0;return caml_check_bound(env[2],_wU_)[1 + _wU_]}
- function symbol_start_pos(param)
- {var i=env[12];
- for(;;)
- {if(0 < i)
- {var
- _wR_=(env[11] - i | 0) + 1 | 0,
- st=caml_check_bound(env[3],_wR_)[1 + _wR_],
- _wS_=(env[11] - i | 0) + 1 | 0,
- en=caml_check_bound(env[4],_wS_)[1 + _wS_];
- if(caml_notequal(st,en))return st;
- var i$0=i - 1 | 0,i=i$0;
- continue}
- var _wT_=env[11];
- return caml_check_bound(env[4],_wT_)[1 + _wT_]}}
- function symbol_end_pos(param)
- {var _wQ_=env[11];return caml_check_bound(env[4],_wQ_)[1 + _wQ_]}
- function rhs_start_pos(n)
- {var _wP_=env[11] - (env[12] - n | 0) | 0;
- return caml_check_bound(env[3],_wP_)[1 + _wP_]}
- function rhs_end_pos(n)
- {var _wO_=env[11] - (env[12] - n | 0) | 0;
- return caml_check_bound(env[4],_wO_)[1 + _wO_]}
- function symbol_start(param){return symbol_start_pos(0)[4]}
- function symbol_end(param){return symbol_end_pos(0)[4]}
- function rhs_start(n){return rhs_start_pos(n)[4]}
- function rhs_end(n){return rhs_end_pos(n)[4]}
- function is_current_lookahead(tok)
- {return caml_call1(current_lookahead_fun[1],tok)}
- function parse_error(param){return 0}
- var
- Stdlib_Parsing=
- [0,
- symbol_start,
- symbol_end,
- rhs_start,
- rhs_end,
- symbol_start_pos,
- symbol_end_pos,
- rhs_start_pos,
- rhs_end_pos,
- clear_parser,
- Parse_error,
- function(_wN_){return runtime.caml_set_parser_trace(_wN_)},
- YYexit,
- yyparse,
- peek_val,
- is_current_lookahead,
- parse_error];
- caml_register_global(782,Stdlib_Parsing,"Stdlib__Parsing");
- var
- Stdlib_Set=
- [0,
- function(Ord)
- {function height(param){if(param){var h=param[4];return h}return 0}
- function create(l,v,r)
- {if(l)var h=l[4],hl=h;else var hl=0;
- if(r)var h$0=r[4],hr=h$0;else var hr=0;
- var _wM_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
- return [0,l,v,r,_wM_]}
- function bal(l,v,r)
- {if(l)var h=l[4],hl=h;else var hl=0;
- if(r)var h$0=r[4],hr=h$0;else var hr=0;
- if((hr + 2 | 0) < hl)
- {if(l)
- {var lr=l[3],lv=l[2],ll=l[1],_wH_=height(lr);
- if(_wH_ <= height(ll))return create(ll,lv,create(lr,v,r));
- if(lr)
- {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_wI_=create(lrr,v,r);
- return create(create(ll,lv,lrl),lrv,_wI_)}
- return invalid_arg(cst_Set_bal)}
- return invalid_arg(cst_Set_bal$0)}
- if((hl + 2 | 0) < hr)
- {if(r)
- {var rr=r[3],rv=r[2],rl=r[1],_wJ_=height(rl);
- if(_wJ_ <= height(rr))return create(create(l,v,rl),rv,rr);
- if(rl)
- {var rlr=rl[3],rlv=rl[2],rll=rl[1],_wK_=create(rlr,rv,rr);
- return create(create(l,v,rll),rlv,_wK_)}
- return invalid_arg(cst_Set_bal$1)}
- return invalid_arg(cst_Set_bal$2)}
- var _wL_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
- return [0,l,v,r,_wL_]}
- function add(x,t)
- {if(t)
- {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)return t;
- if(0 <= c){var rr=add(x,r);return r === rr?t:bal(l,v,rr)}
- var ll=add(x,l);
- return l === ll?t:bal(ll,v,r)}
- return [0,0,x,0,1]}
- function singleton(x){return [0,0,x,0,1]}
- function add_min_element(x,param)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- return bal(add_min_element(x,l),v,r)}
- return singleton(x)}
- function add_max_element(x,param)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- return bal(l,v,add_max_element(x,r))}
- return singleton(x)}
- function join(l,v,r)
- {if(l)
- {if(r)
- {var
- rh=r[4],
- rr=r[3],
- rv=r[2],
- rl=r[1],
- lh=l[4],
- lr=l[3],
- lv=l[2],
- ll=l[1];
- return (rh + 2 | 0) < lh
- ?bal(ll,lv,join(lr,v,r))
- :(lh + 2 | 0) < rh?bal(join(l,v,rl),rv,rr):create(l,v,r)}
- return add_max_element(v,l)}
- return add_min_element(v,r)}
- function min_elt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var _wG_=param$0[1];
- if(_wG_){var param$0=_wG_;continue}
- var v=param$0[2];
- return v}
- throw Not_found}}
- function min_elt_opt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var _wF_=param$0[1];
- if(_wF_){var param$0=_wF_;continue}
- var v=param$0[2];
- return [0,v]}
- return 0}}
- function max_elt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue}
- var v=param$0[2];
- return v}
- throw Not_found}}
- function max_elt_opt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue}
- var v=param$0[2];
- return [0,v]}
- return 0}}
- function remove_min_elt(param)
- {if(param)
- {var _wE_=param[1];
- if(_wE_)
- {var r=param[3],v=param[2];return bal(remove_min_elt(_wE_),v,r)}
- var r$0=param[3];
- return r$0}
- return invalid_arg(cst_Set_remove_min_elt)}
- function concat(t1,t2)
- {if(t1)
- {if(t2)
- {var _wD_=remove_min_elt(t2);return join(t1,min_elt(t2),_wD_)}
- return t1}
- return t2}
- function split(x,param)
- {if(param)
- {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)return [0,l,1,r];
- if(0 <= c)
- {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1];
- return [0,join(l,v,lr),pres,rr]}
- var
- match$0=split(x,l),
- rl=match$0[3],
- pres$0=match$0[2],
- ll=match$0[1];
- return [0,ll,pres$0,join(rl,v,r)]}
- return _I_}
- var empty=0;
- function is_empty(param){return param?0:1}
- function mem(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v),
- _wC_=0 === c?1:0;
- if(_wC_)return _wC_;
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- return 0}}
- function remove(x,t)
- {if(t)
- {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)
- {if(l)
- {if(r)
- {var _wB_=remove_min_elt(r);return bal(l,min_elt(r),_wB_)}
- return l}
- return r}
- if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)}
- var ll=remove(x,l);
- return l === ll?t:bal(ll,v,r)}
- return 0}
- function union(s1,s2)
- {if(s1)
- {if(s2)
- {var
- h2=s2[4],
- r2=s2[3],
- v2=s2[2],
- l2=s2[1],
- h1=s1[4],
- r1=s1[3],
- v1=s1[2],
- l1=s1[1];
- if(h2 <= h1)
- {if(1 === h2)return add(v2,s1);
- var
- match=split(v1,s2),
- r2$0=match[3],
- l2$0=match[1],
- _wz_=union(r1,r2$0);
- return join(union(l1,l2$0),v1,_wz_)}
- if(1 === h1)return add(v1,s2);
- var
- match$0=split(v2,s1),
- r1$0=match$0[3],
- l1$0=match$0[1],
- _wA_=union(r1$0,r2);
- return join(union(l1$0,l2),v2,_wA_)}
- return s1}
- return s2}
- function inter(s1,s2)
- {if(s1)
- {if(s2)
- {var r1=s1[3],v1=s1[2],l1=s1[1],_wv_=split(v1,s2),_ww_=_wv_[1];
- if(_wv_[2])
- {var r2=_wv_[3],_wx_=inter(r1,r2);
- return join(inter(l1,_ww_),v1,_wx_)}
- var r2$0=_wv_[3],_wy_=inter(r1,r2$0);
- return concat(inter(l1,_ww_),_wy_)}
- return 0}
- return 0}
- function split_bis(x,param)
- {if(param)
- {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)return 0;
- if(0 <= c)
- {var match=split_bis(x,r);
- if(match)
- {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]}
- return 0}
- var match$0=split_bis(x,l);
- if(match$0)
- {var rl=match$0[2],ll=match$0[1];
- return [0,
- ll,
- function(param){return join(caml_call1(rl,0),v,r)}]}
- return 0}
- return [0,0,function(param){return 0}]}
- function disjoint(s1,s2)
- {var s1$0=s1,s2$0=s2;
- for(;;)
- {if(s1$0 && s2$0)
- {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1];
- if(s1$0 === s2$0)return 0;
- var match=split_bis(v1,s2$0);
- if(match)
- {var r2=match[2],l2=match[1],_wu_=disjoint(l1,l2);
- if(_wu_)
- {var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue}
- return _wu_}
- return 0}
- return 1}}
- function diff(s1,s2)
- {if(s1)
- {if(s2)
- {var r1=s1[3],v1=s1[2],l1=s1[1],_wq_=split(v1,s2),_wr_=_wq_[1];
- if(_wq_[2])
- {var r2=_wq_[3],_ws_=diff(r1,r2);
- return concat(diff(l1,_wr_),_ws_)}
- var r2$0=_wq_[3],_wt_=diff(r1,r2$0);
- return join(diff(l1,_wr_),v1,_wt_)}
- return s1}
- return 0}
- function cons_enum(s,e)
- {var s$0=s,e$0=e;
- for(;;)
- {if(s$0)
- {var
- r=s$0[3],
- v=s$0[2],
- s$1=s$0[1],
- e$1=[0,v,r,e$0],
- s$0=s$1,
- e$0=e$1;
- continue}
- return e$0}}
- function compare(s1,s2)
- {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2;
- for(;;)
- {if(e1)
- {if(e2)
- {var
- e2$0=e2[3],
- r2=e2[2],
- v2=e2[1],
- e1$0=e1[3],
- r1=e1[2],
- v1=e1[1],
- c=caml_call2(Ord[1],v1,v2);
- if(0 === c)
- {var
- e2$1=cons_enum(r2,e2$0),
- e1$1=cons_enum(r1,e1$0),
- e1=e1$1,
- e2=e2$1;
- continue}
- return c}
- return 1}
- return e2?-1:0}}
- function equal(s1,s2){return 0 === compare(s1,s2)?1:0}
- function subset(s1,s2)
- {var s1$0=s1,s2$0=s2;
- for(;;)
- {if(s1$0)
- {if(s2$0)
- {var
- r2=s2$0[3],
- v2=s2$0[2],
- l2=s2$0[1],
- r1=s1$0[3],
- v1=s1$0[2],
- l1=s1$0[1],
- c=caml_call2(Ord[1],v1,v2);
- if(0 === c)
- {var _wn_=subset(l1,l2);
- if(_wn_){var s1$0=r1,s2$0=r2;continue}
- return _wn_}
- if(0 <= c)
- {var _wo_=subset([0,0,v1,r1,0],r2);
- if(_wo_){var s1$0=l1;continue}
- return _wo_}
- var _wp_=subset([0,l1,v1,0,0],l2);
- if(_wp_){var s1$0=r1;continue}
- return _wp_}
- return 0}
- return 1}}
- function iter(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var r=param$0[3],v=param$0[2],l=param$0[1];
- iter(f,l);
- caml_call1(f,v);
- var param$0=r;
- continue}
- return 0}}
- function fold(f,s,accu)
- {var s$0=s,accu$0=accu;
- for(;;)
- {if(s$0)
- {var
- r=s$0[3],
- v=s$0[2],
- l=s$0[1],
- accu$1=caml_call2(f,v,fold(f,l,accu$0)),
- s$0=r,
- accu$0=accu$1;
- continue}
- return accu$0}}
- function for_all(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- _wk_=caml_call1(p,v);
- if(_wk_)
- {var _wl_=for_all(p,l);
- if(_wl_){var param$0=r;continue}
- var _wm_=_wl_}
- else
- var _wm_=_wk_;
- return _wm_}
- return 1}}
- function exists(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- _wh_=caml_call1(p,v);
- if(_wh_)
- var _wi_=_wh_;
- else
- {var _wj_=exists(p,l);
- if(! _wj_){var param$0=r;continue}
- var _wi_=_wj_}
- return _wi_}
- return 0}}
- function filter(p,t)
- {if(t)
- {var
- r=t[3],
- v=t[2],
- l=t[1],
- l$0=filter(p,l),
- pv=caml_call1(p,v),
- r$0=filter(p,r);
- if(pv){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)}
- return concat(l$0,r$0)}
- return 0}
- function partition(p,param)
- {if(param)
- {var
- r=param[3],
- v=param[2],
- l=param[1],
- match=partition(p,l),
- lf=match[2],
- lt=match[1],
- pv=caml_call1(p,v),
- match$0=partition(p,r),
- rf=match$0[2],
- rt=match$0[1];
- if(pv){var _wf_=concat(lf,rf);return [0,join(lt,v,rt),_wf_]}
- var _wg_=join(lf,v,rf);
- return [0,concat(lt,rt),_wg_]}
- return _J_}
- function cardinal(param)
- {if(param)
- {var r=param[3],l=param[1],_we_=cardinal(r);
- return (cardinal(l) + 1 | 0) + _we_ | 0}
- return 0}
- function elements_aux(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- accu$1=[0,v,elements_aux(accu$0,r)],
- accu$0=accu$1,
- param$0=l;
- continue}
- return accu$0}}
- function elements(s){return elements_aux(0,s)}
- function find(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v);
- if(0 === c)return v;
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- throw Not_found}}
- function find_first(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,param=l$0;
- for(;;)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,param=l;continue}
- var param=r;
- continue}
- return v0}}
- var param$1=r$0;
- continue}
- throw Not_found}}
- function find_first_opt(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,param=l$0;
- for(;;)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,param=l;continue}
- var param=r;
- continue}
- return [0,v0]}}
- var param$1=r$0;
- continue}
- return 0}}
- function find_last(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,param=r$0;
- for(;;)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,param=r;continue}
- var param=l;
- continue}
- return v0}}
- var param$1=l$0;
- continue}
- throw Not_found}}
- function find_last_opt(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,param=r$0;
- for(;;)
- {if(param)
- {var r=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,param=r;continue}
- var param=l;
- continue}
- return [0,v0]}}
- var param$1=l$0;
- continue}
- return 0}}
- function find_opt(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[3],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v);
- if(0 === c)return [0,v];
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- return 0}}
- function try_join(l,v,r)
- {var switch$0=0;
- if(0 !== l)
- {var _wd_=max_elt(l);
- if(0 <= caml_call2(Ord[1],_wd_,v))switch$0 = 1}
- if(! switch$0)
- {var switch$1=0;
- if(0 !== r)
- {var _wc_=min_elt(r);
- if(0 <= caml_call2(Ord[1],v,_wc_))switch$1 = 1}
- if(! switch$1)return join(l,v,r)}
- return union(l,add(v,r))}
- function map(f,t)
- {if(t)
- {var
- r=t[3],
- v=t[2],
- l=t[1],
- l$0=map(f,l),
- v$0=caml_call1(f,v),
- r$0=map(f,r);
- if(l === l$0 && v === v$0 && r === r$0)return t;
- return try_join(l$0,v$0,r$0)}
- return 0}
- function filter_map(f,t)
- {if(t)
- {var
- r=t[3],
- v=t[2],
- l=t[1],
- t1=filter_map(f,l),
- v$0=caml_call1(f,v),
- t2=filter_map(f,r);
- if(v$0)
- {var v$1=v$0[1];
- if(l === t1 && v === v$1 && r === t2)return t;
- return try_join(t1,v$1,t2)}
- if(t1)
- {if(t2)
- {var _wb_=remove_min_elt(t2);
- return try_join(t1,min_elt(t2),_wb_)}
- return t1}
- return t2}
- return 0}
- function of_list(l)
- {if(l)
- {var _v2_=l[2],_v3_=l[1];
- if(_v2_)
- {var _v4_=_v2_[2],_v5_=_v2_[1];
- if(_v4_)
- {var _v6_=_v4_[2],_v7_=_v4_[1];
- if(_v6_)
- {var _v8_=_v6_[2],_v9_=_v6_[1];
- if(_v8_)
- {if(_v8_[2])
- {var
- l$0=sort_uniq(Ord[1],l),
- sub=
- function(n,l)
- {if(! (3 < n >>> 0))
- switch(n)
- {case 0:return [0,0,l];
- case 1:
- if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]}
- break;
- case 2:
- if(l)
- {var _v__=l[2];
- if(_v__)
- {var l$4=_v__[2],x1=_v__[1],x0$0=l[1];
- return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}}
- break;
- default:
- if(l)
- {var _v$_=l[2];
- if(_v$_)
- {var _wa_=_v$_[2];
- if(_wa_)
- {var l$5=_wa_[2],x2=_wa_[1],x1$0=_v$_[1],x0$1=l[1];
- return [0,[0,[0,0,x0$1,0,1],x1$0,[0,0,x2,0,1],2],l$5]}}}}
- var nl=n / 2 | 0,match=sub(nl,l),l$0=match[2],left=match[1];
- if(l$0)
- {var
- l$1=l$0[2],
- mid=l$0[1],
- match$0=sub((n - nl | 0) - 1 | 0,l$1),
- l$2=match$0[2],
- right=match$0[1];
- return [0,create(left,mid,right),l$2]}
- throw [0,Assert_failure,_K_]};
- return sub(length(l$0),l$0)[1]}
- var x4=_v8_[1];
- return add(x4,add(_v9_,add(_v7_,add(_v5_,singleton(_v3_)))))}
- return add(_v9_,add(_v7_,add(_v5_,singleton(_v3_))))}
- return add(_v7_,add(_v5_,singleton(_v3_)))}
- return add(_v5_,singleton(_v3_))}
- return singleton(_v3_)}
- return empty}
- function add_seq(i,m)
- {return fold_left(function(s,x){return add(x,s)},m,i)}
- function of_seq(i){return add_seq(i,empty)}
- function seq_of_enum(c,param)
- {if(c)
- {var rest=c[3],t=c[2],x=c[1],_v0_=cons_enum(t,rest);
- return [0,x,function(_v1_){return seq_of_enum(_v0_,_v1_)}]}
- return 0}
- function to_seq(c)
- {var _vY_=cons_enum(c,0);
- return function(_vZ_){return seq_of_enum(_vY_,_vZ_)}}
- function snoc_enum(s,e)
- {var s$0=s,e$0=e;
- for(;;)
- {if(s$0)
- {var
- s$1=s$0[3],
- v=s$0[2],
- l=s$0[1],
- e$1=[0,v,l,e$0],
- s$0=s$1,
- e$0=e$1;
- continue}
- return e$0}}
- function rev_seq_of_enum(c,param)
- {if(c)
- {var rest=c[3],t=c[2],x=c[1],_vW_=snoc_enum(t,rest);
- return [0,x,function(_vX_){return rev_seq_of_enum(_vW_,_vX_)}]}
- return 0}
- function to_rev_seq(c)
- {var _vU_=snoc_enum(c,0);
- return function(_vV_){return rev_seq_of_enum(_vU_,_vV_)}}
- function to_seq_from(low,s)
- {var s$0=s,c=0;
- for(;;)
- {if(s$0)
- {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low);
- if(0 !== n)
- {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue}
- var s$0=r;
- continue}
- var _vS_=[0,v,r,c]}
- else
- var _vS_=c;
- return function(_vT_){return seq_of_enum(_vS_,_vT_)}}}
- return [0,
- empty,
- is_empty,
- mem,
- add,
- singleton,
- remove,
- union,
- inter,
- disjoint,
- diff,
- compare,
- equal,
- subset,
- iter,
- map,
- fold,
- for_all,
- exists,
- filter,
- filter_map,
- partition,
- cardinal,
- elements,
- min_elt,
- min_elt_opt,
- max_elt,
- max_elt_opt,
- min_elt,
- min_elt_opt,
- split,
- find,
- find_opt,
- find_first,
- find_first_opt,
- find_last,
- find_last_opt,
- of_list,
- to_seq_from,
- to_seq,
- to_rev_seq,
- add_seq,
- of_seq]}];
- caml_register_global(783,Stdlib_Set,"Stdlib__Set");
- var
- Stdlib_Map=
- [0,
- function(Ord)
- {function height(param){if(param){var h=param[5];return h}return 0}
- function create(l,x,d,r)
- {var hl=height(l),hr=height(r),_vR_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
- return [0,l,x,d,r,_vR_]}
- function singleton(x,d){return [0,0,x,d,0,1]}
- function bal(l,x,d,r)
- {if(l)var h=l[5],hl=h;else var hl=0;
- if(r)var h$0=r[5],hr=h$0;else var hr=0;
- if((hr + 2 | 0) < hl)
- {if(l)
- {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_vM_=height(lr);
- if(_vM_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r));
- if(lr)
- {var
- lrr=lr[4],
- lrd=lr[3],
- lrv=lr[2],
- lrl=lr[1],
- _vN_=create(lrr,x,d,r);
- return create(create(ll,lv,ld,lrl),lrv,lrd,_vN_)}
- return invalid_arg(cst_Map_bal)}
- return invalid_arg(cst_Map_bal$0)}
- if((hl + 2 | 0) < hr)
- {if(r)
- {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_vO_=height(rl);
- if(_vO_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr);
- if(rl)
- {var
- rlr=rl[4],
- rld=rl[3],
- rlv=rl[2],
- rll=rl[1],
- _vP_=create(rlr,rv,rd,rr);
- return create(create(l,x,d,rll),rlv,rld,_vP_)}
- return invalid_arg(cst_Map_bal$1)}
- return invalid_arg(cst_Map_bal$2)}
- var _vQ_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
- return [0,l,x,d,r,_vQ_]}
- var empty=0;
- function is_empty(param){return param?0:1}
- function add(x,data,m)
- {if(m)
- {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)return d === data?m:[0,l,x,data,r,h];
- if(0 <= c){var rr=add(x,data,r);return r === rr?m:bal(l,v,d,rr)}
- var ll=add(x,data,l);
- return l === ll?m:bal(ll,v,d,r)}
- return [0,0,x,data,0,1]}
- function find(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- d=param$0[3],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v);
- if(0 === c)return d;
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- throw Not_found}}
- function find_first(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var
- r$0=param$1[4],
- d$0=param$1[3],
- v$0=param$1[2],
- l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,d0=d$0,param=l$0;
- for(;;)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue}
- var param=r;
- continue}
- return [0,v0,d0]}}
- var param$1=r$0;
- continue}
- throw Not_found}}
- function find_first_opt(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var
- r$0=param$1[4],
- d$0=param$1[3],
- v$0=param$1[2],
- l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,d0=d$0,param=l$0;
- for(;;)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue}
- var param=r;
- continue}
- return [0,[0,v0,d0]]}}
- var param$1=r$0;
- continue}
- return 0}}
- function find_last(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var
- r$0=param$1[4],
- d$0=param$1[3],
- v$0=param$1[2],
- l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,d0=d$0,param=r$0;
- for(;;)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue}
- var param=l;
- continue}
- return [0,v0,d0]}}
- var param$1=l$0;
- continue}
- throw Not_found}}
- function find_last_opt(f,param$0)
- {var param$1=param$0;
- for(;;)
- {if(param$1)
- {var
- r$0=param$1[4],
- d$0=param$1[3],
- v$0=param$1[2],
- l$0=param$1[1];
- if(caml_call1(f,v$0))
- {var v0=v$0,d0=d$0,param=r$0;
- for(;;)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue}
- var param=l;
- continue}
- return [0,[0,v0,d0]]}}
- var param$1=l$0;
- continue}
- return 0}}
- function find_opt(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- d=param$0[3],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v);
- if(0 === c)return [0,d];
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- return 0}}
- function mem(x,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- v=param$0[2],
- l=param$0[1],
- c=caml_call2(Ord[1],x,v),
- _vL_=0 === c?1:0;
- if(_vL_)return _vL_;
- var param$1=0 <= c?r:l,param$0=param$1;
- continue}
- return 0}}
- function min_binding(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var _vK_=param$0[1];
- if(_vK_){var param$0=_vK_;continue}
- var d=param$0[3],v=param$0[2];
- return [0,v,d]}
- throw Not_found}}
- function min_binding_opt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var _vJ_=param$0[1];
- if(_vJ_){var param$0=_vJ_;continue}
- var d=param$0[3],v=param$0[2];
- return [0,[0,v,d]]}
- return 0}}
- function max_binding(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue}
- var d=param$0[3],v=param$0[2];
- return [0,v,d]}
- throw Not_found}}
- function max_binding_opt(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue}
- var d=param$0[3],v=param$0[2];
- return [0,[0,v,d]]}
- return 0}}
- function remove_min_binding(param)
- {if(param)
- {var _vI_=param[1];
- if(_vI_)
- {var r=param[4],d=param[3],v=param[2];
- return bal(remove_min_binding(_vI_),v,d,r)}
- var r$0=param[4];
- return r$0}
- return invalid_arg(cst_Map_remove_min_elt)}
- function _vh_(t1,t2)
- {if(t1)
- {if(t2)
- {var match=min_binding(t2),d=match[2],x=match[1];
- return bal(t1,x,d,remove_min_binding(t2))}
- return t1}
- return t2}
- function remove(x,m)
- {if(m)
- {var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)return _vh_(l,r);
- if(0 <= c){var rr=remove(x,r);return r === rr?m:bal(l,v,d,rr)}
- var ll=remove(x,l);
- return l === ll?m:bal(ll,v,d,r)}
- return 0}
- function update(x,f,m)
- {if(m)
- {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v);
- if(0 === c)
- {var match=caml_call1(f,[0,d]);
- if(match)
- {var data=match[1];return d === data?m:[0,l,x,data,r,h]}
- return _vh_(l,r)}
- if(0 <= c){var rr=update(x,f,r);return r === rr?m:bal(l,v,d,rr)}
- var ll=update(x,f,l);
- return l === ll?m:bal(ll,v,d,r)}
- var match$0=caml_call1(f,0);
- if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]}
- return 0}
- function iter(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1];
- iter(f,l);
- caml_call2(f,v,d);
- var param$0=r;
- continue}
- return 0}}
- function map(f,param)
- {if(param)
- {var
- h=param[5],
- r=param[4],
- d=param[3],
- v=param[2],
- l=param[1],
- l$0=map(f,l),
- d$0=caml_call1(f,d),
- r$0=map(f,r);
- return [0,l$0,v,d$0,r$0,h]}
- return 0}
- function mapi(f,param)
- {if(param)
- {var
- h=param[5],
- r=param[4],
- d=param[3],
- v=param[2],
- l=param[1],
- l$0=mapi(f,l),
- d$0=caml_call2(f,v,d),
- r$0=mapi(f,r);
- return [0,l$0,v,d$0,r$0,h]}
- return 0}
- function fold(f,m,accu)
- {var m$0=m,accu$0=accu;
- for(;;)
- {if(m$0)
- {var
- r=m$0[4],
- d=m$0[3],
- v=m$0[2],
- l=m$0[1],
- accu$1=caml_call3(f,v,d,fold(f,l,accu$0)),
- m$0=r,
- accu$0=accu$1;
- continue}
- return accu$0}}
- function for_all(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- d=param$0[3],
- v=param$0[2],
- l=param$0[1],
- _vF_=caml_call2(p,v,d);
- if(_vF_)
- {var _vG_=for_all(p,l);
- if(_vG_){var param$0=r;continue}
- var _vH_=_vG_}
- else
- var _vH_=_vF_;
- return _vH_}
- return 1}}
- function exists(p,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- d=param$0[3],
- v=param$0[2],
- l=param$0[1],
- _vC_=caml_call2(p,v,d);
- if(_vC_)
- var _vD_=_vC_;
- else
- {var _vE_=exists(p,l);
- if(! _vE_){var param$0=r;continue}
- var _vD_=_vE_}
- return _vD_}
- return 0}}
- function add_min_binding(k,x,param)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- return bal(add_min_binding(k,x,l),v,d,r)}
- return singleton(k,x)}
- function add_max_binding(k,x,param)
- {if(param)
- {var r=param[4],d=param[3],v=param[2],l=param[1];
- return bal(l,v,d,add_max_binding(k,x,r))}
- return singleton(k,x)}
- function join(l,v,d,r)
- {if(l)
- {if(r)
- {var
- rh=r[5],
- rr=r[4],
- rd=r[3],
- rv=r[2],
- rl=r[1],
- lh=l[5],
- lr=l[4],
- ld=l[3],
- lv=l[2],
- ll=l[1];
- return (rh + 2 | 0) < lh
- ?bal(ll,lv,ld,join(lr,v,d,r))
- :(lh + 2 | 0) < rh
- ?bal(join(l,v,d,rl),rv,rd,rr)
- :create(l,v,d,r)}
- return add_max_binding(v,d,l)}
- return add_min_binding(v,d,r)}
- function concat(t1,t2)
- {if(t1)
- {if(t2)
- {var match=min_binding(t2),d=match[2],x=match[1];
- return join(t1,x,d,remove_min_binding(t2))}
- return t1}
- return t2}
- function concat_or_join(t1,v,d,t2)
- {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)}
- function split(x,param)
- {if(param)
- {var
- r=param[4],
- d=param[3],
- v=param[2],
- l=param[1],
- c=caml_call2(Ord[1],x,v);
- if(0 === c)return [0,l,[0,d],r];
- if(0 <= c)
- {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1];
- return [0,join(l,v,d,lr),pres,rr]}
- var
- match$0=split(x,l),
- rl=match$0[3],
- pres$0=match$0[2],
- ll=match$0[1];
- return [0,ll,pres$0,join(rl,v,d,r)]}
- return _L_}
- function merge(f,s1,s2)
- {if(s1)
- {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1];
- if(height(s2) <= h1)
- {var
- match=split(v1,s2),
- r2=match[3],
- d2=match[2],
- l2=match[1],
- _vy_=merge(f,r1,r2),
- _vz_=caml_call3(f,v1,[0,d1],d2);
- return concat_or_join(merge(f,l1,l2),v1,_vz_,_vy_)}}
- else
- if(! s2)return 0;
- if(s2)
- {var
- r2$0=s2[4],
- d2$0=s2[3],
- v2=s2[2],
- l2$0=s2[1],
- match$0=split(v2,s1),
- r1$0=match$0[3],
- d1$0=match$0[2],
- l1$0=match$0[1],
- _vA_=merge(f,r1$0,r2$0),
- _vB_=caml_call3(f,v2,d1$0,[0,d2$0]);
- return concat_or_join(merge(f,l1$0,l2$0),v2,_vB_,_vA_)}
- throw [0,Assert_failure,_M_]}
- function union(f,s1,s2)
- {if(s1)
- {if(s2)
- {var
- h2=s2[5],
- r2=s2[4],
- d2=s2[3],
- v2=s2[2],
- l2=s2[1],
- h1=s1[5],
- r1=s1[4],
- d1=s1[3],
- v1=s1[2],
- l1=s1[1];
- if(h2 <= h1)
- {var
- match=split(v1,s2),
- r2$0=match[3],
- d2$0=match[2],
- l2$0=match[1],
- l=union(f,l1,l2$0),
- r=union(f,r1,r2$0);
- if(d2$0)
- {var d2$1=d2$0[1];
- return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)}
- return join(l,v1,d1,r)}
- var
- match$0=split(v2,s1),
- r1$0=match$0[3],
- d1$0=match$0[2],
- l1$0=match$0[1],
- l$0=union(f,l1$0,l2),
- r$0=union(f,r1$0,r2);
- if(d1$0)
- {var d1$1=d1$0[1];
- return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)}
- return join(l$0,v2,d2,r$0)}
- var s=s1}
- else
- var s=s2;
- return s}
- function filter(p,m)
- {if(m)
- {var
- r=m[4],
- d=m[3],
- v=m[2],
- l=m[1],
- l$0=filter(p,l),
- pvd=caml_call2(p,v,d),
- r$0=filter(p,r);
- if(pvd)
- {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)}
- return concat(l$0,r$0)}
- return 0}
- function filter_map(f,param)
- {if(param)
- {var
- r=param[4],
- d=param[3],
- v=param[2],
- l=param[1],
- l$0=filter_map(f,l),
- fvd=caml_call2(f,v,d),
- r$0=filter_map(f,r);
- if(fvd){var d$0=fvd[1];return join(l$0,v,d$0,r$0)}
- return concat(l$0,r$0)}
- return 0}
- function partition(p,param)
- {if(param)
- {var
- r=param[4],
- d=param[3],
- v=param[2],
- l=param[1],
- match=partition(p,l),
- lf=match[2],
- lt=match[1],
- pvd=caml_call2(p,v,d),
- match$0=partition(p,r),
- rf=match$0[2],
- rt=match$0[1];
- if(pvd){var _vw_=concat(lf,rf);return [0,join(lt,v,d,rt),_vw_]}
- var _vx_=join(lf,v,d,rf);
- return [0,concat(lt,rt),_vx_]}
- return _N_}
- function cons_enum(m,e)
- {var m$0=m,e$0=e;
- for(;;)
- {if(m$0)
- {var
- r=m$0[4],
- d=m$0[3],
- v=m$0[2],
- m$1=m$0[1],
- e$1=[0,v,d,r,e$0],
- m$0=m$1,
- e$0=e$1;
- continue}
- return e$0}}
- function compare(cmp,m1,m2)
- {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2;
- for(;;)
- {if(e1)
- {if(e2)
- {var
- e2$0=e2[4],
- r2=e2[3],
- d2=e2[2],
- v2=e2[1],
- e1$0=e1[4],
- r1=e1[3],
- d1=e1[2],
- v1=e1[1],
- c=caml_call2(Ord[1],v1,v2);
- if(0 === c)
- {var c$0=caml_call2(cmp,d1,d2);
- if(0 === c$0)
- {var
- e2$1=cons_enum(r2,e2$0),
- e1$1=cons_enum(r1,e1$0),
- e1=e1$1,
- e2=e2$1;
- continue}
- return c$0}
- return c}
- return 1}
- return e2?-1:0}}
- function equal(cmp,m1,m2)
- {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2;
- for(;;)
- {if(e1)
- {if(e2)
- {var
- e2$0=e2[4],
- r2=e2[3],
- d2=e2[2],
- v2=e2[1],
- e1$0=e1[4],
- r1=e1[3],
- d1=e1[2],
- v1=e1[1],
- _vt_=0 === caml_call2(Ord[1],v1,v2)?1:0;
- if(_vt_)
- {var _vu_=caml_call2(cmp,d1,d2);
- if(_vu_)
- {var
- e2$1=cons_enum(r2,e2$0),
- e1$1=cons_enum(r1,e1$0),
- e1=e1$1,
- e2=e2$1;
- continue}
- var _vv_=_vu_}
- else
- var _vv_=_vt_;
- return _vv_}
- return 0}
- return e2?0:1}}
- function cardinal(param)
- {if(param)
- {var r=param[4],l=param[1],_vs_=cardinal(r);
- return (cardinal(l) + 1 | 0) + _vs_ | 0}
- return 0}
- function bindings_aux(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var
- r=param$0[4],
- d=param$0[3],
- v=param$0[2],
- l=param$0[1],
- accu$1=[0,[0,v,d],bindings_aux(accu$0,r)],
- accu$0=accu$1,
- param$0=l;
- continue}
- return accu$0}}
- function bindings(s){return bindings_aux(0,s)}
- function add_seq(i,m)
- {return fold_left
- (function(m,param)
- {var v=param[2],k=param[1];return add(k,v,m)},
- m,
- i)}
- function of_seq(i){return add_seq(i,empty)}
- function seq_of_enum(c,param)
- {if(c)
- {var rest=c[4],t=c[3],v=c[2],k=c[1],_vq_=cons_enum(t,rest);
- return [0,[0,k,v],function(_vr_){return seq_of_enum(_vq_,_vr_)}]}
- return 0}
- function to_seq(m)
- {var _vo_=cons_enum(m,0);
- return function(_vp_){return seq_of_enum(_vo_,_vp_)}}
- function snoc_enum(s,e)
- {var s$0=s,e$0=e;
- for(;;)
- {if(s$0)
- {var
- s$1=s$0[4],
- d=s$0[3],
- v=s$0[2],
- l=s$0[1],
- e$1=[0,v,d,l,e$0],
- s$0=s$1,
- e$0=e$1;
- continue}
- return e$0}}
- function rev_seq_of_enum(c,param)
- {if(c)
- {var rest=c[4],t=c[3],v=c[2],k=c[1],_vm_=snoc_enum(t,rest);
- return [0,
- [0,k,v],
- function(_vn_){return rev_seq_of_enum(_vm_,_vn_)}]}
- return 0}
- function to_rev_seq(c)
- {var _vk_=snoc_enum(c,0);
- return function(_vl_){return rev_seq_of_enum(_vk_,_vl_)}}
- function to_seq_from(low,m)
- {var m$0=m,c=0;
- for(;;)
- {if(m$0)
- {var
- r=m$0[4],
- d=m$0[3],
- v=m$0[2],
- l=m$0[1],
- n=caml_call2(Ord[1],v,low);
- if(0 !== n)
- {if(0 <= n){var c$0=[0,v,d,r,c],m$0=l,c=c$0;continue}
- var m$0=r;
- continue}
- var _vi_=[0,v,d,r,c]}
- else
- var _vi_=c;
- return function(_vj_){return seq_of_enum(_vi_,_vj_)}}}
- return [0,
- empty,
- is_empty,
- mem,
- add,
- update,
- singleton,
- remove,
- merge,
- union,
- compare,
- equal,
- iter,
- fold,
- for_all,
- exists,
- filter,
- filter_map,
- partition,
- cardinal,
- bindings,
- min_binding,
- min_binding_opt,
- max_binding,
- max_binding_opt,
- min_binding,
- min_binding_opt,
- split,
- find,
- find_opt,
- find_first,
- find_first_opt,
- find_last,
- find_last_opt,
- map,
- mapi,
- to_seq,
- to_rev_seq,
- to_seq_from,
- add_seq,
- of_seq]}];
- caml_register_global(784,Stdlib_Map,"Stdlib__Map");
- var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)];
- function create$0(param){return [0,0,0]}
- function clear(s){s[1] = 0;s[2] = 0;return 0}
- function copy$3(s){return [0,s[1],s[2]]}
- function push(x,s){s[1] = [0,x,s[1]];s[2] = s[2] + 1 | 0;return 0}
- function pop(s)
- {var _vg_=s[1];
- if(_vg_)
- {var tl=_vg_[2],hd=_vg_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd}
- throw Empty}
- function pop_opt(s)
- {var _vf_=s[1];
- if(_vf_)
- {var tl=_vf_[2],hd=_vf_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]}
- return 0}
- function top(s)
- {var _ve_=s[1];if(_ve_){var hd=_ve_[1];return hd}throw Empty}
- function top_opt(s)
- {var _vd_=s[1];if(_vd_){var hd=_vd_[1];return [0,hd]}return 0}
- function is_empty(s){return 0 === s[1]?1:0}
- function length$1(s){return s[2]}
- function iter$7(f,s){return iter$2(f,s[1])}
- function fold$2(f,acc,s){return fold_left$0(f,acc,s[1])}
- function to_seq$6(s){return to_seq$1(s[1])}
- function add_seq(q,i){return iter(function(x){return push(x,q)},i)}
- function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s}
- var
- Stdlib_Stack=
- [0,
- Empty,
- create$0,
- push,
- pop,
- pop_opt,
- top,
- top_opt,
- clear,
- copy$3,
- is_empty,
- length$1,
- iter$7,
- fold$2,
- to_seq$6,
- add_seq,
- of_seq$4];
- caml_register_global(785,Stdlib_Stack,"Stdlib__Stack");
- var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)];
- function create$1(param){return [0,0,0,0]}
- function clear$0(q){q[1] = 0;q[2] = 0;q[3] = 0;return 0}
- function add(x,q)
- {var cell=[0,x,0],_vc_=q[3];
- return _vc_
- ?(q[1] = q[1] + 1 | 0,_vc_[2] = cell,q[3] = cell,0)
- :(q[1] = 1,q[2] = cell,q[3] = cell,0)}
- function peek(q)
- {var _vb_=q[2];if(_vb_){var content=_vb_[1];return content}throw Empty$0}
- function peek_opt(q)
- {var _va_=q[2];if(_va_){var content=_va_[1];return [0,content]}return 0}
- function take(q)
- {var _u__=q[2];
- if(_u__)
- {var _u$_=_u__[1];
- if(_u__[2])
- {var next=_u__[2];q[1] = q[1] - 1 | 0;q[2] = next;return _u$_}
- clear$0(q);
- return _u$_}
- throw Empty$0}
- function take_opt(q)
- {var _u8_=q[2];
- if(_u8_)
- {var _u9_=_u8_[1];
- if(_u8_[2])
- {var next=_u8_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_u9_]}
- clear$0(q);
- return [0,_u9_]}
- return 0}
- function copy$4(q)
- {var q_res=[0,q[1],0,0],prev=0,cell=q[2];
- for(;;)
- {if(cell)
- {var content=cell[1],next=cell[2],res=[0,content,0];
- if(prev)prev[2] = res;else q_res[2] = res;
- var prev=res,cell=next;
- continue}
- q_res[3] = prev;
- return q_res}}
- function is_empty$0(q){return 0 === q[1]?1:0}
- function length$2(q){return q[1]}
- function iter$8(f,q)
- {var cell=q[2];
- for(;;)
- {if(cell)
- {var content=cell[1],next=cell[2];
- caml_call1(f,content);
- var cell=next;
- continue}
- return 0}}
- function fold$3(f,accu$1,q)
- {var accu=accu$1,cell=q[2];
- for(;;)
- {if(cell)
- {var
- content=cell[1],
- next=cell[2],
- accu$0=caml_call2(f,accu,content),
- accu=accu$0,
- cell=next;
- continue}
- return accu}}
- function transfer(q1,q2)
- {var _u6_=0 < q1[1]?1:0;
- if(_u6_)
- {var _u7_=q2[3];
- return _u7_
- ?(q2[1]
- =
- q2[1]
- +
- q1[1]
- |
- 0,
- _u7_[2]
- =
- q1[2],
- q2[3]
- =
- q1[3],
- clear$0(q1))
- :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))}
- return _u6_}
- function to_seq$7(q)
- {function aux(c,param)
- {if(c)
- {var x=c[1],next=c[2];
- return [0,x,function(_u5_){return aux(next,_u5_)}]}
- return 0}
- var _u3_=q[2];
- return function(_u4_){return aux(_u3_,_u4_)}}
- function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)}
- function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q}
- var
- Stdlib_Queue=
- [0,
- Empty$0,
- create$1,
- add,
- add,
- take,
- take_opt,
- take,
- peek,
- peek_opt,
- peek,
- clear$0,
- copy$4,
- is_empty$0,
- length$2,
- iter$8,
- fold$3,
- transfer,
- to_seq$7,
- add_seq$0,
- of_seq$5];
- caml_register_global(786,Stdlib_Queue,"Stdlib__Queue");
- var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)];
- function raise_undefined(param){throw Undefined}
- function force_lazy_block(blk)
- {var closure=blk[1];
- blk[1] = raise_undefined;
- try
- {var result=caml_call1(closure,0);
- caml_obj_make_forward(blk,result);
- return result}
- catch(e)
- {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}}
- function force_val_lazy_block(blk)
- {var closure=blk[1];
- blk[1] = raise_undefined;
- var result=caml_call1(closure,0);
- caml_obj_make_forward(blk,result);
- return result}
- function force(lzv)
- {var t=caml_obj_tag(lzv);
- return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)}
- function force_val(lzv)
- {var t=caml_obj_tag(lzv);
- return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)}
- var
- CamlinternalLazy=
- [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val];
- caml_register_global(787,CamlinternalLazy,"CamlinternalLazy");
- function from_fun(f){var x=caml_obj_block(246,1);x[1] = f;return x}
- function from_val(v)
- {var t=caml_obj_tag(v);
- if(t !== 250 && t !== 246 && t !== 253)return v;
- return runtime.caml_lazy_make_forward(v)}
- function is_val(l){return caml_obj_tag(l) !== 246?1:0}
- function map$8(f,x)
- {return [246,
- function(_u0_)
- {var
- _u1_=caml_obj_tag(x),
- _u2_=250 === _u1_?x[1]:246 === _u1_?force_lazy_block(x):x;
- return caml_call1(f,_u2_)}]}
- function map_val(f,x)
- {if(is_val(x))
- {var
- _uV_=caml_obj_tag(x),
- _uW_=250 === _uV_?x[1]:246 === _uV_?force_lazy_block(x):x;
- return from_val(caml_call1(f,_uW_))}
- return [246,
- function(_uX_)
- {var
- _uY_=caml_obj_tag(x),
- _uZ_=250 === _uY_?x[1]:246 === _uY_?force_lazy_block(x):x;
- return caml_call1(f,_uZ_)}]}
- var
- Stdlib_Lazy=
- [0,
- Undefined,
- map$8,
- is_val,
- from_val,
- map_val,
- from_fun,
- force_val,
- from_fun,
- from_val,
- is_val];
- caml_register_global(788,Stdlib_Lazy,"Stdlib__Lazy");
- var
- Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)],
- Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)];
- function count(param)
- {if(param){var match=param[1],count=match[1];return count}return 0}
- function data(param)
- {if(param){var match=param[1],data=match[2];return data}return 0}
- function fill_buff(b)
- {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0}
- function get_data(count,d)
- {var d$0=d;
- for(;;)
- {if(typeof d$0 !== "number")
- switch(d$0[0])
- {case 1:
- var d2=d$0[2],d1=d$0[1],match=get_data(count,d1);
- if(typeof match === "number")
- {var d$0=d2;continue}
- else
- {if(0 === match[0])
- {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]}
- throw [0,Assert_failure,_O_]}
- case 2:
- var
- f=d$0[1],
- _uR_=caml_obj_tag(f),
- d$1=250 === _uR_?f[1]:246 === _uR_?force_lazy_block(f):f,
- d$0=d$1;
- continue;
- case 3:
- var _uS_=d$0[1],_uT_=_uS_[1];
- if(_uT_)
- {var _uU_=_uT_[1];
- if(_uU_){var a$0=_uU_[1];_uS_[1] = 0;return [0,a$0,d$0]}
- return 0}
- var match$0=caml_call1(_uS_[2],count);
- if(match$0){var a$1=match$0[1];return [0,a$1,d$0]}
- _uS_[1] = _P_;
- return 0;
- case 4:
- var b=d$0[1];
- if(b[3] <= b[4])fill_buff(b);
- if(0 === b[3])return 0;
- var r=caml_bytes_unsafe_get(b[2],b[4]);
- b[4] = b[4] + 1 | 0;
- return [0,r,d$0]
- }
- return d$0}}
- function peek_data(s)
- {for(;;)
- {var _uM_=s[2];
- if(typeof _uM_ === "number")
- return 0;
- else
- switch(_uM_[0])
- {case 0:var a=_uM_[1];return [0,a];
- case 1:
- var d=get_data(s[1],s[2]);
- if(typeof d === "number")
- return 0;
- else
- {if(0 === d[0]){var a$0=d[1];s[2] = d;return [0,a$0]}
- throw [0,Assert_failure,_Q_]}
- case 2:
- var
- f=_uM_[1],
- _uN_=caml_obj_tag(f),
- _uO_=250 === _uN_?f[1]:246 === _uN_?force_lazy_block(f):f;
- s[2] = _uO_;
- continue;
- case 3:
- var _uP_=_uM_[1],_uQ_=_uP_[1];
- if(_uQ_){var a$1=_uQ_[1];return a$1}
- var x=caml_call1(_uP_[2],s[1]);
- _uP_[1] = [0,x];
- return x;
- default:
- var b=_uM_[1];
- if(b[3] <= b[4])fill_buff(b);
- return 0 === b[3]
- ?(s[2] = 0,0)
- :[0,caml_bytes_unsafe_get(b[2],b[4])]}}}
- function peek$0(param)
- {if(param){var s=param[1];return peek_data(s)}return 0}
- function junk_data(s)
- {for(;;)
- {var _uK_=s[2];
- if(typeof _uK_ !== "number")
- switch(_uK_[0])
- {case 0:var d=_uK_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0;
- case 3:
- var _uL_=_uK_[1];
- if(_uL_[1]){s[1] = s[1] + 1 | 0;_uL_[1] = 0;return 0}
- break;
- case 4:
- var b=_uK_[1];
- if(b[3] <= b[4])fill_buff(b);
- return 0 === b[3]
- ?(s[2] = 0,0)
- :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0)
- }
- var match=peek_data(s);
- if(match)continue;
- return 0}}
- function junk(param)
- {if(param){var data=param[1];return junk_data(data)}return 0}
- function nget_data(n,s)
- {if(0 < n)
- {var match=peek_data(s);
- if(match)
- {var a=match[1];
- junk_data(s);
- var
- match$0=nget_data(n - 1 | 0,s),
- k=match$0[3],
- d=match$0[2],
- al=match$0[1];
- return [0,[0,a,al],[0,a,d],k + 1 | 0]}
- return [0,0,s[2],0]}
- return [0,0,s[2],0]}
- function npeek(n,param)
- {if(param)
- {var
- d$0=param[1],
- match=nget_data(n,d$0),
- len=match[3],
- d=match[2],
- al=match[1];
- d$0[1] = d$0[1] - len | 0;
- d$0[2] = d;
- return al}
- return 0}
- function next(s)
- {var match=peek$0(s);
- if(match){var a=match[1];junk(s);return a}
- throw Failure$0}
- function empty$2(s){var match=peek$0(s);if(match)throw Failure$0;return 0}
- function iter$9(f,strm)
- {for(;;)
- {var match=peek$0(strm);
- if(match){var a=match[1];junk(strm);caml_call1(f,a);continue}
- return 0}}
- function from(f){return [0,[0,0,[3,[0,0,f]]]]}
- function of_list$1(l)
- {var _uJ_=0;
- return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_uJ_)]]}
- function of_string(s)
- {var count=[0,0];
- return from
- (function(param)
- {var c=count[1];
- return c < caml_ml_string_length(s)
- ?(count[1]++,[0,caml_string_get(s,c)])
- :0})}
- function of_bytes$0(s)
- {var count=[0,0];
- return from
- (function(param)
- {var c=count[1];
- return c < caml_ml_bytes_length(s)
- ?(count[1]++,[0,caml_bytes_get(s,c)])
- :0})}
- function of_channel(ic)
- {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]}
- function iapp(i,s){var _uI_=data(s);return [0,[0,0,[1,data(i),_uI_]]]}
- function icons(i,s){return [0,[0,0,[0,i,data(s)]]]}
- function ising(i){return [0,[0,0,[0,i,0]]]}
- function lapp(f,s)
- {return [0,
- [0,
- 0,
- [2,
- [246,
- function(_uG_)
- {var _uH_=data(s);return [1,data(caml_call1(f,0)),_uH_]}]]]]}
- function lcons(f,s)
- {return [0,
- [0,
- 0,
- [2,
- [246,
- function(_uE_)
- {var _uF_=data(s);return [0,caml_call1(f,0),_uF_]}]]]]}
- function lsing(f)
- {return [0,[0,0,[2,[246,function(_uD_){return [0,caml_call1(f,0),0]}]]]]}
- var sempty=0;
- function slazy(f)
- {return [0,[0,0,[2,[246,function(_uC_){return data(caml_call1(f,0))}]]]]}
- function dump_data(f,param)
- {if(typeof param === "number")
- return print_string(cst_Sempty);
- else
- switch(param[0])
- {case 0:
- var d=param[2],a=param[1];
- print_string(cst_Scons);
- caml_call1(f,a);
- print_string(cst$7);
- dump_data(f,d);
- return print_string(cst$8);
- case 1:
- var d2=param[2],d1=param[1];
- print_string(cst_Sapp);
- dump_data(f,d1);
- print_string(cst$9);
- dump_data(f,d2);
- return print_string(cst$10);
- case 2:return print_string(cst_Slazy);
- case 3:return print_string(cst_Sgen);
- default:return print_string(cst_Sbuffio)}}
- function dump(f,s)
- {print_string(cst_count);
- print_int(count(s));
- print_string(cst_data);
- dump_data(f,data(s));
- print_string(cst$6);
- return print_newline(0)}
- var
- Stdlib_Stream=
- [0,
- Failure$0,
- Error,
- from,
- of_list$1,
- of_string,
- of_bytes$0,
- of_channel,
- iter$9,
- next,
- empty$2,
- peek$0,
- junk,
- count,
- npeek,
- iapp,
- icons,
- ising,
- lapp,
- lcons,
- lsing,
- sempty,
- slazy,
- dump];
- caml_register_global(789,Stdlib_Stream,"Stdlib__Stream");
- function create$2(n)
- {var
- n$0=1 <= n?n:1,
- n$1=max_string_length < n$0?max_string_length:n$0,
- s=caml_create_bytes(n$1);
- return [0,s,0,n$1,s]}
- function contents(b){return sub_string(b[1],0,b[2])}
- function to_bytes$0(b){return sub(b[1],0,b[2])}
- function sub$3(b,ofs,len)
- {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs))
- return sub_string(b[1],ofs,len);
- return invalid_arg(cst_Buffer_sub)}
- function blit$3(src,srcoff,dst,dstoff,len)
- {if
- (0
- <=
- len
- &&
- 0
- <=
- srcoff
- &&
- !
- ((src[2] - len | 0) < srcoff)
- &&
- 0
- <=
- dstoff
- &&
- !
- ((caml_ml_bytes_length(dst) - len | 0) < dstoff))
- return caml_blit_bytes(src[1],srcoff,dst,dstoff,len);
- return invalid_arg(cst_Buffer_blit)}
- function nth$0(b,ofs)
- {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs);
- return invalid_arg(cst_Buffer_nth)}
- function length$3(b){return b[2]}
- function clear$1(b){b[2] = 0;return 0}
- function reset(b)
- {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0}
- function resize(b,more)
- {var old_pos=b[2],old_len=b[3],new_len=[0,old_len];
- for(;;)
- {if(new_len[1] < (old_pos + more | 0))
- {new_len[1] = 2 * new_len[1] | 0;continue}
- if(max_string_length < new_len[1])
- if((old_pos + more | 0) <= max_string_length)
- new_len[1] = max_string_length;
- else
- failwith(cst_Buffer_add_cannot_grow_buf);
- var new_buffer=caml_create_bytes(new_len[1]);
- blit(b[1],0,new_buffer,0,b[2]);
- b[1] = new_buffer;
- b[3] = new_len[1];
- if((b[2] + more | 0) <= b[3])
- {if((old_pos + more | 0) <= b[3])return 0;
- throw [0,Assert_failure,_R_]}
- throw [0,Assert_failure,_S_]}}
- function add_char(b,c)
- {var pos=b[2];
- if(b[3] <= pos)resize(b,1);
- caml_bytes_unsafe_set(b[1],pos,c);
- b[2] = pos + 1 | 0;
- return 0}
- function add_utf_8_uchar(b,u)
- {if(0 <= u)
- {if(127 < u)
- {if(2047 < u)
- {if(65535 < u)
- {if(1114111 < u)throw [0,Assert_failure,_T_];
- var pos=b[2];
- if(b[3] < (pos + 4 | 0))resize(b,4);
- caml_bytes_unsafe_set(b[1],pos,240 | u >>> 18 | 0);
- caml_bytes_unsafe_set
- (b[1],pos + 1 | 0,128 | (u >>> 12 | 0) & 63);
- caml_bytes_unsafe_set(b[1],pos + 2 | 0,128 | (u >>> 6 | 0) & 63);
- caml_bytes_unsafe_set(b[1],pos + 3 | 0,128 | u & 63);
- b[2] = pos + 4 | 0;
- return 0}
- var pos$0=b[2];
- if(b[3] < (pos$0 + 3 | 0))resize(b,3);
- caml_bytes_unsafe_set(b[1],pos$0,224 | u >>> 12 | 0);
- caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,128 | (u >>> 6 | 0) & 63);
- caml_bytes_unsafe_set(b[1],pos$0 + 2 | 0,128 | u & 63);
- b[2] = pos$0 + 3 | 0;
- return 0}
- var pos$1=b[2];
- if(b[3] < (pos$1 + 2 | 0))resize(b,2);
- caml_bytes_unsafe_set(b[1],pos$1,192 | u >>> 6 | 0);
- caml_bytes_unsafe_set(b[1],pos$1 + 1 | 0,128 | u & 63);
- b[2] = pos$1 + 2 | 0;
- return 0}
- return add_char(b,u)}
- throw [0,Assert_failure,_U_]}
- function add_utf_16be_uchar(b,u)
- {if(0 <= u)
- {if(65535 < u)
- {if(1114111 < u)throw [0,Assert_failure,_V_];
- var
- u$0=u - 65536 | 0,
- hi=55296 | u$0 >>> 10 | 0,
- lo=56320 | u$0 & 1023,
- pos=b[2];
- if(b[3] < (pos + 4 | 0))resize(b,4);
- caml_bytes_unsafe_set(b[1],pos,hi >>> 8 | 0);
- caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi & 255);
- caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo >>> 8 | 0);
- caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo & 255);
- b[2] = pos + 4 | 0;
- return 0}
- var pos$0=b[2];
- if(b[3] < (pos$0 + 2 | 0))resize(b,2);
- caml_bytes_unsafe_set(b[1],pos$0,u >>> 8 | 0);
- caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u & 255);
- b[2] = pos$0 + 2 | 0;
- return 0}
- throw [0,Assert_failure,_W_]}
- function add_utf_16le_uchar(b,u)
- {if(0 <= u)
- {if(65535 < u)
- {if(1114111 < u)throw [0,Assert_failure,_X_];
- var
- u$0=u - 65536 | 0,
- hi=55296 | u$0 >>> 10 | 0,
- lo=56320 | u$0 & 1023,
- pos=b[2];
- if(b[3] < (pos + 4 | 0))resize(b,4);
- caml_bytes_unsafe_set(b[1],pos,hi & 255);
- caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi >>> 8 | 0);
- caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo & 255);
- caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo >>> 8 | 0);
- b[2] = pos + 4 | 0;
- return 0}
- var pos$0=b[2];
- if(b[3] < (pos$0 + 2 | 0))resize(b,2);
- caml_bytes_unsafe_set(b[1],pos$0,u & 255);
- caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u >>> 8 | 0);
- b[2] = pos$0 + 2 | 0;
- return 0}
- throw [0,Assert_failure,_Y_]}
- function add_substring(b,s,offset,len)
- {var _uz_=offset < 0?1:0;
- if(_uz_)
- var _uA_=_uz_;
- else
- var
- _uB_=len < 0?1:0,
- _uA_=_uB_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0);
- if(_uA_)invalid_arg(cst_Buffer_add_substring_add_s);
- var new_position=b[2] + len | 0;
- if(b[3] < new_position)resize(b,len);
- caml_blit_string(s,offset,b[1],b[2],len);
- b[2] = new_position;
- return 0}
- function add_subbytes(b,s,offset,len)
- {return add_substring(b,caml_string_of_bytes(s),offset,len)}
- function add_string(b,s)
- {var len=caml_ml_string_length(s),new_position=b[2] + len | 0;
- if(b[3] < new_position)resize(b,len);
- caml_blit_string(s,0,b[1],b[2],len);
- b[2] = new_position;
- return 0}
- function add_bytes(b,s){return add_string(b,caml_string_of_bytes(s))}
- function add_buffer(b,bs){return add_subbytes(b,bs[1],0,bs[2])}
- function add_channel(b,ic,len)
- {var _ux_=len < 0?1:0,_uy_=_ux_ || (max_string_length < len?1:0);
- if(_uy_)invalid_arg(cst_Buffer_add_channel);
- if(b[3] < (b[2] + len | 0))resize(b,len);
- var already_read=0,ofs=b[2],to_read=len,_uw_=b[1];
- for(;;)
- {if(0 !== to_read)
- {var r=input(ic,_uw_,ofs,to_read);
- if(0 !== r)
- {var
- already_read$0=already_read + r | 0,
- ofs$0=ofs + r | 0,
- to_read$0=to_read - r | 0,
- already_read=already_read$0,
- ofs=ofs$0,
- to_read=to_read$0;
- continue}}
- if((b[2] + already_read | 0) <= b[3])
- {b[2] = b[2] + already_read | 0;
- if(already_read < len)throw End_of_file;
- return 0}
- throw [0,Assert_failure,_Z_]}}
- function output_buffer(oc,b){return output(oc,b[1],0,b[2])}
- function add_substitute(b,f,s)
- {var lim$1=caml_ml_string_length(s),previous=32,i$7=0;
- for(;;)
- {if(i$7 < lim$1)
- {var current=caml_string_get(s,i$7);
- if(36 === current)
- {if(92 === previous)
- {add_char(b,current);
- var i$8=i$7 + 1 | 0,previous=32,i$7=i$8;
- continue}
- var start=i$7 + 1 | 0;
- if(lim$1 <= start)throw Not_found;
- var opening=caml_string_get(s,start),switch$0=0;
- if(40 !== opening && 123 !== opening)
- {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6;
- for(;;)
- {if(lim$0 <= i$3)
- var stop=lim$0;
- else
- {var match=caml_string_get(s,i$3),switch$1=0;
- if(91 <= match)
- {if(97 <= match)
- {if(! (123 <= match))switch$1 = 1}
- else
- if(95 === match)switch$1 = 1}
- else
- if(58 <= match)
- {if(65 <= match)switch$1 = 1}
- else
- if(48 <= match)switch$1 = 1;
- if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue}
- var stop=i$3}
- var match$0=[0,sub$0(s,start,stop - start | 0),stop];
- switch$0 = 1;
- break}}
- if(! switch$0)
- {var i$5=start + 1 | 0,k$2=0;
- if(40 === opening)
- var _uu_=41;
- else
- {if(123 !== opening)throw [0,Assert_failure,___];var _uu_=125}
- var lim=caml_ml_string_length(s),k=k$2,i=i$5;
- for(;;)
- {if(lim <= i)throw Not_found;
- if(caml_string_get(s,i) === opening)
- {var i$0=i + 1 | 0,k$0=k + 1 | 0,k=k$0,i=i$0;continue}
- if(caml_string_get(s,i) !== _uu_)
- {var i$2=i + 1 | 0,i=i$2;continue}
- if(0 !== k)
- {var i$1=i + 1 | 0,k$1=k - 1 | 0,k=k$1,i=i$1;continue}
- var
- match$0=
- [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0];
- break}}
- var next_i=match$0[2],ident=match$0[1];
- add_string(b,caml_call1(f,ident));
- var previous=32,i$7=next_i;
- continue}
- if(92 === previous)
- {add_char(b,92);
- add_char(b,current);
- var i$9=i$7 + 1 | 0,previous=32,i$7=i$9;
- continue}
- if(92 === current)
- {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue}
- add_char(b,current);
- var i$11=i$7 + 1 | 0,previous=current,i$7=i$11;
- continue}
- var _uv_=92 === previous?1:0;
- return _uv_?add_char(b,previous):_uv_}}
- function truncate(b,len)
- {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0}
- return invalid_arg(cst_Buffer_truncate)}
- function to_seq$8(b)
- {function aux(i,param)
- {if(b[2] <= i)return 0;
- var x=caml_bytes_unsafe_get(b[1],i),_us_=i + 1 | 0;
- return [0,x,function(_ut_){return aux(_us_,_ut_)}]}
- var _uq_=0;
- return function(_ur_){return aux(_uq_,_ur_)}}
- function to_seqi$3(b)
- {function aux(i,param)
- {if(b[2] <= i)return 0;
- var x=caml_bytes_unsafe_get(b[1],i),_uo_=i + 1 | 0;
- return [0,[0,i,x],function(_up_){return aux(_uo_,_up_)}]}
- var _um_=0;
- return function(_un_){return aux(_um_,_un_)}}
- function add_seq$1(b,seq)
- {return iter(function(_ul_){return add_char(b,_ul_)},seq)}
- function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b}
- function add_int8(b,x)
- {var new_position=b[2] + 1 | 0;
- if(b[3] < new_position)resize(b,1);
- caml_bytes_unsafe_set(b[1],b[2],x);
- b[2] = new_position;
- return 0}
- function add_int16_ne(b,x)
- {var new_position=b[2] + 2 | 0;
- if(b[3] < new_position)resize(b,2);
- caml_bytes_set16(b[1],b[2],x);
- b[2] = new_position;
- return 0}
- function add_int32_ne(b,x)
- {var new_position=b[2] + 4 | 0;
- if(b[3] < new_position)resize(b,4);
- caml_bytes_set32(b[1],b[2],x);
- b[2] = new_position;
- return 0}
- function add_int64_ne(b,x)
- {var new_position=b[2] + 8 | 0;
- if(b[3] < new_position)resize(b,8);
- caml_bytes_set64(b[1],b[2],x);
- b[2] = new_position;
- return 0}
- function add_int16_le(b,x){return add_int16_ne(b,x)}
- function add_int16_be(b,x)
- {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)}
- function add_int32_le(b,x){return add_int32_ne(b,x)}
- function add_int32_be(b,x)
- {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)}
- function add_int64_le(b,x){return add_int64_ne(b,x)}
- function add_int64_be(b,x)
- {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)}
- var
- Stdlib_Buffer=
- [0,
- create$2,
- contents,
- to_bytes$0,
- sub$3,
- blit$3,
- nth$0,
- length$3,
- clear$1,
- reset,
- output_buffer,
- truncate,
- add_char,
- add_utf_8_uchar,
- add_utf_16le_uchar,
- add_utf_16be_uchar,
- add_string,
- add_bytes,
- add_substring,
- add_subbytes,
- add_substitute,
- add_buffer,
- add_channel,
- to_seq$8,
- to_seqi$3,
- add_seq$1,
- of_seq$6,
- add_int8,
- add_int8,
- add_int16_ne,
- add_int16_be,
- add_int16_le,
- add_int16_ne,
- add_int16_be,
- add_int16_le,
- add_int32_ne,
- add_int32_be,
- add_int32_le,
- add_int64_ne,
- add_int64_be,
- add_int64_le];
- caml_register_global(790,Stdlib_Buffer,"Stdlib__Buffer");
- function create_char_set(param){return make$0(32,0)}
- function add_in_char_set(char_set,c)
- {var str_ind=c >>> 3 | 0,mask=1 << (c & 7);
- return caml_bytes_set
- (char_set,
- str_ind,
- char_of_int(caml_bytes_get(char_set,str_ind) | mask))}
- function freeze_char_set(char_set){return of_bytes(char_set)}
- function rev_char_set(char_set)
- {var char_set$0=create_char_set(0),i=0;
- for(;;)
- {caml_bytes_set
- (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255));
- var _uk_=i + 1 | 0;
- if(31 !== i){var i=_uk_;continue}
- return caml_string_of_bytes(char_set$0)}}
- function is_in_char_set(char_set,c)
- {var str_ind=c >>> 3 | 0,mask=1 << (c & 7);
- return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0}
- function pad_of_pad_opt(pad_opt)
- {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0}
- function param_format_of_ignored_format(ign,fmt)
- {if(typeof ign === "number")
- switch(ign)
- {case 0:return [0,[0,fmt]];
- case 1:return [0,[1,fmt]];
- case 2:return [0,[19,fmt]];
- default:return [0,[22,fmt]]}
- else
- switch(ign[0])
- {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]];
- case 1:
- var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]];
- case 2:
- var pad_opt$1=ign[2],iconv=ign[1];
- return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]];
- case 3:
- var pad_opt$2=ign[2],iconv$0=ign[1];
- return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]];
- case 4:
- var pad_opt$3=ign[2],iconv$1=ign[1];
- return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]];
- case 5:
- var pad_opt$4=ign[2],iconv$2=ign[1];
- return [0,[7,iconv$2,pad_of_pad_opt(pad_opt$4),0,fmt]];
- case 6:
- var prec_opt=ign[2],pad_opt$5=ign[1];
- if(prec_opt)var ndec=prec_opt[1],_uj_=[0,ndec];else var _uj_=0;
- return [0,[8,_$_,pad_of_pad_opt(pad_opt$5),_uj_,fmt]];
- case 7:
- var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]];
- case 8:
- var fmtty=ign[2],pad_opt$7=ign[1];
- return [0,[13,pad_opt$7,fmtty,fmt]];
- case 9:
- var fmtty$0=ign[2],pad_opt$8=ign[1];
- return [0,[14,pad_opt$8,fmtty$0,fmt]];
- case 10:
- var char_set=ign[2],width_opt=ign[1];
- return [0,[20,width_opt,char_set,fmt]];
- default:var counter=ign[1];return [0,[21,counter,fmt]]}}
- function default_float_precision(fconv){return 5 === fconv[2]?12:-6}
- function buffer_create(init_size)
- {return [0,0,caml_create_bytes(init_size)]}
- function buffer_check_size(buf,overhead)
- {var
- len=caml_ml_bytes_length(buf[2]),
- min_len=buf[1] + overhead | 0,
- _uh_=len < min_len?1:0;
- if(_uh_)
- {var
- new_len=max$1(len * 2 | 0,min_len),
- new_str=caml_create_bytes(new_len);
- blit(buf[2],0,new_str,0,len);
- buf[2] = new_str;
- var _ui_=0}
- else
- var _ui_=_uh_;
- return _ui_}
- function buffer_add_char(buf,c)
- {buffer_check_size(buf,1);
- caml_bytes_set(buf[2],buf[1],c);
- buf[1] = buf[1] + 1 | 0;
- return 0}
- function buffer_add_string(buf,s)
- {var str_len=caml_ml_string_length(s);
- buffer_check_size(buf,str_len);
- blit$0(s,0,buf[2],buf[1],str_len);
- buf[1] = buf[1] + str_len | 0;
- return 0}
- function buffer_contents(buf){return sub_string(buf[2],0,buf[1])}
- function char_of_iconv(iconv)
- {switch(iconv)
- {case 6:
- case 7:return 120;
- case 8:
- case 9:return 88;
- case 10:
- case 11:return 111;
- case 12:
- case 15:return 117;
- case 0:
- case 1:
- case 2:
- case 13:return 100;
- default:return 105}}
- function char_of_fconv(opt,fconv)
- {if(opt)var sth=opt[1],cF=sth;else var cF=70;
- switch(fconv[2])
- {case 0:return 102;
- case 1:return 101;
- case 2:return 69;
- case 3:return 103;
- case 4:return 71;
- case 5:return cF;
- case 6:return 104;
- case 7:return 72;
- default:return 70}}
- function bprint_padty(buf,padty)
- {switch(padty)
- {case 0:return buffer_add_char(buf,45);
- case 1:return 0;
- default:return buffer_add_char(buf,48)}}
- function bprint_ignored_flag(buf,ign_flag)
- {return ign_flag?buffer_add_char(buf,95):ign_flag}
- function bprint_pad_opt(buf,pad_opt)
- {if(pad_opt)
- {var width=pad_opt[1];
- return buffer_add_string(buf,caml_string_of_jsbytes("" + width))}
- return 0}
- function bprint_padding(buf,pad)
- {if(typeof pad === "number")
- return 0;
- else
- {if(0 === pad[0])
- {var n=pad[2],padty=pad[1];
- bprint_padty(buf,padty);
- return buffer_add_string(buf,caml_string_of_jsbytes("" + n))}
- var padty$0=pad[1];
- bprint_padty(buf,padty$0);
- return buffer_add_char(buf,42)}}
- function bprint_precision(buf,prec)
- {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0;
- var n=prec[1];
- buffer_add_char(buf,46);
- return buffer_add_string(buf,caml_string_of_jsbytes("" + n))}
- function bprint_iconv_flag(buf,iconv)
- {switch(iconv)
- {case 1:
- case 4:return buffer_add_char(buf,43);
- case 2:
- case 5:return buffer_add_char(buf,32);
- case 7:
- case 9:
- case 11:
- case 13:
- case 14:
- case 15:return buffer_add_char(buf,35);
- default:return 0}}
- function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c)
- {buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag);
- bprint_iconv_flag(buf,iconv);
- bprint_padding(buf,pad);
- bprint_precision(buf,prec);
- buffer_add_char(buf,c);
- return buffer_add_char(buf,char_of_iconv(iconv))}
- function bprint_fconv_flag(buf,fconv)
- {switch(fconv[1])
- {case 0:break;
- case 1:buffer_add_char(buf,43);break;
- default:buffer_add_char(buf,32)}
- return 8 <= fconv[2]?buffer_add_char(buf,35):0}
- function string_of_formatting_lit(formatting_lit)
- {if(typeof formatting_lit === "number")
- switch(formatting_lit)
- {case 0:return cst$12;
- case 1:return cst$13;
- case 2:return cst$14;
- case 3:return cst$15;
- case 4:return cst$16;
- case 5:return cst$17;
- default:return cst$18}
- else
- switch(formatting_lit[0])
- {case 0:var str=formatting_lit[1];return str;
- case 1:var str$0=formatting_lit[1];return str$0;
- default:var c=formatting_lit[1];return cat(cst$19,make$1(1,c))}}
- function bprint_char_literal(buf,chr)
- {return 37 === chr?buffer_add_string(buf,cst$20):buffer_add_char(buf,chr)}
- function bprint_string_literal(buf,str)
- {var _uf_=caml_ml_string_length(str) - 1 | 0,_ue_=0;
- if(! (_uf_ < 0))
- {var i=_ue_;
- for(;;)
- {bprint_char_literal(buf,caml_string_get(str,i));
- var _ug_=i + 1 | 0;
- if(_uf_ !== i){var i=_ug_;continue}
- break}}
- return 0}
- function bprint_fmtty(buf,fmtty)
- {var fmtty$0=fmtty;
- for(;;)
- if(typeof fmtty$0 === "number")
- return 0;
- else
- switch(fmtty$0[0])
- {case 0:
- var rest=fmtty$0[1];
- buffer_add_string(buf,cst_c);
- var fmtty$0=rest;
- continue;
- case 1:
- var rest$0=fmtty$0[1];
- buffer_add_string(buf,cst_s);
- var fmtty$0=rest$0;
- continue;
- case 2:
- var rest$1=fmtty$0[1];
- buffer_add_string(buf,cst_i);
- var fmtty$0=rest$1;
- continue;
- case 3:
- var rest$2=fmtty$0[1];
- buffer_add_string(buf,cst_li);
- var fmtty$0=rest$2;
- continue;
- case 4:
- var rest$3=fmtty$0[1];
- buffer_add_string(buf,cst_ni);
- var fmtty$0=rest$3;
- continue;
- case 5:
- var rest$4=fmtty$0[1];
- buffer_add_string(buf,cst_Li);
- var fmtty$0=rest$4;
- continue;
- case 6:
- var rest$5=fmtty$0[1];
- buffer_add_string(buf,cst_f);
- var fmtty$0=rest$5;
- continue;
- case 7:
- var rest$6=fmtty$0[1];
- buffer_add_string(buf,cst_B);
- var fmtty$0=rest$6;
- continue;
- case 8:
- var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1];
- buffer_add_string(buf,cst$21);
- bprint_fmtty(buf,sub_fmtty);
- buffer_add_string(buf,cst$22);
- var fmtty$0=rest$7;
- continue;
- case 9:
- var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1];
- buffer_add_string(buf,cst$23);
- bprint_fmtty(buf,sub_fmtty$0);
- buffer_add_string(buf,cst$24);
- var fmtty$0=rest$8;
- continue;
- case 10:
- var rest$9=fmtty$0[1];
- buffer_add_string(buf,cst_a);
- var fmtty$0=rest$9;
- continue;
- case 11:
- var rest$10=fmtty$0[1];
- buffer_add_string(buf,cst_t$0);
- var fmtty$0=rest$10;
- continue;
- case 12:
- var rest$11=fmtty$0[1];
- buffer_add_string(buf,cst$25);
- var fmtty$0=rest$11;
- continue;
- case 13:
- var rest$12=fmtty$0[1];
- buffer_add_string(buf,cst_r$0);
- var fmtty$0=rest$12;
- continue;
- default:
- var rest$13=fmtty$0[1];
- buffer_add_string(buf,cst_r$1);
- var fmtty$0=rest$13;
- continue}}
- function int_of_custom_arity(param)
- {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0}
- function string_of_fmt(fmt)
- {var buf=buffer_create(16);
- function fmtiter(fmt,ign_flag)
- {var fmt$0=fmt,ign_flag$0=ign_flag;
- a:
- for(;;)
- if(typeof fmt$0 === "number")
- return 0;
- else
- switch(fmt$0[0])
- {case 0:
- var rest=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,99);
- var fmt$0=rest,ign_flag$0=0;
- continue;
- case 1:
- var rest$0=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,67);
- var fmt$0=rest$0,ign_flag$0=0;
- continue;
- case 2:
- var rest$1=fmt$0[2],pad=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_padding(buf,pad);
- buffer_add_char(buf,115);
- var fmt$0=rest$1,ign_flag$0=0;
- continue;
- case 3:
- var rest$2=fmt$0[2],pad$0=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_padding(buf,pad$0);
- buffer_add_char(buf,83);
- var fmt$0=rest$2,ign_flag$0=0;
- continue;
- case 4:
- var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_iconv_flag(buf,iconv);
- bprint_padding(buf,pad$1);
- bprint_precision(buf,prec);
- buffer_add_char(buf,char_of_iconv(iconv));
- var fmt$0=rest$3,ign_flag$0=0;
- continue;
- case 5:
- var
- rest$4=fmt$0[4],
- prec$0=fmt$0[3],
- pad$2=fmt$0[2],
- iconv$0=fmt$0[1];
- bprint_altint_fmt(buf,ign_flag$0,iconv$0,pad$2,prec$0,108);
- var fmt$0=rest$4,ign_flag$0=0;
- continue;
- case 6:
- var
- rest$5=fmt$0[4],
- prec$1=fmt$0[3],
- pad$3=fmt$0[2],
- iconv$1=fmt$0[1];
- bprint_altint_fmt(buf,ign_flag$0,iconv$1,pad$3,prec$1,110);
- var fmt$0=rest$5,ign_flag$0=0;
- continue;
- case 7:
- var
- rest$6=fmt$0[4],
- prec$2=fmt$0[3],
- pad$4=fmt$0[2],
- iconv$2=fmt$0[1];
- bprint_altint_fmt(buf,ign_flag$0,iconv$2,pad$4,prec$2,76);
- var fmt$0=rest$6,ign_flag$0=0;
- continue;
- case 8:
- var
- rest$7=fmt$0[4],
- prec$3=fmt$0[3],
- pad$5=fmt$0[2],
- fconv=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_fconv_flag(buf,fconv);
- bprint_padding(buf,pad$5);
- bprint_precision(buf,prec$3);
- buffer_add_char(buf,char_of_fconv(0,fconv));
- var fmt$0=rest$7,ign_flag$0=0;
- continue;
- case 9:
- var rest$8=fmt$0[2],pad$6=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_padding(buf,pad$6);
- buffer_add_char(buf,66);
- var fmt$0=rest$8,ign_flag$0=0;
- continue;
- case 10:
- var rest$9=fmt$0[1];
- buffer_add_string(buf,cst$26);
- var fmt$0=rest$9;
- continue;
- case 11:
- var rest$10=fmt$0[2],str=fmt$0[1];
- bprint_string_literal(buf,str);
- var fmt$0=rest$10;
- continue;
- case 12:
- var rest$11=fmt$0[2],chr$0=fmt$0[1];
- bprint_char_literal(buf,chr$0);
- var fmt$0=rest$11;
- continue;
- case 13:
- var rest$12=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_pad_opt(buf,pad_opt);
- buffer_add_char(buf,123);
- bprint_fmtty(buf,fmtty);
- buffer_add_char(buf,37);
- buffer_add_char(buf,125);
- var fmt$0=rest$12,ign_flag$0=0;
- continue;
- case 14:
- var rest$13=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_pad_opt(buf,pad_opt$0);
- buffer_add_char(buf,40);
- bprint_fmtty(buf,fmtty$0);
- buffer_add_char(buf,37);
- buffer_add_char(buf,41);
- var fmt$0=rest$13,ign_flag$0=0;
- continue;
- case 15:
- var rest$14=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,97);
- var fmt$0=rest$14,ign_flag$0=0;
- continue;
- case 16:
- var rest$15=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,116);
- var fmt$0=rest$15,ign_flag$0=0;
- continue;
- case 17:
- var rest$16=fmt$0[2],fmting_lit=fmt$0[1];
- bprint_string_literal(buf,string_of_formatting_lit(fmting_lit));
- var fmt$0=rest$16;
- continue;
- case 18:
- var rest$17=fmt$0[2],fmting_gen=fmt$0[1];
- if(0 === fmting_gen[0])
- {var match$1=fmting_gen[1],str$0=match$1[2];
- buffer_add_string(buf,cst$27);
- buffer_add_string(buf,str$0)}
- else
- {var match$2=fmting_gen[1],str$1=match$2[2];
- buffer_add_string(buf,cst$28);
- buffer_add_string(buf,str$1)}
- var fmt$0=rest$17;
- continue;
- case 19:
- var rest$18=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,114);
- var fmt$0=rest$18,ign_flag$0=0;
- continue;
- case 20:
- var rest$19=fmt$0[3],char_set=fmt$0[2],width_opt=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_pad_opt(buf,width_opt);
- var
- print_char=
- function(buf,i)
- {var c=char_of_int(i);
- return 37 === c
- ?(buffer_add_char(buf,37),buffer_add_char(buf,37))
- :64 === c
- ?(buffer_add_char(buf,37),buffer_add_char(buf,64))
- :buffer_add_char(buf,c)};
- buffer_add_char(buf,91);
- var
- _t6_=
- is_in_char_set(char_set,0)
- ?(buffer_add_char(buf,94),rev_char_set(char_set))
- :char_set,
- is_alone$0=
- function(_t$_)
- {function is_alone(c)
- {var
- after=chr(c + 1 | 0),
- before=chr(c - 1 | 0),
- _ua_=is_in_char_set(_t$_,c);
- if(_ua_)
- var
- _ub_=is_in_char_set(_t$_,before),
- _uc_=_ub_?is_in_char_set(_t$_,after):_ub_,
- _ud_=1 - _uc_;
- else
- var _ud_=_ua_;
- return _ud_}
- return is_alone},
- is_alone=is_alone$0(_t6_);
- if(is_alone(93))buffer_add_char(buf,93);
- var i=1;
- b:
- for(;;)
- {if(i < 256)
- {if(! is_in_char_set(_t6_,char_of_int(i)))
- {var i$0=i + 1 | 0,i=i$0;continue}
- var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0;
- if(48 < switcher >>> 0)
- if(210 <= switcher)print_char(buf,255);else switch$0 = 1;
- else
- {if(46 < switcher - 1 >>> 0)
- {var i$2=i + 1 | 0,i=i$2;continue}
- switch$0 = 1}
- if(switch$0)
- {var i$1=i + 1 | 0;
- if(! is_in_char_set(_t6_,char_of_int(i$1)))
- {print_char(buf,i$1 - 1 | 0);
- var i$6=i$1 + 1 | 0,i=i$6;
- continue}
- var
- match$0=char_of_int(i$1),
- switcher$0=match$0 - 45 | 0,
- switch$1=0;
- if(48 < switcher$0 >>> 0)
- if(210 <= switcher$0)
- {print_char(buf,254);print_char(buf,255)}
- else
- switch$1 = 1;
- else
- if(46 < switcher$0 - 1 >>> 0)
- {if(! is_in_char_set(_t6_,char_of_int(i$1 + 1 | 0)))
- {print_char(buf,i$1 - 1 | 0);
- var i$5=i$1 + 1 | 0,i=i$5;
- continue}
- switch$1 = 1}
- else
- switch$1 = 1;
- if(switch$1)
- {if(! is_in_char_set(_t6_,char_of_int(i$1 + 1 | 0)))
- {print_char(buf,i$1 - 1 | 0);
- print_char(buf,i$1);
- var i$4=i$1 + 2 | 0,i=i$4;
- continue}
- var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j;
- for(;;)
- {if(256 !== j$0 && is_in_char_set(_t6_,char_of_int(j$0)))
- {var j$1=j$0 + 1 | 0,j$0=j$1;continue}
- print_char(buf,i$3);
- print_char(buf,45);
- print_char(buf,j$0 - 1 | 0);
- if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b}
- break}}}}
- if(is_alone(45))buffer_add_char(buf,45);
- buffer_add_char(buf,93);
- var fmt$0=rest$19,ign_flag$0=0;
- continue a}
- case 21:
- var rest$20=fmt$0[2],counter=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- switch(counter)
- {case 0:var _t7_=108;break;
- case 1:var _t7_=110;break;
- default:var _t7_=78}
- buffer_add_char(buf,_t7_);
- var fmt$0=rest$20,ign_flag$0=0;
- continue;
- case 22:
- var rest$21=fmt$0[1];
- buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- bprint_string_literal(buf,cst_0c);
- var fmt$0=rest$21,ign_flag$0=0;
- continue;
- case 23:
- var
- rest$22=fmt$0[2],
- ign=fmt$0[1],
- match$3=param_format_of_ignored_format(ign,rest$22),
- fmt$1=match$3[1],
- fmt$0=fmt$1,
- ign_flag$0=1;
- continue;
- default:
- var
- rest$23=fmt$0[3],
- arity=fmt$0[1],
- _t9_=int_of_custom_arity(arity),
- _t8_=1;
- if(! (_t9_ < 1))
- {var i$8=_t8_;
- for(;;)
- {buffer_add_char(buf,37);
- bprint_ignored_flag(buf,ign_flag$0);
- buffer_add_char(buf,63);
- var _t__=i$8 + 1 | 0;
- if(_t9_ !== i$8){var i$8=_t__;continue}
- break}}
- var fmt$0=rest$23,ign_flag$0=0;
- continue}}
- fmtiter(fmt,0);
- return buffer_contents(buf)}
- function symm(param)
- {if(typeof param === "number")
- return 0;
- else
- switch(param[0])
- {case 0:var rest=param[1];return [0,symm(rest)];
- case 1:var rest$0=param[1];return [1,symm(rest$0)];
- case 2:var rest$1=param[1];return [2,symm(rest$1)];
- case 3:var rest$2=param[1];return [3,symm(rest$2)];
- case 4:var rest$3=param[1];return [4,symm(rest$3)];
- case 5:var rest$4=param[1];return [5,symm(rest$4)];
- case 6:var rest$5=param[1];return [6,symm(rest$5)];
- case 7:var rest$6=param[1];return [7,symm(rest$6)];
- case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)];
- case 9:
- var rest$8=param[3],ty2=param[2],ty1=param[1];
- return [9,ty2,ty1,symm(rest$8)];
- case 10:var rest$9=param[1];return [10,symm(rest$9)];
- case 11:var rest$10=param[1];return [11,symm(rest$10)];
- case 12:var rest$11=param[1];return [12,symm(rest$11)];
- case 13:var rest$12=param[1];return [13,symm(rest$12)];
- default:var rest$13=param[1];return [14,symm(rest$13)]}}
- function trans(ty1,ty2)
- {var switch$0=0;
- if(typeof ty1 === "number")
- if(typeof ty2 === "number")
- return 0;
- else
- switch(ty2[0])
- {case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- default:throw [0,Assert_failure,_aa_]}
- else
- switch(ty1[0])
- {case 0:
- var switch$1=0,_tN_=ty1[1];
- if(typeof ty2 !== "number")
- switch(ty2[0])
- {case 0:var rest2=ty2[1];return [0,trans(_tN_,rest2)];
- case 8:switch$0 = 5;switch$1 = 1;break;
- case 9:switch$0 = 6;switch$1 = 1;break;
- case 10:switch$1 = 1;break;
- case 11:switch$0 = 1;switch$1 = 1;break;
- case 12:switch$0 = 2;switch$1 = 1;break;
- case 13:switch$0 = 3;switch$1 = 1;break;
- case 14:switch$0 = 4;switch$1 = 1;break
- }
- if(! switch$1)switch$0 = 7;
- break;
- case 1:
- var switch$2=0,_tO_=ty1[1];
- if(typeof ty2 !== "number")
- switch(ty2[0])
- {case 1:var rest2$0=ty2[1];return [1,trans(_tO_,rest2$0)];
- case 8:switch$0 = 5;switch$2 = 1;break;
- case 9:switch$0 = 6;switch$2 = 1;break;
- case 10:switch$2 = 1;break;
- case 11:switch$0 = 1;switch$2 = 1;break;
- case 12:switch$0 = 2;switch$2 = 1;break;
- case 13:switch$0 = 3;switch$2 = 1;break;
- case 14:switch$0 = 4;switch$2 = 1;break
- }
- if(! switch$2)switch$0 = 7;
- break;
- case 2:
- var switch$3=0,_tP_=ty1[1];
- if(typeof ty2 === "number")
- switch$3 = 1;
- else
- switch(ty2[0])
- {case 2:var rest2$1=ty2[1];return [2,trans(_tP_,rest2$1)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$3 = 1}
- if(switch$3)switch$0 = 7;
- break;
- case 3:
- var switch$4=0,_tQ_=ty1[1];
- if(typeof ty2 === "number")
- switch$4 = 1;
- else
- switch(ty2[0])
- {case 3:var rest2$2=ty2[1];return [3,trans(_tQ_,rest2$2)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$4 = 1}
- if(switch$4)switch$0 = 7;
- break;
- case 4:
- var switch$5=0,_tR_=ty1[1];
- if(typeof ty2 === "number")
- switch$5 = 1;
- else
- switch(ty2[0])
- {case 4:var rest2$3=ty2[1];return [4,trans(_tR_,rest2$3)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$5 = 1}
- if(switch$5)switch$0 = 7;
- break;
- case 5:
- var switch$6=0,_tS_=ty1[1];
- if(typeof ty2 === "number")
- switch$6 = 1;
- else
- switch(ty2[0])
- {case 5:var rest2$4=ty2[1];return [5,trans(_tS_,rest2$4)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$6 = 1}
- if(switch$6)switch$0 = 7;
- break;
- case 6:
- var switch$7=0,_tT_=ty1[1];
- if(typeof ty2 === "number")
- switch$7 = 1;
- else
- switch(ty2[0])
- {case 6:var rest2$5=ty2[1];return [6,trans(_tT_,rest2$5)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$7 = 1}
- if(switch$7)switch$0 = 7;
- break;
- case 7:
- var switch$8=0,_tU_=ty1[1];
- if(typeof ty2 === "number")
- switch$8 = 1;
- else
- switch(ty2[0])
- {case 7:var rest2$6=ty2[1];return [7,trans(_tU_,rest2$6)];
- case 8:switch$0 = 5;break;
- case 9:switch$0 = 6;break;
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$8 = 1}
- if(switch$8)switch$0 = 7;
- break;
- case 8:
- var switch$9=0,_tV_=ty1[2],_tW_=ty1[1];
- if(typeof ty2 === "number")
- switch$9 = 1;
- else
- switch(ty2[0])
- {case 8:
- var rest2$7=ty2[2],ty2$0=ty2[1],_tX_=trans(_tV_,rest2$7);
- return [8,trans(_tW_,ty2$0),_tX_];
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$9 = 1}
- if(switch$9)throw [0,Assert_failure,_aj_];
- break;
- case 9:
- var switch$10=0,_tY_=ty1[3],_tZ_=ty1[2],_t0_=ty1[1];
- if(typeof ty2 === "number")
- switch$10 = 1;
- else
- switch(ty2[0])
- {case 8:switch$0 = 5;break;
- case 9:
- var
- rest2$8=ty2[3],
- ty22=ty2[2],
- ty21=ty2[1],
- ty=trans(symm(_tZ_),ty21),
- match=fmtty_rel_det(ty),
- f4=match[4],
- f2=match[2];
- caml_call1(f2,0);
- caml_call1(f4,0);
- return [9,_t0_,ty22,trans(_tY_,rest2$8)];
- case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:switch$0 = 4;break;
- default:switch$10 = 1}
- if(switch$10)throw [0,Assert_failure,_ak_];
- break;
- case 10:
- var _t1_=ty1[1];
- if(typeof ty2 !== "number" && 10 === ty2[0])
- {var rest2$9=ty2[1];return [10,trans(_t1_,rest2$9)]}
- throw [0,Assert_failure,_al_];
- case 11:
- var switch$11=0,_t2_=ty1[1];
- if(typeof ty2 === "number")
- switch$11 = 1;
- else
- switch(ty2[0])
- {case 10:break;
- case 11:var rest2$10=ty2[1];return [11,trans(_t2_,rest2$10)];
- default:switch$11 = 1}
- if(switch$11)throw [0,Assert_failure,_am_];
- break;
- case 12:
- var switch$12=0,_t3_=ty1[1];
- if(typeof ty2 === "number")
- switch$12 = 1;
- else
- switch(ty2[0])
- {case 10:break;
- case 11:switch$0 = 1;break;
- case 12:var rest2$11=ty2[1];return [12,trans(_t3_,rest2$11)];
- default:switch$12 = 1}
- if(switch$12)throw [0,Assert_failure,_an_];
- break;
- case 13:
- var switch$13=0,_t4_=ty1[1];
- if(typeof ty2 === "number")
- switch$13 = 1;
- else
- switch(ty2[0])
- {case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:var rest2$12=ty2[1];return [13,trans(_t4_,rest2$12)];
- default:switch$13 = 1}
- if(switch$13)throw [0,Assert_failure,_ao_];
- break;
- default:
- var switch$14=0,_t5_=ty1[1];
- if(typeof ty2 === "number")
- switch$14 = 1;
- else
- switch(ty2[0])
- {case 10:break;
- case 11:switch$0 = 1;break;
- case 12:switch$0 = 2;break;
- case 13:switch$0 = 3;break;
- case 14:var rest2$13=ty2[1];return [14,trans(_t5_,rest2$13)];
- default:switch$14 = 1}
- if(switch$14)throw [0,Assert_failure,_ap_]}
- switch(switch$0)
- {case 0:throw [0,Assert_failure,_ad_];
- case 1:throw [0,Assert_failure,_ae_];
- case 2:throw [0,Assert_failure,_af_];
- case 3:throw [0,Assert_failure,_ag_];
- case 4:throw [0,Assert_failure,_ah_];
- case 5:throw [0,Assert_failure,_ab_];
- case 6:throw [0,Assert_failure,_ac_];
- default:throw [0,Assert_failure,_ai_]}}
- function fmtty_rel_det(param)
- {if(typeof param === "number")
- {var
- _tp_=function(param){return 0},
- _tq_=function(param){return 0},
- _tr_=function(param){return 0};
- return [0,function(param){return 0},_tr_,_tq_,_tp_]}
- else
- switch(param[0])
- {case 0:
- var
- rest=param[1],
- match=fmtty_rel_det(rest),
- de=match[4],
- ed=match[3],
- af=match[2],
- fa=match[1],
- _ts_=function(param){caml_call1(af,0);return 0};
- return [0,function(param){caml_call1(fa,0);return 0},_ts_,ed,de];
- case 1:
- var
- rest$0=param[1],
- match$0=fmtty_rel_det(rest$0),
- de$0=match$0[4],
- ed$0=match$0[3],
- af$0=match$0[2],
- fa$0=match$0[1],
- _tt_=function(param){caml_call1(af$0,0);return 0};
- return [0,
- function(param){caml_call1(fa$0,0);return 0},
- _tt_,
- ed$0,
- de$0];
- case 2:
- var
- rest$1=param[1],
- match$1=fmtty_rel_det(rest$1),
- de$1=match$1[4],
- ed$1=match$1[3],
- af$1=match$1[2],
- fa$1=match$1[1],
- _tu_=function(param){caml_call1(af$1,0);return 0};
- return [0,
- function(param){caml_call1(fa$1,0);return 0},
- _tu_,
- ed$1,
- de$1];
- case 3:
- var
- rest$2=param[1],
- match$2=fmtty_rel_det(rest$2),
- de$2=match$2[4],
- ed$2=match$2[3],
- af$2=match$2[2],
- fa$2=match$2[1],
- _tv_=function(param){caml_call1(af$2,0);return 0};
- return [0,
- function(param){caml_call1(fa$2,0);return 0},
- _tv_,
- ed$2,
- de$2];
- case 4:
- var
- rest$3=param[1],
- match$3=fmtty_rel_det(rest$3),
- de$3=match$3[4],
- ed$3=match$3[3],
- af$3=match$3[2],
- fa$3=match$3[1],
- _tw_=function(param){caml_call1(af$3,0);return 0};
- return [0,
- function(param){caml_call1(fa$3,0);return 0},
- _tw_,
- ed$3,
- de$3];
- case 5:
- var
- rest$4=param[1],
- match$4=fmtty_rel_det(rest$4),
- de$4=match$4[4],
- ed$4=match$4[3],
- af$4=match$4[2],
- fa$4=match$4[1],
- _tx_=function(param){caml_call1(af$4,0);return 0};
- return [0,
- function(param){caml_call1(fa$4,0);return 0},
- _tx_,
- ed$4,
- de$4];
- case 6:
- var
- rest$5=param[1],
- match$5=fmtty_rel_det(rest$5),
- de$5=match$5[4],
- ed$5=match$5[3],
- af$5=match$5[2],
- fa$5=match$5[1],
- _ty_=function(param){caml_call1(af$5,0);return 0};
- return [0,
- function(param){caml_call1(fa$5,0);return 0},
- _ty_,
- ed$5,
- de$5];
- case 7:
- var
- rest$6=param[1],
- match$6=fmtty_rel_det(rest$6),
- de$6=match$6[4],
- ed$6=match$6[3],
- af$6=match$6[2],
- fa$6=match$6[1],
- _tz_=function(param){caml_call1(af$6,0);return 0};
- return [0,
- function(param){caml_call1(fa$6,0);return 0},
- _tz_,
- ed$6,
- de$6];
- case 8:
- var
- rest$7=param[2],
- match$7=fmtty_rel_det(rest$7),
- de$7=match$7[4],
- ed$7=match$7[3],
- af$7=match$7[2],
- fa$7=match$7[1],
- _tA_=function(param){caml_call1(af$7,0);return 0};
- return [0,
- function(param){caml_call1(fa$7,0);return 0},
- _tA_,
- ed$7,
- de$7];
- case 9:
- var
- rest$8=param[3],
- ty2=param[2],
- ty1=param[1],
- match$8=fmtty_rel_det(rest$8),
- de$8=match$8[4],
- ed$8=match$8[3],
- af$8=match$8[2],
- fa$8=match$8[1],
- ty=trans(symm(ty1),ty2),
- match$9=fmtty_rel_det(ty),
- jd=match$9[4],
- dj=match$9[3],
- ga=match$9[2],
- ag=match$9[1],
- _tB_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0},
- _tC_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0},
- _tD_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0};
- return [0,
- function(param)
- {caml_call1(fa$8,0);caml_call1(ag,0);return 0},
- _tD_,
- _tC_,
- _tB_];
- case 10:
- var
- rest$9=param[1],
- match$10=fmtty_rel_det(rest$9),
- de$9=match$10[4],
- ed$9=match$10[3],
- af$9=match$10[2],
- fa$9=match$10[1],
- _tE_=function(param){caml_call1(af$9,0);return 0};
- return [0,
- function(param){caml_call1(fa$9,0);return 0},
- _tE_,
- ed$9,
- de$9];
- case 11:
- var
- rest$10=param[1],
- match$11=fmtty_rel_det(rest$10),
- de$10=match$11[4],
- ed$10=match$11[3],
- af$10=match$11[2],
- fa$10=match$11[1],
- _tF_=function(param){caml_call1(af$10,0);return 0};
- return [0,
- function(param){caml_call1(fa$10,0);return 0},
- _tF_,
- ed$10,
- de$10];
- case 12:
- var
- rest$11=param[1],
- match$12=fmtty_rel_det(rest$11),
- de$11=match$12[4],
- ed$11=match$12[3],
- af$11=match$12[2],
- fa$11=match$12[1],
- _tG_=function(param){caml_call1(af$11,0);return 0};
- return [0,
- function(param){caml_call1(fa$11,0);return 0},
- _tG_,
- ed$11,
- de$11];
- case 13:
- var
- rest$12=param[1],
- match$13=fmtty_rel_det(rest$12),
- de$12=match$13[4],
- ed$12=match$13[3],
- af$12=match$13[2],
- fa$12=match$13[1],
- _tH_=function(param){caml_call1(de$12,0);return 0},
- _tI_=function(param){caml_call1(ed$12,0);return 0},
- _tJ_=function(param){caml_call1(af$12,0);return 0};
- return [0,
- function(param){caml_call1(fa$12,0);return 0},
- _tJ_,
- _tI_,
- _tH_];
- default:
- var
- rest$13=param[1],
- match$14=fmtty_rel_det(rest$13),
- de$13=match$14[4],
- ed$13=match$14[3],
- af$13=match$14[2],
- fa$13=match$14[1],
- _tK_=function(param){caml_call1(de$13,0);return 0},
- _tL_=function(param){caml_call1(ed$13,0);return 0},
- _tM_=function(param){caml_call1(af$13,0);return 0};
- return [0,
- function(param){caml_call1(fa$13,0);return 0},
- _tM_,
- _tL_,
- _tK_]}}
- function fmtty_of_precision_fmtty(prec,fmtty)
- {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty}
- function fmtty_of_padding_fmtty(pad,fmtty)
- {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]}
- function fmtty_of_custom(arity,fmtty)
- {if(arity)
- {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]}
- return fmtty}
- function fmtty_of_fmt(fmtty)
- {var fmtty$0=fmtty;
- for(;;)
- if(typeof fmtty$0 === "number")
- return 0;
- else
- switch(fmtty$0[0])
- {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)];
- case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)];
- case 2:
- var rest$1=fmtty$0[2],pad=fmtty$0[1];
- return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]);
- case 3:
- var rest$2=fmtty$0[2],pad$0=fmtty$0[1];
- return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]);
- case 4:
- var
- rest$3=fmtty$0[4],
- prec=fmtty$0[3],
- pad$1=fmtty$0[2],
- ty_rest=fmtty_of_fmt(rest$3),
- prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]);
- return fmtty_of_padding_fmtty(pad$1,prec_ty);
- case 5:
- var
- rest$4=fmtty$0[4],
- prec$0=fmtty$0[3],
- pad$2=fmtty$0[2],
- ty_rest$0=fmtty_of_fmt(rest$4),
- prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]);
- return fmtty_of_padding_fmtty(pad$2,prec_ty$0);
- case 6:
- var
- rest$5=fmtty$0[4],
- prec$1=fmtty$0[3],
- pad$3=fmtty$0[2],
- ty_rest$1=fmtty_of_fmt(rest$5),
- prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]);
- return fmtty_of_padding_fmtty(pad$3,prec_ty$1);
- case 7:
- var
- rest$6=fmtty$0[4],
- prec$2=fmtty$0[3],
- pad$4=fmtty$0[2],
- ty_rest$2=fmtty_of_fmt(rest$6),
- prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]);
- return fmtty_of_padding_fmtty(pad$4,prec_ty$2);
- case 8:
- var
- rest$7=fmtty$0[4],
- prec$3=fmtty$0[3],
- pad$5=fmtty$0[2],
- ty_rest$3=fmtty_of_fmt(rest$7),
- prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]);
- return fmtty_of_padding_fmtty(pad$5,prec_ty$3);
- case 9:
- var rest$8=fmtty$0[2],pad$6=fmtty$0[1];
- return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]);
- case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue;
- case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue;
- case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue;
- case 13:
- var rest$9=fmtty$0[3],ty=fmtty$0[2];
- return [8,ty,fmtty_of_fmt(rest$9)];
- case 14:
- var rest$10=fmtty$0[3],ty$0=fmtty$0[2];
- return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)];
- case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)];
- case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)];
- case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue;
- case 18:
- var
- rest$13=fmtty$0[2],
- fmting_gen=fmtty$0[1],
- _tn_=fmtty_of_fmt(rest$13);
- if(0 === fmting_gen[0])
- var match=fmting_gen[1],fmt=match[1],_to_=fmtty_of_fmt(fmt);
- else
- var
- match$0=fmting_gen[1],
- fmt$0=match$0[1],
- _to_=fmtty_of_fmt(fmt$0);
- return concat_fmtty(_to_,_tn_);
- case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)];
- case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)];
- case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)];
- case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)];
- case 23:
- var rest$18=fmtty$0[2],ign=fmtty$0[1];
- if(typeof ign === "number")
- switch(ign)
- {case 0:var fmtty$0=rest$18;continue;
- case 1:var fmtty$0=rest$18;continue;
- case 2:return [14,fmtty_of_fmt(rest$18)];
- default:var fmtty$0=rest$18;continue}
- else
- switch(ign[0])
- {case 0:var fmtty$0=rest$18;continue;
- case 1:var fmtty$0=rest$18;continue;
- case 2:var fmtty$0=rest$18;continue;
- case 3:var fmtty$0=rest$18;continue;
- case 4:var fmtty$0=rest$18;continue;
- case 5:var fmtty$0=rest$18;continue;
- case 6:var fmtty$0=rest$18;continue;
- case 7:var fmtty$0=rest$18;continue;
- case 8:var fmtty$0=rest$18;continue;
- case 9:
- var fmtty$5=ign[2];
- return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18));
- case 10:var fmtty$0=rest$18;continue;
- default:var fmtty$0=rest$18;continue}
- default:
- var rest$19=fmtty$0[3],arity=fmtty$0[1];
- return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}}
- var
- Type_mismatch=
- [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)];
- function type_padding(pad,fmtty)
- {if(typeof pad === "number")
- return [0,0,fmtty];
- else
- {if(0 === pad[0])
- {var w=pad[2],padty=pad[1];return [0,[0,padty,w],fmtty]}
- if(typeof fmtty !== "number" && 2 === fmtty[0])
- {var rest=fmtty[1],padty$0=pad[1];return [0,[1,padty$0],rest]}
- throw Type_mismatch}}
- function type_padprec(pad,prec,fmtty)
- {var match=type_padding(pad,fmtty);
- if(typeof prec === "number")
- {if(prec)
- {var _tm_=match[2];
- if(typeof _tm_ !== "number" && 2 === _tm_[0])
- {var rest=_tm_[1],pad$0=match[1];return [0,pad$0,1,rest]}
- throw Type_mismatch}
- var rest$0=match[2],pad$1=match[1];
- return [0,pad$1,0,rest$0]}
- var rest$1=match[2],pad$2=match[1],p=prec[1];
- return [0,pad$2,[0,p],rest$1]}
- function type_ignored_format_substituti(sub_fmtty,fmt,fmtty)
- {if(typeof sub_fmtty === "number")
- return [0,0,type_format_gen(fmt,fmtty)];
- else
- switch(sub_fmtty[0])
- {case 0:
- if(typeof fmtty !== "number" && 0 === fmtty[0])
- {var
- fmtty_rest=fmtty[1],
- sub_fmtty_rest=sub_fmtty[1],
- match=
- type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest),
- fmt$0=match[2],
- sub_fmtty_rest$0=match[1];
- return [0,[0,sub_fmtty_rest$0],fmt$0]}
- break;
- case 1:
- if(typeof fmtty !== "number" && 1 === fmtty[0])
- {var
- fmtty_rest$0=fmtty[1],
- sub_fmtty_rest$1=sub_fmtty[1],
- match$0=
- type_ignored_format_substituti
- (sub_fmtty_rest$1,fmt,fmtty_rest$0),
- fmt$1=match$0[2],
- sub_fmtty_rest$2=match$0[1];
- return [0,[1,sub_fmtty_rest$2],fmt$1]}
- break;
- case 2:
- if(typeof fmtty !== "number" && 2 === fmtty[0])
- {var
- fmtty_rest$1=fmtty[1],
- sub_fmtty_rest$3=sub_fmtty[1],
- match$1=
- type_ignored_format_substituti
- (sub_fmtty_rest$3,fmt,fmtty_rest$1),
- fmt$2=match$1[2],
- sub_fmtty_rest$4=match$1[1];
- return [0,[2,sub_fmtty_rest$4],fmt$2]}
- break;
- case 3:
- if(typeof fmtty !== "number" && 3 === fmtty[0])
- {var
- fmtty_rest$2=fmtty[1],
- sub_fmtty_rest$5=sub_fmtty[1],
- match$2=
- type_ignored_format_substituti
- (sub_fmtty_rest$5,fmt,fmtty_rest$2),
- fmt$3=match$2[2],
- sub_fmtty_rest$6=match$2[1];
- return [0,[3,sub_fmtty_rest$6],fmt$3]}
- break;
- case 4:
- if(typeof fmtty !== "number" && 4 === fmtty[0])
- {var
- fmtty_rest$3=fmtty[1],
- sub_fmtty_rest$7=sub_fmtty[1],
- match$3=
- type_ignored_format_substituti
- (sub_fmtty_rest$7,fmt,fmtty_rest$3),
- fmt$4=match$3[2],
- sub_fmtty_rest$8=match$3[1];
- return [0,[4,sub_fmtty_rest$8],fmt$4]}
- break;
- case 5:
- if(typeof fmtty !== "number" && 5 === fmtty[0])
- {var
- fmtty_rest$4=fmtty[1],
- sub_fmtty_rest$9=sub_fmtty[1],
- match$4=
- type_ignored_format_substituti
- (sub_fmtty_rest$9,fmt,fmtty_rest$4),
- fmt$5=match$4[2],
- sub_fmtty_rest$10=match$4[1];
- return [0,[5,sub_fmtty_rest$10],fmt$5]}
- break;
- case 6:
- if(typeof fmtty !== "number" && 6 === fmtty[0])
- {var
- fmtty_rest$5=fmtty[1],
- sub_fmtty_rest$11=sub_fmtty[1],
- match$5=
- type_ignored_format_substituti
- (sub_fmtty_rest$11,fmt,fmtty_rest$5),
- fmt$6=match$5[2],
- sub_fmtty_rest$12=match$5[1];
- return [0,[6,sub_fmtty_rest$12],fmt$6]}
- break;
- case 7:
- if(typeof fmtty !== "number" && 7 === fmtty[0])
- {var
- fmtty_rest$6=fmtty[1],
- sub_fmtty_rest$13=sub_fmtty[1],
- match$6=
- type_ignored_format_substituti
- (sub_fmtty_rest$13,fmt,fmtty_rest$6),
- fmt$7=match$6[2],
- sub_fmtty_rest$14=match$6[1];
- return [0,[7,sub_fmtty_rest$14],fmt$7]}
- break;
- case 8:
- if(typeof fmtty !== "number" && 8 === fmtty[0])
- {var
- fmtty_rest$7=fmtty[2],
- sub2_fmtty=fmtty[1],
- sub_fmtty_rest$15=sub_fmtty[2],
- sub2_fmtty$0=sub_fmtty[1];
- if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty]))
- throw Type_mismatch;
- var
- match$7=
- type_ignored_format_substituti
- (sub_fmtty_rest$15,fmt,fmtty_rest$7),
- fmt$8=match$7[2],
- sub_fmtty_rest$16=match$7[1];
- return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]}
- break;
- case 9:
- if(typeof fmtty !== "number" && 9 === fmtty[0])
- {var
- fmtty_rest$8=fmtty[3],
- sub2_fmtty$1=fmtty[2],
- sub1_fmtty=fmtty[1],
- sub_fmtty_rest$17=sub_fmtty[3],
- sub2_fmtty$2=sub_fmtty[2],
- sub1_fmtty$0=sub_fmtty[1],
- _tk_=[0,erase_rel(sub1_fmtty)];
- if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_tk_))
- throw Type_mismatch;
- var _tl_=[0,erase_rel(sub2_fmtty$1)];
- if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_tl_))
- throw Type_mismatch;
- var
- sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1),
- match$8=fmtty_rel_det(sub_fmtty$0),
- f4=match$8[4],
- f2=match$8[2];
- caml_call1(f2,0);
- caml_call1(f4,0);
- var
- match$9=
- type_ignored_format_substituti
- (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8),
- fmt$9=match$9[2],
- sub_fmtty_rest$18=match$9[1];
- return [0,
- [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)],
- fmt$9]}
- break;
- case 10:
- if(typeof fmtty !== "number" && 10 === fmtty[0])
- {var
- fmtty_rest$9=fmtty[1],
- sub_fmtty_rest$19=sub_fmtty[1],
- match$10=
- type_ignored_format_substituti
- (sub_fmtty_rest$19,fmt,fmtty_rest$9),
- fmt$10=match$10[2],
- sub_fmtty_rest$20=match$10[1];
- return [0,[10,sub_fmtty_rest$20],fmt$10]}
- break;
- case 11:
- if(typeof fmtty !== "number" && 11 === fmtty[0])
- {var
- fmtty_rest$10=fmtty[1],
- sub_fmtty_rest$21=sub_fmtty[1],
- match$11=
- type_ignored_format_substituti
- (sub_fmtty_rest$21,fmt,fmtty_rest$10),
- fmt$11=match$11[2],
- sub_fmtty_rest$22=match$11[1];
- return [0,[11,sub_fmtty_rest$22],fmt$11]}
- break;
- case 13:
- if(typeof fmtty !== "number" && 13 === fmtty[0])
- {var
- fmtty_rest$11=fmtty[1],
- sub_fmtty_rest$23=sub_fmtty[1],
- match$12=
- type_ignored_format_substituti
- (sub_fmtty_rest$23,fmt,fmtty_rest$11),
- fmt$12=match$12[2],
- sub_fmtty_rest$24=match$12[1];
- return [0,[13,sub_fmtty_rest$24],fmt$12]}
- break;
- case 14:
- if(typeof fmtty !== "number" && 14 === fmtty[0])
- {var
- fmtty_rest$12=fmtty[1],
- sub_fmtty_rest$25=sub_fmtty[1],
- match$13=
- type_ignored_format_substituti
- (sub_fmtty_rest$25,fmt,fmtty_rest$12),
- fmt$13=match$13[2],
- sub_fmtty_rest$26=match$13[1];
- return [0,[14,sub_fmtty_rest$26],fmt$13]}
- break
- }
- throw Type_mismatch}
- function type_format_gen(fmt,fmtty)
- {if(typeof fmt === "number")
- return [0,0,fmtty];
- else
- switch(fmt[0])
- {case 0:
- if(typeof fmtty !== "number" && 0 === fmtty[0])
- {var
- fmtty_rest=fmtty[1],
- fmt_rest=fmt[1],
- match=type_format_gen(fmt_rest,fmtty_rest),
- fmtty$0=match[2],
- fmt$0=match[1];
- return [0,[0,fmt$0],fmtty$0]}
- break;
- case 1:
- if(typeof fmtty !== "number" && 0 === fmtty[0])
- {var
- fmtty_rest$0=fmtty[1],
- fmt_rest$0=fmt[1],
- match$0=type_format_gen(fmt_rest$0,fmtty_rest$0),
- fmtty$1=match$0[2],
- fmt$1=match$0[1];
- return [0,[1,fmt$1],fmtty$1]}
- break;
- case 2:
- var
- fmt_rest$1=fmt[2],
- pad=fmt[1],
- match$1=type_padding(pad,fmtty),
- _s5_=match$1[2],
- _s4_=match$1[1];
- if(typeof _s5_ !== "number" && 1 === _s5_[0])
- {var
- fmtty_rest$1=_s5_[1],
- match$2=type_format_gen(fmt_rest$1,fmtty_rest$1),
- fmtty$2=match$2[2],
- fmt$2=match$2[1];
- return [0,[2,_s4_,fmt$2],fmtty$2]}
- throw Type_mismatch;
- case 3:
- var
- fmt_rest$2=fmt[2],
- pad$0=fmt[1],
- match$3=type_padding(pad$0,fmtty),
- _s7_=match$3[2],
- _s6_=match$3[1];
- if(typeof _s7_ !== "number" && 1 === _s7_[0])
- {var
- fmtty_rest$2=_s7_[1],
- match$4=type_format_gen(fmt_rest$2,fmtty_rest$2),
- fmtty$3=match$4[2],
- fmt$3=match$4[1];
- return [0,[3,_s6_,fmt$3],fmtty$3]}
- throw Type_mismatch;
- case 4:
- var
- fmt_rest$3=fmt[4],
- prec=fmt[3],
- pad$1=fmt[2],
- iconv=fmt[1],
- match$5=type_padprec(pad$1,prec,fmtty),
- _s9_=match$5[3],
- _s8_=match$5[1];
- if(typeof _s9_ !== "number" && 2 === _s9_[0])
- {var
- fmtty_rest$3=_s9_[1],
- prec$0=match$5[2],
- match$6=type_format_gen(fmt_rest$3,fmtty_rest$3),
- fmtty$4=match$6[2],
- fmt$4=match$6[1];
- return [0,[4,iconv,_s8_,prec$0,fmt$4],fmtty$4]}
- throw Type_mismatch;
- case 5:
- var
- fmt_rest$4=fmt[4],
- prec$1=fmt[3],
- pad$2=fmt[2],
- iconv$0=fmt[1],
- match$7=type_padprec(pad$2,prec$1,fmtty),
- _s$_=match$7[3],
- _s__=match$7[1];
- if(typeof _s$_ !== "number" && 3 === _s$_[0])
- {var
- fmtty_rest$4=_s$_[1],
- prec$2=match$7[2],
- match$8=type_format_gen(fmt_rest$4,fmtty_rest$4),
- fmtty$5=match$8[2],
- fmt$5=match$8[1];
- return [0,[5,iconv$0,_s__,prec$2,fmt$5],fmtty$5]}
- throw Type_mismatch;
- case 6:
- var
- fmt_rest$5=fmt[4],
- prec$3=fmt[3],
- pad$3=fmt[2],
- iconv$1=fmt[1],
- match$9=type_padprec(pad$3,prec$3,fmtty),
- _tb_=match$9[3],
- _ta_=match$9[1];
- if(typeof _tb_ !== "number" && 4 === _tb_[0])
- {var
- fmtty_rest$5=_tb_[1],
- prec$4=match$9[2],
- match$10=type_format_gen(fmt_rest$5,fmtty_rest$5),
- fmtty$6=match$10[2],
- fmt$6=match$10[1];
- return [0,[6,iconv$1,_ta_,prec$4,fmt$6],fmtty$6]}
- throw Type_mismatch;
- case 7:
- var
- fmt_rest$6=fmt[4],
- prec$5=fmt[3],
- pad$4=fmt[2],
- iconv$2=fmt[1],
- match$11=type_padprec(pad$4,prec$5,fmtty),
- _td_=match$11[3],
- _tc_=match$11[1];
- if(typeof _td_ !== "number" && 5 === _td_[0])
- {var
- fmtty_rest$6=_td_[1],
- prec$6=match$11[2],
- match$12=type_format_gen(fmt_rest$6,fmtty_rest$6),
- fmtty$7=match$12[2],
- fmt$7=match$12[1];
- return [0,[7,iconv$2,_tc_,prec$6,fmt$7],fmtty$7]}
- throw Type_mismatch;
- case 8:
- var
- fmt_rest$7=fmt[4],
- prec$7=fmt[3],
- pad$5=fmt[2],
- fconv=fmt[1],
- match$13=type_padprec(pad$5,prec$7,fmtty),
- _tf_=match$13[3],
- _te_=match$13[1];
- if(typeof _tf_ !== "number" && 6 === _tf_[0])
- {var
- fmtty_rest$7=_tf_[1],
- prec$8=match$13[2],
- match$14=type_format_gen(fmt_rest$7,fmtty_rest$7),
- fmtty$8=match$14[2],
- fmt$8=match$14[1];
- return [0,[8,fconv,_te_,prec$8,fmt$8],fmtty$8]}
- throw Type_mismatch;
- case 9:
- var
- fmt_rest$8=fmt[2],
- pad$6=fmt[1],
- match$15=type_padding(pad$6,fmtty),
- _th_=match$15[2],
- _tg_=match$15[1];
- if(typeof _th_ !== "number" && 7 === _th_[0])
- {var
- fmtty_rest$8=_th_[1],
- match$16=type_format_gen(fmt_rest$8,fmtty_rest$8),
- fmtty$9=match$16[2],
- fmt$9=match$16[1];
- return [0,[9,_tg_,fmt$9],fmtty$9]}
- throw Type_mismatch;
- case 10:
- var
- fmt_rest$9=fmt[1],
- match$17=type_format_gen(fmt_rest$9,fmtty),
- fmtty$10=match$17[2],
- fmt$10=match$17[1];
- return [0,[10,fmt$10],fmtty$10];
- case 11:
- var
- fmt_rest$10=fmt[2],
- str=fmt[1],
- match$18=type_format_gen(fmt_rest$10,fmtty),
- fmtty$11=match$18[2],
- fmt$11=match$18[1];
- return [0,[11,str,fmt$11],fmtty$11];
- case 12:
- var
- fmt_rest$11=fmt[2],
- chr=fmt[1],
- match$19=type_format_gen(fmt_rest$11,fmtty),
- fmtty$12=match$19[2],
- fmt$12=match$19[1];
- return [0,[12,chr,fmt$12],fmtty$12];
- case 13:
- if(typeof fmtty !== "number" && 8 === fmtty[0])
- {var
- fmtty_rest$9=fmtty[2],
- sub_fmtty=fmtty[1],
- fmt_rest$12=fmt[3],
- sub_fmtty$0=fmt[2],
- pad_opt=fmt[1];
- if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty]))
- throw Type_mismatch;
- var
- match$20=type_format_gen(fmt_rest$12,fmtty_rest$9),
- fmtty$13=match$20[2],
- fmt$13=match$20[1];
- return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]}
- break;
- case 14:
- if(typeof fmtty !== "number" && 9 === fmtty[0])
- {var
- fmtty_rest$10=fmtty[3],
- sub_fmtty1=fmtty[1],
- fmt_rest$13=fmt[3],
- sub_fmtty$1=fmt[2],
- pad_opt$0=fmt[1],
- _ti_=[0,erase_rel(sub_fmtty1)];
- if(caml_notequal([0,erase_rel(sub_fmtty$1)],_ti_))
- throw Type_mismatch;
- var
- match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)),
- fmtty$14=match$21[2],
- fmt$14=match$21[1];
- return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]}
- break;
- case 15:
- if(typeof fmtty !== "number" && 10 === fmtty[0])
- {var
- fmtty_rest$11=fmtty[1],
- fmt_rest$14=fmt[1],
- match$22=type_format_gen(fmt_rest$14,fmtty_rest$11),
- fmtty$15=match$22[2],
- fmt$15=match$22[1];
- return [0,[15,fmt$15],fmtty$15]}
- break;
- case 16:
- if(typeof fmtty !== "number" && 11 === fmtty[0])
- {var
- fmtty_rest$12=fmtty[1],
- fmt_rest$15=fmt[1],
- match$23=type_format_gen(fmt_rest$15,fmtty_rest$12),
- fmtty$16=match$23[2],
- fmt$16=match$23[1];
- return [0,[16,fmt$16],fmtty$16]}
- break;
- case 17:
- var
- fmt_rest$16=fmt[2],
- formatting_lit=fmt[1],
- match$24=type_format_gen(fmt_rest$16,fmtty),
- fmtty$17=match$24[2],
- fmt$17=match$24[1];
- return [0,[17,formatting_lit,fmt$17],fmtty$17];
- case 18:
- var fmt_rest$17=fmt[2],formatting_gen=fmt[1];
- if(0 === formatting_gen[0])
- {var
- match$28=formatting_gen[1],
- str$0=match$28[2],
- fmt1=match$28[1],
- match$29=type_format_gen(fmt1,fmtty),
- fmtty2=match$29[2],
- fmt2=match$29[1],
- match$30=type_format_gen(fmt_rest$17,fmtty2),
- fmtty3=match$30[2],
- fmt3=match$30[1];
- return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]}
- var
- match$31=formatting_gen[1],
- str$1=match$31[2],
- fmt1$0=match$31[1],
- match$32=type_format_gen(fmt1$0,fmtty),
- fmtty2$0=match$32[2],
- fmt2$0=match$32[1],
- match$33=type_format_gen(fmt_rest$17,fmtty2$0),
- fmtty3$0=match$33[2],
- fmt3$0=match$33[1];
- return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0];
- case 19:
- if(typeof fmtty !== "number" && 13 === fmtty[0])
- {var
- fmtty_rest$13=fmtty[1],
- fmt_rest$18=fmt[1],
- match$25=type_format_gen(fmt_rest$18,fmtty_rest$13),
- fmtty$18=match$25[2],
- fmt$18=match$25[1];
- return [0,[19,fmt$18],fmtty$18]}
- break;
- case 20:
- if(typeof fmtty !== "number" && 1 === fmtty[0])
- {var
- fmtty_rest$14=fmtty[1],
- fmt_rest$19=fmt[3],
- char_set=fmt[2],
- width_opt=fmt[1],
- match$26=type_format_gen(fmt_rest$19,fmtty_rest$14),
- fmtty$19=match$26[2],
- fmt$19=match$26[1];
- return [0,[20,width_opt,char_set,fmt$19],fmtty$19]}
- break;
- case 21:
- if(typeof fmtty !== "number" && 2 === fmtty[0])
- {var
- fmtty_rest$15=fmtty[1],
- fmt_rest$20=fmt[2],
- counter=fmt[1],
- match$27=type_format_gen(fmt_rest$20,fmtty_rest$15),
- fmtty$20=match$27[2],
- fmt$20=match$27[1];
- return [0,[21,counter,fmt$20],fmtty$20]}
- break;
- case 23:
- var rest=fmt[2],ign=fmt[1];
- if(typeof ign === "number")
- switch(ign)
- {case 0:return type_ignored_param_one(ign,rest,fmtty);
- case 1:return type_ignored_param_one(ign,rest,fmtty);
- case 2:
- if(typeof fmtty !== "number" && 14 === fmtty[0])
- {var
- fmtty_rest$16=fmtty[1],
- match$34=type_format_gen(rest,fmtty_rest$16),
- fmtty$21=match$34[2],
- fmt$21=match$34[1];
- return [0,[23,2,fmt$21],fmtty$21]}
- throw Type_mismatch;
- default:return type_ignored_param_one(ign,rest,fmtty)}
- else
- switch(ign[0])
- {case 0:return type_ignored_param_one(ign,rest,fmtty);
- case 1:return type_ignored_param_one(ign,rest,fmtty);
- case 2:return type_ignored_param_one(ign,rest,fmtty);
- case 3:return type_ignored_param_one(ign,rest,fmtty);
- case 4:return type_ignored_param_one(ign,rest,fmtty);
- case 5:return type_ignored_param_one(ign,rest,fmtty);
- case 6:return type_ignored_param_one(ign,rest,fmtty);
- case 7:return type_ignored_param_one(ign,rest,fmtty);
- case 8:
- var sub_fmtty$2=ign[2],pad_opt$1=ign[1];
- return type_ignored_param_one
- ([8,pad_opt$1,sub_fmtty$2],rest,fmtty);
- case 9:
- var
- sub_fmtty$3=ign[2],
- pad_opt$2=ign[1],
- _tj_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty),
- match$35=_tj_[2],
- fmtty$22=match$35[2],
- fmt$22=match$35[1],
- sub_fmtty$4=_tj_[1];
- return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22];
- case 10:return type_ignored_param_one(ign,rest,fmtty);
- default:return type_ignored_param_one(ign,rest,fmtty)}
- }
- throw Type_mismatch}
- function type_ignored_param_one(ign,fmt,fmtty)
- {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1];
- return [0,[23,ign,fmt$0],fmtty$0]}
- function type_format(fmt,fmtty)
- {var _s3_=type_format_gen(fmt,fmtty);
- if(typeof _s3_[2] === "number"){var fmt$0=_s3_[1];return fmt$0}
- throw Type_mismatch}
- function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))}
- function fix_padding(padty,width,str)
- {var
- len=caml_ml_string_length(str),
- padty$0=0 <= width?padty:0,
- width$0=abs(width);
- if(width$0 <= len)return str;
- var _s2_=2 === padty$0?48:32,res=make$0(width$0,_s2_);
- switch(padty$0)
- {case 0:blit$0(str,0,res,0,len);break;
- case 1:blit$0(str,0,res,width$0 - len | 0,len);break;
- default:
- var switch$0=0;
- if(0 < len)
- {var switch$1=0;
- if
- (43
- !==
- caml_string_get(str,0)
- &&
- 45
- !==
- caml_string_get(str,0)
- &&
- 32
- !==
- caml_string_get(str,0))
- {switch$0 = 1;switch$1 = 1}
- if(! switch$1)
- {caml_bytes_set(res,0,caml_string_get(str,0));
- blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}}
- else
- switch$0 = 1;
- if(switch$0)
- {var switch$2=0;
- if(1 < len && 48 === caml_string_get(str,0))
- {var switch$3=0;
- if
- (120
- !==
- caml_string_get(str,1)
- &&
- 88
- !==
- caml_string_get(str,1))
- {switch$2 = 1;switch$3 = 1}
- if(! switch$3)
- {caml_bytes_set(res,1,caml_string_get(str,1));
- blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}}
- else
- switch$2 = 1;
- if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}}
- return caml_string_of_bytes(res)}
- function fix_int_precision(prec,str)
- {var
- prec$0=abs(prec),
- len=caml_ml_string_length(str),
- c=caml_string_get(str,0),
- switch$0=0;
- if(58 <= c)
- {if(71 <= c)
- {if(! (5 < c - 97 >>> 0))switch$0 = 1}
- else
- if(65 <= c)switch$0 = 1}
- else
- {var switch$1=0;
- if(32 !== c)
- if(43 <= c)
- switch(c - 43 | 0)
- {case 5:
- if(len < (prec$0 + 2 | 0) && 1 < len)
- {var switch$2=0;
- if
- (120
- ===
- caml_string_get(str,1)
- ||
- 88
- ===
- caml_string_get(str,1))
- switch$2 = 1;
- if(switch$2)
- {var res$1=make$0(prec$0 + 2 | 0,48);
- caml_bytes_set(res$1,1,caml_string_get(str,1));
- blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0);
- return caml_string_of_bytes(res$1)}}
- switch$0 = 1;
- switch$1 = 1;
- break;
- case 0:
- case 2:break;
- case 1:
- case 3:
- case 4:switch$1 = 1;break;
- default:switch$0 = 1;switch$1 = 1}
- else
- switch$1 = 1;
- if(! switch$1 && len < (prec$0 + 1 | 0))
- {var res$0=make$0(prec$0 + 1 | 0,48);
- caml_bytes_set(res$0,0,c);
- blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0);
- return caml_string_of_bytes(res$0)}}
- if(switch$0 && len < prec$0)
- {var res=make$0(prec$0,48);
- blit$0(str,0,res,prec$0 - len | 0,len);
- return caml_string_of_bytes(res)}
- return str}
- function string_to_caml_string(str)
- {var
- str$0=escaped$1(str),
- l=caml_ml_string_length(str$0),
- res=make$0(l + 2 | 0,34);
- caml_blit_string(str$0,0,res,1,l);
- return caml_string_of_bytes(res)}
- function format_of_fconv(fconv,prec)
- {var
- prec$0=abs(prec),
- symb=char_of_fconv(_aq_,fconv),
- buf=buffer_create(16);
- buffer_add_char(buf,37);
- bprint_fconv_flag(buf,fconv);
- buffer_add_char(buf,46);
- buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0));
- buffer_add_char(buf,symb);
- return buffer_contents(buf)}
- function transform_int_alt(iconv,s)
- {if(13 <= iconv)
- {var n=[0,0],_sX_=caml_ml_string_length(s) - 1 | 0,_sW_=0;
- if(! (_sX_ < 0))
- {var i$0=_sW_;
- for(;;)
- {var match=caml_string_unsafe_get(s,i$0);
- if(! (9 < match - 48 >>> 0))n[1]++;
- var _s1_=i$0 + 1 | 0;
- if(_sX_ !== i$0){var i$0=_s1_;continue}
- break}}
- var
- digits=n[1],
- buf=
- caml_create_bytes
- (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0),
- pos=[0,0],
- put=function(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0},
- left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0],
- _sZ_=caml_ml_string_length(s) - 1 | 0,
- _sY_=0;
- if(! (_sZ_ < 0))
- {var i=_sY_;
- for(;;)
- {var c=caml_string_unsafe_get(s,i);
- if(9 < c - 48 >>> 0)
- put(c);
- else
- {if(0 === left[1]){put(95);left[1] = 3}left[1] += -1;put(c)}
- var _s0_=i + 1 | 0;
- if(_sZ_ !== i){var i=_s0_;continue}
- break}}
- return caml_string_of_bytes(buf)}
- return s}
- function convert_int(iconv,n)
- {switch(iconv)
- {case 1:var _sV_=cst_d$3;break;
- case 2:var _sV_=cst_d$4;break;
- case 4:var _sV_=cst_i$1;break;
- case 5:var _sV_=cst_i$2;break;
- case 6:var _sV_=cst_x;break;
- case 7:var _sV_=cst_x$0;break;
- case 8:var _sV_=cst_X$0;break;
- case 9:var _sV_=cst_X$1;break;
- case 10:var _sV_=cst_o;break;
- case 11:var _sV_=cst_o$0;break;
- case 0:
- case 13:var _sV_=cst_d$2;break;
- case 3:
- case 14:var _sV_=cst_i$0;break;
- default:var _sV_=cst_u}
- return transform_int_alt(iconv,caml_format_int(_sV_,n))}
- function convert_int32(iconv,n)
- {switch(iconv)
- {case 1:var _sU_=cst_ld$0;break;
- case 2:var _sU_=cst_ld$1;break;
- case 4:var _sU_=cst_li$1;break;
- case 5:var _sU_=cst_li$2;break;
- case 6:var _sU_=cst_lx;break;
- case 7:var _sU_=cst_lx$0;break;
- case 8:var _sU_=cst_lX;break;
- case 9:var _sU_=cst_lX$0;break;
- case 10:var _sU_=cst_lo;break;
- case 11:var _sU_=cst_lo$0;break;
- case 0:
- case 13:var _sU_=cst_ld;break;
- case 3:
- case 14:var _sU_=cst_li$0;break;
- default:var _sU_=cst_lu}
- return transform_int_alt(iconv,caml_format_int(_sU_,n))}
- function convert_nativeint(iconv,n)
- {switch(iconv)
- {case 1:var _sT_=cst_nd$0;break;
- case 2:var _sT_=cst_nd$1;break;
- case 4:var _sT_=cst_ni$1;break;
- case 5:var _sT_=cst_ni$2;break;
- case 6:var _sT_=cst_nx;break;
- case 7:var _sT_=cst_nx$0;break;
- case 8:var _sT_=cst_nX;break;
- case 9:var _sT_=cst_nX$0;break;
- case 10:var _sT_=cst_no;break;
- case 11:var _sT_=cst_no$0;break;
- case 0:
- case 13:var _sT_=cst_nd;break;
- case 3:
- case 14:var _sT_=cst_ni$0;break;
- default:var _sT_=cst_nu}
- return transform_int_alt(iconv,caml_format_int(_sT_,n))}
- function convert_int64(iconv,n)
- {switch(iconv)
- {case 1:var _sS_=cst_Ld$0;break;
- case 2:var _sS_=cst_Ld$1;break;
- case 4:var _sS_=cst_Li$1;break;
- case 5:var _sS_=cst_Li$2;break;
- case 6:var _sS_=cst_Lx;break;
- case 7:var _sS_=cst_Lx$0;break;
- case 8:var _sS_=cst_LX;break;
- case 9:var _sS_=cst_LX$0;break;
- case 10:var _sS_=cst_Lo;break;
- case 11:var _sS_=cst_Lo$0;break;
- case 0:
- case 13:var _sS_=cst_Ld;break;
- case 3:
- case 14:var _sS_=cst_Li$0;break;
- default:var _sS_=cst_Lu}
- return transform_int_alt(iconv,caml_int64_format(_sS_,n))}
- function convert_float(fconv,prec,x)
- {function hex(param)
- {switch(fconv[1])
- {case 0:var sign=45;break;
- case 1:var sign=43;break;
- default:var sign=32}
- return runtime.caml_hexstring_of_float(x,prec,sign)}
- function caml_special_val(str)
- {var match=runtime.caml_classify_float(x);
- return 3 === match
- ?x < 0.?cst_neg_infinity:cst_infinity
- :4 <= match?cst_nan:str}
- switch(fconv[2])
- {case 5:
- var
- str=caml_format_float(format_of_fconv(fconv,prec),x),
- len=caml_ml_string_length(str),
- i=0;
- for(;;)
- {if(i === len)
- var _sQ_=0;
- else
- {var match=caml_string_get(str,i),_sP_=match - 46 | 0,switch$0=0;
- if(23 < _sP_ >>> 0)
- {if(55 === _sP_)switch$0 = 1}
- else
- if(21 < _sP_ - 1 >>> 0)switch$0 = 1;
- if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue}
- var _sQ_=1}
- var _sR_=_sQ_?str:cat(str,cst$29);
- return caml_special_val(_sR_)}
- case 6:return hex(0);
- case 7:return uppercase_ascii$1(hex(0));
- case 8:return caml_special_val(hex(0));
- default:return caml_format_float(format_of_fconv(fconv,prec),x)}}
- function string_of_fmtty(fmtty)
- {var buf=buffer_create(16);
- bprint_fmtty(buf,fmtty);
- return buffer_contents(buf)}
- function make_printf$0(counter,k,acc,fmt)
- {var k$0=k,acc$0=acc,fmt$0=fmt;
- for(;;)
- if(typeof fmt$0 === "number")
- return caml_call1(k$0,acc$0);
- else
- switch(fmt$0[0])
- {case 0:
- var rest=fmt$0[1];
- return function(c)
- {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)};
- case 1:
- var rest$0=fmt$0[1];
- return function(c)
- {var
- str=escaped(c),
- l=caml_ml_string_length(str),
- res=make$0(l + 2 | 0,39);
- caml_blit_string(str,0,res,1,l);
- var new_acc=[4,acc$0,caml_string_of_bytes(res)];
- return make_printf(k$0,new_acc,rest$0)};
- case 2:
- var rest$1=fmt$0[2],pad=fmt$0[1];
- return make_padding(k$0,acc$0,rest$1,pad,function(str){return str});
- case 3:
- var rest$2=fmt$0[2],pad$0=fmt$0[1];
- return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string);
- case 4:
- var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1];
- return make_int_padding_precision
- (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv);
- case 5:
- var
- rest$4=fmt$0[4],
- prec$0=fmt$0[3],
- pad$2=fmt$0[2],
- iconv$0=fmt$0[1];
- return make_int_padding_precision
- (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0);
- case 6:
- var
- rest$5=fmt$0[4],
- prec$1=fmt$0[3],
- pad$3=fmt$0[2],
- iconv$1=fmt$0[1];
- return make_int_padding_precision
- (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1);
- case 7:
- var
- rest$6=fmt$0[4],
- prec$2=fmt$0[3],
- pad$4=fmt$0[2],
- iconv$2=fmt$0[1];
- return make_int_padding_precision
- (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2);
- case 8:
- var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1];
- if(typeof pad$5 === "number")
- {if(typeof prec$3 === "number")
- return prec$3
- ?function(p,x)
- {var str=convert_float(fconv,p,x);
- return make_printf(k$0,[4,acc$0,str],rest$7)}
- :function(x)
- {var
- str=
- convert_float(fconv,default_float_precision(fconv),x);
- return make_printf(k$0,[4,acc$0,str],rest$7)};
- var p=prec$3[1];
- return function(x)
- {var str=convert_float(fconv,p,x);
- return make_printf(k$0,[4,acc$0,str],rest$7)}}
- else
- {if(0 === pad$5[0])
- {var _sM_=pad$5[2],_sN_=pad$5[1];
- if(typeof prec$3 === "number")
- return prec$3
- ?function(p,x)
- {var str=fix_padding(_sN_,_sM_,convert_float(fconv,p,x));
- return make_printf(k$0,[4,acc$0,str],rest$7)}
- :function(x)
- {var
- str=convert_float(fconv,default_float_precision(fconv),x),
- str$0=fix_padding(_sN_,_sM_,str);
- return make_printf(k$0,[4,acc$0,str$0],rest$7)};
- var p$0=prec$3[1];
- return function(x)
- {var str=fix_padding(_sN_,_sM_,convert_float(fconv,p$0,x));
- return make_printf(k$0,[4,acc$0,str],rest$7)}}
- var _sO_=pad$5[1];
- if(typeof prec$3 === "number")
- return prec$3
- ?function(w,p,x)
- {var str=fix_padding(_sO_,w,convert_float(fconv,p,x));
- return make_printf(k$0,[4,acc$0,str],rest$7)}
- :function(w,x)
- {var
- str=convert_float(fconv,default_float_precision(fconv),x),
- str$0=fix_padding(_sO_,w,str);
- return make_printf(k$0,[4,acc$0,str$0],rest$7)};
- var p$1=prec$3[1];
- return function(w,x)
- {var str=fix_padding(_sO_,w,convert_float(fconv,p$1,x));
- return make_printf(k$0,[4,acc$0,str],rest$7)}}
- case 9:
- var rest$8=fmt$0[2],pad$6=fmt$0[1];
- return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool);
- case 10:
- var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1;
- continue;
- case 11:
- var
- fmt$2=fmt$0[2],
- str=fmt$0[1],
- acc$2=[2,acc$0,str],
- acc$0=acc$2,
- fmt$0=fmt$2;
- continue;
- case 12:
- var
- fmt$3=fmt$0[2],
- chr=fmt$0[1],
- acc$3=[3,acc$0,chr],
- acc$0=acc$3,
- fmt$0=fmt$3;
- continue;
- case 13:
- var
- rest$9=fmt$0[3],
- sub_fmtty=fmt$0[2],
- ty=string_of_fmtty(sub_fmtty);
- return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)};
- case 14:
- var rest$10=fmt$0[3],fmtty=fmt$0[2];
- return function(param)
- {var fmt=param[1];
- return make_printf
- (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))};
- case 15:
- var rest$11=fmt$0[1];
- return function(f,x)
- {return make_printf
- (k$0,
- [6,acc$0,function(o){return caml_call2(f,o,x)}],
- rest$11)};
- case 16:
- var rest$12=fmt$0[1];
- return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)};
- case 17:
- var
- fmt$4=fmt$0[2],
- fmting_lit=fmt$0[1],
- acc$4=[0,acc$0,fmting_lit],
- acc$0=acc$4,
- fmt$0=fmt$4;
- continue;
- case 18:
- var _sK_=fmt$0[1];
- if(0 === _sK_[0])
- {var
- rest$13=fmt$0[2],
- match=_sK_[1],
- fmt$5=match[1],
- k$3=
- function(acc,k,rest)
- {function k$0(kacc)
- {return make_printf(k,[1,acc,[0,kacc]],rest)}
- return k$0},
- k$1=k$3(acc$0,k$0,rest$13),
- k$0=k$1,
- acc$0=0,
- fmt$0=fmt$5;
- continue}
- var
- rest$14=fmt$0[2],
- match$0=_sK_[1],
- fmt$6=match$0[1],
- k$4=
- function(acc,k,rest)
- {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)}
- return k$0},
- k$2=k$4(acc$0,k$0,rest$14),
- k$0=k$2,
- acc$0=0,
- fmt$0=fmt$6;
- continue;
- case 19:throw [0,Assert_failure,_ar_];
- case 20:
- var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion];
- return function(param){return make_printf(k$0,new_acc,rest$15)};
- case 21:
- var rest$16=fmt$0[2];
- return function(n)
- {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)];
- return make_printf(k$0,new_acc,rest$16)};
- case 22:
- var rest$17=fmt$0[1];
- return function(c)
- {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)};
- case 23:
- var rest$18=fmt$0[2],ign=fmt$0[1];
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)}
- return caml_trampoline_return
- (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]);
- default:
- var
- rest$19=fmt$0[3],
- f=fmt$0[2],
- arity=fmt$0[1],
- _sL_=caml_call1(f,0);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_sL_)}
- return caml_trampoline_return
- (make_custom$0,[0,k$0,acc$0,rest$19,arity,_sL_])}}
- function make_ignored_param$0(counter,k,acc,ign,fmt)
- {if(typeof ign === "number")
- switch(ign)
- {case 0:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_invalid_arg(counter$0,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 1:
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return make_invalid_arg(counter$1,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 2:throw [0,Assert_failure,_as_];
- default:
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return make_invalid_arg(counter$2,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}
- else
- switch(ign[0])
- {case 0:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return make_invalid_arg(counter$3,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 1:
- if(counter < 50)
- {var counter$4=counter + 1 | 0;
- return make_invalid_arg(counter$4,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 2:
- if(counter < 50)
- {var counter$5=counter + 1 | 0;
- return make_invalid_arg(counter$5,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 3:
- if(counter < 50)
- {var counter$6=counter + 1 | 0;
- return make_invalid_arg(counter$6,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 4:
- if(counter < 50)
- {var counter$7=counter + 1 | 0;
- return make_invalid_arg(counter$7,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 5:
- if(counter < 50)
- {var counter$8=counter + 1 | 0;
- return make_invalid_arg(counter$8,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 6:
- if(counter < 50)
- {var counter$9=counter + 1 | 0;
- return make_invalid_arg(counter$9,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 7:
- if(counter < 50)
- {var counter$10=counter + 1 | 0;
- return make_invalid_arg(counter$10,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 8:
- if(counter < 50)
- {var counter$11=counter + 1 | 0;
- return make_invalid_arg(counter$11,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- case 9:
- var fmtty=ign[2];
- if(counter < 50)
- {var counter$14=counter + 1 | 0;
- return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)}
- return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]);
- case 10:
- if(counter < 50)
- {var counter$12=counter + 1 | 0;
- return make_invalid_arg(counter$12,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
- default:
- if(counter < 50)
- {var counter$13=counter + 1 | 0;
- return make_invalid_arg(counter$13,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}}
- function make_from_fmtty$0(counter,k,acc,fmtty,fmt)
- {if(typeof fmtty === "number")
- {if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_invalid_arg(counter$0,k,acc,fmt)}
- return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}
- else
- switch(fmtty[0])
- {case 0:
- var rest=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest,fmt)};
- case 1:
- var rest$0=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$0,fmt)};
- case 2:
- var rest$1=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$1,fmt)};
- case 3:
- var rest$2=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$2,fmt)};
- case 4:
- var rest$3=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$3,fmt)};
- case 5:
- var rest$4=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$4,fmt)};
- case 6:
- var rest$5=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$5,fmt)};
- case 7:
- var rest$6=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$6,fmt)};
- case 8:
- var rest$7=fmtty[2];
- return function(param){return make_from_fmtty(k,acc,rest$7,fmt)};
- case 9:
- var
- rest$8=fmtty[3],
- ty2=fmtty[2],
- ty1=fmtty[1],
- ty=trans(symm(ty1),ty2);
- return function(param)
- {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)};
- case 10:
- var rest$9=fmtty[1];
- return function(param,_sJ_)
- {return make_from_fmtty(k,acc,rest$9,fmt)};
- case 11:
- var rest$10=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$10,fmt)};
- case 12:
- var rest$11=fmtty[1];
- return function(param){return make_from_fmtty(k,acc,rest$11,fmt)};
- case 13:throw [0,Assert_failure,_at_];
- default:throw [0,Assert_failure,_au_]}}
- function make_invalid_arg(counter,k,acc,fmt)
- {var _sI_=[8,acc,cst_Printf_bad_conversion$0];
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_printf$0(counter$0,k,_sI_,fmt)}
- return caml_trampoline_return(make_printf$0,[0,k,_sI_,fmt])}
- function make_custom$0(counter,k,acc,rest,arity,f)
- {if(arity)
- {var arity$0=arity[1];
- return function(x)
- {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}}
- var _sH_=[4,acc,f];
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_printf$0(counter$0,k,_sH_,rest)}
- return caml_trampoline_return(make_printf$0,[0,k,_sH_,rest])}
- function make_printf(k,acc,fmt)
- {return caml_trampoline(make_printf$0(0,k,acc,fmt))}
- function make_ignored_param(k,acc,ign,fmt)
- {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))}
- function make_from_fmtty(k,acc,fmtty,fmt)
- {return caml_trampoline(make_from_fmtty$0(0,k,acc,fmtty,fmt))}
- function make_custom(k,acc,rest,arity,f)
- {return caml_trampoline(make_custom$0(0,k,acc,rest,arity,f))}
- function make_padding(k,acc,fmt,pad,trans)
- {if(typeof pad === "number")
- return function(x)
- {var new_acc=[4,acc,caml_call1(trans,x)];
- return make_printf(k,new_acc,fmt)};
- else
- {if(0 === pad[0])
- {var width=pad[2],padty=pad[1];
- return function(x)
- {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))];
- return make_printf(k,new_acc,fmt)}}
- var padty$0=pad[1];
- return function(w,x)
- {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))];
- return make_printf(k,new_acc,fmt)}}}
- function make_int_padding_precision(k,acc,fmt,pad,prec,trans,iconv)
- {if(typeof pad === "number")
- {if(typeof prec === "number")
- return prec
- ?function(p,x)
- {var str=fix_int_precision(p,caml_call2(trans,iconv,x));
- return make_printf(k,[4,acc,str],fmt)}
- :function(x)
- {var str=caml_call2(trans,iconv,x);
- return make_printf(k,[4,acc,str],fmt)};
- var p=prec[1];
- return function(x)
- {var str=fix_int_precision(p,caml_call2(trans,iconv,x));
- return make_printf(k,[4,acc,str],fmt)}}
- else
- {if(0 === pad[0])
- {var _sE_=pad[2],_sF_=pad[1];
- if(typeof prec === "number")
- return prec
- ?function(p,x)
- {var
- str=
- fix_padding
- (_sF_,_sE_,fix_int_precision(p,caml_call2(trans,iconv,x)));
- return make_printf(k,[4,acc,str],fmt)}
- :function(x)
- {var str=fix_padding(_sF_,_sE_,caml_call2(trans,iconv,x));
- return make_printf(k,[4,acc,str],fmt)};
- var p$0=prec[1];
- return function(x)
- {var
- str=
- fix_padding
- (_sF_,_sE_,fix_int_precision(p$0,caml_call2(trans,iconv,x)));
- return make_printf(k,[4,acc,str],fmt)}}
- var _sG_=pad[1];
- if(typeof prec === "number")
- return prec
- ?function(w,p,x)
- {var
- str=
- fix_padding
- (_sG_,w,fix_int_precision(p,caml_call2(trans,iconv,x)));
- return make_printf(k,[4,acc,str],fmt)}
- :function(w,x)
- {var str=fix_padding(_sG_,w,caml_call2(trans,iconv,x));
- return make_printf(k,[4,acc,str],fmt)};
- var p$1=prec[1];
- return function(w,x)
- {var
- str=
- fix_padding
- (_sG_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x)));
- return make_printf(k,[4,acc,str],fmt)}}}
- function make_iprintf$0(counter,k,o,fmt)
- {var k$0=k,fmt$0=fmt;
- for(;;)
- if(typeof fmt$0 === "number")
- return caml_call1(k$0,o);
- else
- switch(fmt$0[0])
- {case 0:
- var rest=fmt$0[1],_rV_=make_iprintf(k$0,o,rest);
- return function(_sD_){return _rV_};
- case 1:
- var rest$0=fmt$0[1],_rW_=make_iprintf(k$0,o,rest$0);
- return function(_sC_){return _rW_};
- case 2:
- var _rX_=fmt$0[1];
- if(typeof _rX_ === "number")
- {var rest$1=fmt$0[2],_rY_=make_iprintf(k$0,o,rest$1);
- return function(_sy_){return _rY_}}
- else
- {if(0 === _rX_[0])
- {var rest$2=fmt$0[2],_rZ_=make_iprintf(k$0,o,rest$2);
- return function(_sB_){return _rZ_}}
- var
- rest$3=fmt$0[2],
- _r0_=make_iprintf(k$0,o,rest$3),
- _r1_=function(_sA_){return _r0_};
- return function(_sz_){return _r1_}}
- case 3:
- var _r2_=fmt$0[1];
- if(typeof _r2_ === "number")
- {var rest$4=fmt$0[2],_r3_=make_iprintf(k$0,o,rest$4);
- return function(_su_){return _r3_}}
- else
- {if(0 === _r2_[0])
- {var rest$5=fmt$0[2],_r4_=make_iprintf(k$0,o,rest$5);
- return function(_sx_){return _r4_}}
- var
- rest$6=fmt$0[2],
- _r5_=make_iprintf(k$0,o,rest$6),
- _r6_=function(_sw_){return _r5_};
- return function(_sv_){return _r6_}}
- case 4:
- var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2];
- return fn_of_padding_precision(k$0,o,rest$7,pad,prec);
- case 5:
- var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2];
- return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0);
- case 6:
- var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2];
- return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1);
- case 7:
- var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2];
- return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2);
- case 8:
- var rest$11=fmt$0[4],prec$3=fmt$0[3],pad$3=fmt$0[2];
- return fn_of_padding_precision(k$0,o,rest$11,pad$3,prec$3);
- case 9:
- var _r7_=fmt$0[1];
- if(typeof _r7_ === "number")
- {var rest$12=fmt$0[2],_r8_=make_iprintf(k$0,o,rest$12);
- return function(_sq_){return _r8_}}
- else
- {if(0 === _r7_[0])
- {var rest$13=fmt$0[2],_r9_=make_iprintf(k$0,o,rest$13);
- return function(_st_){return _r9_}}
- var
- rest$14=fmt$0[2],
- _r__=make_iprintf(k$0,o,rest$14),
- _r$_=function(_ss_){return _r__};
- return function(_sr_){return _r$_}}
- case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue;
- case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue;
- case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue;
- case 13:
- var rest$15=fmt$0[3],_sa_=make_iprintf(k$0,o,rest$15);
- return function(_sp_){return _sa_};
- case 14:
- var rest$16=fmt$0[3],fmtty=fmt$0[2];
- return function(param)
- {var fmt=param[1];
- return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))};
- case 15:
- var
- rest$17=fmt$0[1],
- _sb_=make_iprintf(k$0,o,rest$17),
- _sc_=function(_so_){return _sb_};
- return function(_sn_){return _sc_};
- case 16:
- var rest$18=fmt$0[1],_sd_=make_iprintf(k$0,o,rest$18);
- return function(_sm_){return _sd_};
- case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue;
- case 18:
- var _se_=fmt$0[1];
- if(0 === _se_[0])
- {var
- rest$19=fmt$0[2],
- match=_se_[1],
- fmt$5=match[1],
- k$3=
- function(k,rest)
- {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0},
- k$1=k$3(k$0,rest$19),
- k$0=k$1,
- fmt$0=fmt$5;
- continue}
- var
- rest$20=fmt$0[2],
- match$0=_se_[1],
- fmt$6=match$0[1],
- k$4=
- function(k,rest)
- {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0},
- k$2=k$4(k$0,rest$20),
- k$0=k$2,
- fmt$0=fmt$6;
- continue;
- case 19:throw [0,Assert_failure,_av_];
- case 20:
- var rest$21=fmt$0[3],_sf_=make_iprintf(k$0,o,rest$21);
- return function(_sl_){return _sf_};
- case 21:
- var rest$22=fmt$0[2],_sg_=make_iprintf(k$0,o,rest$22);
- return function(_sk_){return _sg_};
- case 22:
- var rest$23=fmt$0[1],_sh_=make_iprintf(k$0,o,rest$23);
- return function(_sj_){return _sh_};
- case 23:
- var rest$24=fmt$0[2],ign=fmt$0[1],_si_=0;
- return make_ignored_param
- (function(param){return caml_call1(k$0,o)},_si_,ign,rest$24);
- default:
- var rest$25=fmt$0[3],arity=fmt$0[1];
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)}
- return caml_trampoline_return
- (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}}
- function fn_of_custom_arity$0(counter,k,o,fmt,param)
- {if(param)
- {var arity=param[1],_rT_=fn_of_custom_arity(k,o,fmt,arity);
- return function(_rU_){return _rT_}}
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return make_iprintf$0(counter$0,k,o,fmt)}
- return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])}
- function make_iprintf(k,o,fmt)
- {return caml_trampoline(make_iprintf$0(0,k,o,fmt))}
- function fn_of_custom_arity(k,o,fmt,param)
- {return caml_trampoline(fn_of_custom_arity$0(0,k,o,fmt,param))}
- function fn_of_padding_precision(k,o,fmt,pad,prec)
- {if(typeof pad === "number")
- {if(typeof prec === "number")
- {if(prec)
- {var _rp_=make_iprintf(k,o,fmt),_rq_=function(_rH_){return _rp_};
- return function(_rG_){return _rq_}}
- var _rr_=make_iprintf(k,o,fmt);
- return function(_rF_){return _rr_}}
- var _rs_=make_iprintf(k,o,fmt);
- return function(_rE_){return _rs_}}
- else
- {if(0 === pad[0])
- {if(typeof prec === "number")
- {if(prec)
- {var _rt_=make_iprintf(k,o,fmt),_ru_=function(_rS_){return _rt_};
- return function(_rR_){return _ru_}}
- var _rv_=make_iprintf(k,o,fmt);
- return function(_rQ_){return _rv_}}
- var _rw_=make_iprintf(k,o,fmt);
- return function(_rP_){return _rw_}}
- if(typeof prec === "number")
- {if(prec)
- {var
- _rx_=make_iprintf(k,o,fmt),
- _ry_=function(_rO_){return _rx_},
- _rz_=function(_rN_){return _ry_};
- return function(_rM_){return _rz_}}
- var _rA_=make_iprintf(k,o,fmt),_rB_=function(_rL_){return _rA_};
- return function(_rK_){return _rB_}}
- var _rC_=make_iprintf(k,o,fmt),_rD_=function(_rJ_){return _rC_};
- return function(_rI_){return _rD_}}}
- function output_acc(o,acc)
- {var acc$0=acc;
- for(;;)
- if(typeof acc$0 === "number")
- return 0;
- else
- switch(acc$0[0])
- {case 0:
- var
- fmting_lit=acc$0[2],
- p=acc$0[1],
- s=string_of_formatting_lit(fmting_lit);
- output_acc(o,p);
- return output_string(o,s);
- case 1:
- var _rn_=acc$0[2],_ro_=acc$0[1];
- if(0 === _rn_[0])
- {var acc$1=_rn_[1];
- output_acc(o,_ro_);
- output_string(o,cst$30);
- var acc$0=acc$1;
- continue}
- var acc$2=_rn_[1];
- output_acc(o,_ro_);
- output_string(o,cst$31);
- var acc$0=acc$2;
- continue;
- case 6:
- var f=acc$0[2],p$2=acc$0[1];
- output_acc(o,p$2);
- return caml_call1(f,o);
- case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o);
- case 8:
- var msg=acc$0[2],p$4=acc$0[1];
- output_acc(o,p$4);
- return invalid_arg(msg);
- case 2:
- case 4:
- var s$0=acc$0[2],p$0=acc$0[1];
- output_acc(o,p$0);
- return output_string(o,s$0);
- default:
- var c=acc$0[2],p$1=acc$0[1];
- output_acc(o,p$1);
- return caml_ml_output_char(o,c)}}
- function bufput_acc(b,acc)
- {var acc$0=acc;
- for(;;)
- if(typeof acc$0 === "number")
- return 0;
- else
- switch(acc$0[0])
- {case 0:
- var
- fmting_lit=acc$0[2],
- p=acc$0[1],
- s=string_of_formatting_lit(fmting_lit);
- bufput_acc(b,p);
- return add_string(b,s);
- case 1:
- var _rl_=acc$0[2],_rm_=acc$0[1];
- if(0 === _rl_[0])
- {var acc$1=_rl_[1];
- bufput_acc(b,_rm_);
- add_string(b,cst$32);
- var acc$0=acc$1;
- continue}
- var acc$2=_rl_[1];
- bufput_acc(b,_rm_);
- add_string(b,cst$33);
- var acc$0=acc$2;
- continue;
- case 6:
- var f=acc$0[2],p$2=acc$0[1];
- bufput_acc(b,p$2);
- return caml_call1(f,b);
- case 7:var acc$3=acc$0[1],acc$0=acc$3;continue;
- case 8:
- var msg=acc$0[2],p$3=acc$0[1];
- bufput_acc(b,p$3);
- return invalid_arg(msg);
- case 2:
- case 4:
- var s$0=acc$0[2],p$0=acc$0[1];
- bufput_acc(b,p$0);
- return add_string(b,s$0);
- default:
- var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}}
- function strput_acc(b,acc)
- {var acc$0=acc;
- for(;;)
- if(typeof acc$0 === "number")
- return 0;
- else
- switch(acc$0[0])
- {case 0:
- var
- fmting_lit=acc$0[2],
- p=acc$0[1],
- s=string_of_formatting_lit(fmting_lit);
- strput_acc(b,p);
- return add_string(b,s);
- case 1:
- var _rj_=acc$0[2],_rk_=acc$0[1];
- if(0 === _rj_[0])
- {var acc$1=_rj_[1];
- strput_acc(b,_rk_);
- add_string(b,cst$34);
- var acc$0=acc$1;
- continue}
- var acc$2=_rj_[1];
- strput_acc(b,_rk_);
- add_string(b,cst$35);
- var acc$0=acc$2;
- continue;
- case 6:
- var f=acc$0[2],p$2=acc$0[1];
- strput_acc(b,p$2);
- return add_string(b,caml_call1(f,0));
- case 7:var acc$3=acc$0[1],acc$0=acc$3;continue;
- case 8:
- var msg=acc$0[2],p$3=acc$0[1];
- strput_acc(b,p$3);
- return invalid_arg(msg);
- case 2:
- case 4:
- var s$0=acc$0[2],p$0=acc$0[1];
- strput_acc(b,p$0);
- return add_string(b,s$0);
- default:
- var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}}
- function failwith_message(param)
- {var fmt=param[1],buf=create$2(256);
- function k(acc){strput_acc(buf,acc);return failwith(contents(buf))}
- return make_printf(k,0,fmt)}
- function open_box_of_string(str)
- {if(caml_string_equal(str,cst$36))return _aw_;
- var len=caml_ml_string_length(str);
- function invalid_box(param)
- {return caml_call1(failwith_message(_ax_),str)}
- function parse_spaces(i)
- {var i$0=i;
- for(;;)
- {if(i$0 === len)return i$0;
- var match=caml_string_get(str,i$0);
- if(9 !== match && 32 !== match)return i$0;
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function parse_lword(i,j)
- {var j$0=j;
- for(;;)
- {if(j$0 === len)return j$0;
- var match=caml_string_get(str,j$0);
- if(25 < match - 97 >>> 0)return j$0;
- var j$1=j$0 + 1 | 0,j$0=j$1;
- continue}}
- function parse_int(i,j)
- {var j$0=j;
- for(;;)
- {if(j$0 === len)return j$0;
- var match=caml_string_get(str,j$0),switch$0=0;
- if(48 <= match)
- {if(! (58 <= match))switch$0 = 1}
- else
- if(45 === match)switch$0 = 1;
- if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue}
- return j$0}}
- var
- wstart=parse_spaces(0),
- wend=parse_lword(wstart,wstart),
- box_name=sub$0(str,wstart,wend - wstart | 0),
- nstart=parse_spaces(wend),
- nend=parse_int(nstart,nstart);
- if(nstart === nend)
- var indent=0;
- else
- try
- {var
- _rh_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)),
- indent=_rh_}
- catch(_ri_)
- {_ri_ = caml_wrap_exception(_ri_);
- if(_ri_[1] !== Failure)throw _ri_;
- var indent=invalid_box(0)}
- var exp_end=parse_spaces(nend);
- if(exp_end !== len)invalid_box(0);
- var switch$0=0;
- if
- (caml_string_notequal(box_name,cst$37)
- &&
- caml_string_notequal(box_name,cst_b$0))
- var
- box_type=
- caml_string_notequal(box_name,cst_h)
- ?caml_string_notequal(box_name,cst_hov)
- ?caml_string_notequal(box_name,cst_hv)
- ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1
- :2
- :3
- :0;
- else
- switch$0 = 1;
- if(switch$0)var box_type=4;
- return [0,indent,box_type]}
- function make_padding_fmt_ebb(pad,fmt)
- {if(typeof pad === "number")
- return [0,0,fmt];
- else
- {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]}
- var s$0=pad[1];
- return [0,[1,s$0],fmt]}}
- function make_padprec_fmt_ebb(pad,prec,fmt)
- {if(typeof prec === "number")
- var match=prec?[0,1,fmt]:[0,0,fmt];
- else
- var p=prec[1],match=[0,[0,p],fmt];
- var prec$0=match[1];
- if(typeof pad === "number")
- return [0,0,prec$0,fmt];
- else
- {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]}
- var s$0=pad[1];
- return [0,[1,s$0],prec$0,fmt]}}
- function fmt_ebb_of_string(legacy_behavior,str)
- {if(legacy_behavior)
- var flag=legacy_behavior[1],legacy_behavior$0=flag;
- else
- var legacy_behavior$0=1;
- function invalid_format_message(str_ind,msg)
- {return caml_call3(failwith_message(_ay_),str,str_ind,msg)}
- function unexpected_end_of_format(end_ind)
- {return invalid_format_message(end_ind,cst_unexpected_end_of_format)}
- function invalid_format_without(str_ind,c,s)
- {return caml_call4(failwith_message(_az_),str,str_ind,c,s)}
- function expected_character(str_ind,expected,read)
- {return caml_call4(failwith_message(_aA_),str,str_ind,expected,read)}
- function add_literal(lit_start,str_ind,fmt)
- {var size=str_ind - lit_start | 0;
- return 0 === size
- ?[0,fmt]
- :1 === size
- ?[0,[12,caml_string_get(str,lit_start),fmt]]
- :[0,[11,sub$0(str,lit_start,size),fmt]]}
- function parse_positive(str_ind,end_ind,acc)
- {var str_ind$0=str_ind,acc$0=acc;
- for(;;)
- {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var c=caml_string_get(str,str_ind$0);
- if(9 < c - 48 >>> 0)return [0,str_ind$0,acc$0];
- var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0;
- if(max_string_length < acc$1)
- return caml_call3
- (failwith_message(_aR_),str,acc$1,max_string_length);
- var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1;
- continue}}
- function parse_integer(str_ind,end_ind)
- {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
- var match=caml_string_get(str,str_ind);
- if(48 <= match)
- {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)}
- else
- if(45 === match)
- {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind);
- var c=caml_string_get(str,str_ind + 1 | 0);
- if(9 < c - 48 >>> 0)
- return expected_character(str_ind + 1 | 0,cst_digit,c);
- var
- match$0=parse_positive(str_ind + 1 | 0,end_ind,0),
- n=match$0[2],
- next_ind=match$0[1];
- return [0,next_ind,- n | 0]}
- throw [0,Assert_failure,_aS_]}
- function parse_spaces(str_ind,end_ind)
- {var str_ind$0=str_ind;
- for(;;)
- {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- if(32 === caml_string_get(str,str_ind$0))
- {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue}
- return str_ind$0}}
- function incompatible_flag(pct_ind,str_ind,symb,option)
- {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0);
- return caml_call5
- (failwith_message(_aX_),str,pct_ind,option,symb,subfmt)}
- function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb)
- {var plus$0=plus,hash$0=hash,space$0=space;
- for(;;)
- {var switch$0=0;
- if(plus$0)
- {if(hash$0)
- switch$0 = 1;
- else
- if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}}
- else
- if(hash$0)
- if(space$0)
- switch$0 = 1;
- else
- {var switcher$0=symb - 88 | 0;
- if(32 < switcher$0 >>> 0)
- switch$0 = 1;
- else
- switch(switcher$0)
- {case 0:return 9;
- case 12:return 13;
- case 17:return 14;
- case 23:return 11;
- case 29:return 15;
- case 32:return 7;
- default:switch$0 = 1}}
- else
- if(space$0)
- {if(100 === symb)return 2;if(105 === symb)return 5}
- else
- {var switcher$1=symb - 88 | 0;
- if(! (32 < switcher$1 >>> 0))
- switch(switcher$1)
- {case 0:return 8;
- case 12:return 0;
- case 17:return 3;
- case 23:return 10;
- case 29:return 12;
- case 32:return 6
- }}
- if(switch$0)
- {var switcher=symb - 88 | 0;
- if(! (32 < switcher >>> 0))
- switch(switcher)
- {case 0:if(legacy_behavior$0)return 9;break;
- case 23:if(legacy_behavior$0)return 11;break;
- case 32:if(legacy_behavior$0)return 7;break;
- case 12:
- case 17:
- case 29:
- if(legacy_behavior$0){var hash$0=0;continue}
- return incompatible_flag(pct_ind,str_ind,symb,cst$49)
- }}
- if(plus$0)
- {if(space$0)
- {if(legacy_behavior$0){var space$0=0;continue}
- return incompatible_flag(pct_ind,str_ind,32,cst$46)}
- if(legacy_behavior$0){var plus$0=0;continue}
- return incompatible_flag(pct_ind,str_ind,symb,cst$47)}
- if(space$0)
- {if(legacy_behavior$0){var space$0=0;continue}
- return incompatible_flag(pct_ind,str_ind,symb,cst$48)}
- throw [0,Assert_failure,_aV_]}}
- function search_subformat_end(str_ind,end_ind,c)
- {var str_ind$0=str_ind;
- for(;;)
- {if(str_ind$0 === end_ind)
- caml_call3(failwith_message(_aT_),str,c,end_ind);
- var match=caml_string_get(str,str_ind$0);
- if(37 === match)
- {if((str_ind$0 + 1 | 0) === end_ind)
- unexpected_end_of_format(end_ind);
- if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0;
- var match$0=caml_string_get(str,str_ind$0 + 1 | 0);
- if(95 <= match$0)
- {if(123 <= match$0)
- {if(! (126 <= match$0))
- switch(match$0 - 123 | 0)
- {case 0:
- var
- sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125),
- str_ind$2=sub_end + 2 | 0,
- str_ind$0=str_ind$2;
- continue;
- case 1:break;
- default:
- return expected_character
- (str_ind$0 + 1 | 0,cst_character,125)}}
- else
- if(! (96 <= match$0))
- {if((str_ind$0 + 2 | 0) === end_ind)
- unexpected_end_of_format(end_ind);
- var match$1=caml_string_get(str,str_ind$0 + 2 | 0);
- if(40 === match$1)
- {var
- sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41),
- str_ind$3=sub_end$0 + 2 | 0,
- str_ind$0=str_ind$3;
- continue}
- if(123 === match$1)
- {var
- sub_end$1=
- search_subformat_end(str_ind$0 + 3 | 0,end_ind,125),
- str_ind$4=sub_end$1 + 2 | 0,
- str_ind$0=str_ind$4;
- continue}
- var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5;
- continue}}
- else
- {if(40 === match$0)
- {var
- sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41),
- str_ind$6=sub_end$2 + 2 | 0,
- str_ind$0=str_ind$6;
- continue}
- if(41 === match$0)
- return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)}
- var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1;
- continue}
- var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7;
- continue}}
- function parse_magic_size(str_ind,end_ind)
- {try
- {var
- str_ind_1=parse_spaces(str_ind,end_ind),
- match$2=caml_string_get(str,str_ind_1),
- switch$0=0;
- if(48 <= match$2)
- {if(! (58 <= match$2))switch$0 = 1}
- else
- if(45 === match$2)switch$0 = 1;
- if(switch$0)
- {var
- match$3=parse_integer(str_ind_1,end_ind),
- size=match$3[2],
- str_ind_2=match$3[1],
- str_ind_3=parse_spaces(str_ind_2,end_ind);
- if(62 !== caml_string_get(str,str_ind_3))throw Not_found;
- var
- s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0),
- _rf_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]}
- else
- var _rf_=0;
- var _re_=_rf_}
- catch(_rg_)
- {_rg_ = caml_wrap_exception(_rg_);
- if(_rg_ !== Not_found && _rg_[1] !== Failure)throw _rg_;
- var _re_=0}
- if(_re_)
- {var
- match=_re_[1],
- formatting_lit=match[2],
- next_ind=match[1],
- match$0=parse(next_ind,end_ind),
- fmt_rest=match$0[1];
- return [0,[17,formatting_lit,fmt_rest]]}
- var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1];
- return [0,[17,_aP_,fmt_rest$0]]}
- function parse_good_break(str_ind,end_ind)
- {try
- {var
- _q9_=str_ind === end_ind?1:0,
- _q__=_q9_ || (60 !== caml_string_get(str,str_ind)?1:0);
- if(_q__)throw Not_found;
- var
- str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind),
- match$0=caml_string_get(str,str_ind_1),
- switch$0=0;
- if(48 <= match$0)
- {if(! (58 <= match$0))switch$0 = 1}
- else
- if(45 === match$0)switch$0 = 1;
- if(! switch$0)throw Not_found;
- var
- match$1=parse_integer(str_ind_1,end_ind),
- width=match$1[2],
- str_ind_2=match$1[1],
- str_ind_3=parse_spaces(str_ind_2,end_ind),
- match$2=caml_string_get(str,str_ind_3),
- switcher=match$2 - 45 | 0,
- switch$1=0;
- if(12 < switcher >>> 0)
- if(17 === switcher)
- var
- s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0),
- _q$_=[0,s,width,0],
- _ra_=str_ind_3 + 1 | 0,
- formatting_lit$0=_q$_,
- next_ind=_ra_;
- else
- switch$1 = 1;
- else
- if(1 < switcher - 1 >>> 0)
- {var
- match$3=parse_integer(str_ind_3,end_ind),
- offset=match$3[2],
- str_ind_4=match$3[1],
- str_ind_5=parse_spaces(str_ind_4,end_ind);
- if(62 !== caml_string_get(str,str_ind_5))throw Not_found;
- var
- s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0),
- _rb_=[0,s$0,width,offset],
- _rc_=str_ind_5 + 1 | 0,
- formatting_lit$0=_rb_,
- next_ind=_rc_}
- else
- switch$1 = 1;
- if(switch$1)throw Not_found}
- catch(_rd_)
- {_rd_ = caml_wrap_exception(_rd_);
- if(_rd_ !== Not_found && _rd_[1] !== Failure)throw _rd_;
- var formatting_lit$0=formatting_lit,next_ind=str_ind}
- var match=parse(next_ind,end_ind),fmt_rest=match[1];
- return [0,[17,formatting_lit$0,fmt_rest]]}
- function parse_tag(is_open_tag,str_ind,end_ind)
- {try
- {if(str_ind === end_ind)throw Not_found;
- var match$0=caml_string_get(str,str_ind);
- if(60 === match$0)
- {var ind=index_from$0(str,str_ind + 1 | 0,62);
- if(end_ind <= ind)throw Not_found;
- var
- sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0),
- match$1=parse(ind + 1 | 0,end_ind),
- fmt_rest$0=match$1[1],
- match$2=parse(str_ind,ind + 1 | 0),
- sub_fmt=match$2[1],
- sub_format$0=[0,sub_fmt,sub_str],
- formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0],
- _q7_=[0,[18,formatting$0,fmt_rest$0]];
- return _q7_}
- throw Not_found}
- catch(_q8_)
- {_q8_ = caml_wrap_exception(_q8_);
- if(_q8_ === Not_found)
- {var
- match=parse(str_ind,end_ind),
- fmt_rest=match[1],
- formatting=is_open_tag?[0,sub_format]:[1,sub_format];
- return [0,[18,formatting,fmt_rest]]}
- throw _q8_}}
- function parse_flags(pct_ind,str_ind,end_ind,ign)
- {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0];
- function set_flag(str_ind,flag)
- {var _q4_=flag[1],_q5_=_q4_?1 - legacy_behavior$0:_q4_;
- if(_q5_)
- {var _q6_=caml_string_get(str,str_ind);
- caml_call3(failwith_message(_aB_),str,str_ind,_q6_)}
- flag[1] = 1;
- return 0}
- var str_ind$0=str_ind;
- for(;;)
- {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0;
- if(! (16 < switcher >>> 0))
- switch(switcher)
- {case 0:
- set_flag(str_ind$0,space);
- var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;
- continue;
- case 3:
- set_flag(str_ind$0,hash);
- var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2;
- continue;
- case 11:
- set_flag(str_ind$0,plus);
- var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3;
- continue;
- case 13:
- set_flag(str_ind$0,minus);
- var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4;
- continue;
- case 16:
- set_flag(str_ind$0,zero);
- var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5;
- continue
- }
- var
- _qZ_=space[1],
- _q0_=hash[1],
- _q1_=plus[1],
- _q2_=minus[1],
- _q3_=zero[1];
- if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var
- padty=
- _q3_
- ?_q2_
- ?legacy_behavior$0
- ?0
- :incompatible_flag(pct_ind,str_ind$0,45,cst_0)
- :2
- :_q2_?0:1,
- match$0=caml_string_get(str,str_ind$0);
- if(48 <= match$0)
- {if(! (58 <= match$0))
- {var
- match$1=parse_positive(str_ind$0,end_ind,0),
- width=match$1[2],
- new_ind=match$1[1];
- return parse_after_padding
- (pct_ind,
- new_ind,
- end_ind,
- _q2_,
- _q1_,
- _q0_,
- _qZ_,
- ign,
- [0,padty,width])}}
- else
- if(42 === match$0)
- return parse_after_padding
- (pct_ind,
- str_ind$0 + 1 | 0,
- end_ind,
- _q2_,
- _q1_,
- _q0_,
- _qZ_,
- ign,
- [1,padty]);
- switch(padty)
- {case 0:
- if(1 - legacy_behavior$0)
- invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding);
- return parse_after_padding
- (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,0);
- case 1:
- return parse_after_padding
- (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,0);
- default:
- return parse_after_padding
- (pct_ind,str_ind$0,end_ind,_q2_,_q1_,_q0_,_qZ_,ign,_aC_)}}}
- function parse_after_padding
- (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad)
- {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
- var symb=caml_string_get(str,str_ind);
- if(46 === symb)
- {var str_ind$0=str_ind + 1 | 0;
- if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var
- parse_literal=
- function(minus,str_ind)
- {var
- match=parse_positive(str_ind,end_ind,0),
- prec=match[2],
- new_ind=match[1];
- return parse_after_precision
- (pct_ind,
- new_ind,
- end_ind,
- minus,
- plus,
- hash,
- space,
- ign,
- pad,
- [0,prec])},
- symb$0=caml_string_get(str,str_ind$0);
- if(48 <= symb$0)
- {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)}
- else
- if(42 <= symb$0)
- switch(symb$0 - 42 | 0)
- {case 0:
- return parse_after_precision
- (pct_ind,
- str_ind$0 + 1 | 0,
- end_ind,
- minus,
- plus,
- hash,
- space,
- ign,
- pad,
- 1);
- case 1:
- case 3:
- if(legacy_behavior$0)
- {var
- _qY_=str_ind$0 + 1 | 0,
- minus$0=minus || (45 === symb$0?1:0);
- return parse_literal(minus$0,_qY_)}
- break
- }
- return legacy_behavior$0
- ?parse_after_precision
- (pct_ind,
- str_ind$0,
- end_ind,
- minus,
- plus,
- hash,
- space,
- ign,
- pad,
- _aD_)
- :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)}
- return parse_conversion
- (pct_ind,
- str_ind + 1 | 0,
- end_ind,
- plus,
- hash,
- space,
- ign,
- pad,
- 0,
- pad,
- symb)}
- function parse_after_precision
- (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec)
- {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
- function parse_conv(padprec)
- {return parse_conversion
- (pct_ind,
- str_ind + 1 | 0,
- end_ind,
- plus,
- hash,
- space,
- ign,
- pad,
- prec,
- padprec,
- caml_string_get(str,str_ind))}
- if(typeof pad === "number")
- {if(typeof prec === "number" && ! prec)return parse_conv(0);
- if(minus)
- {if(typeof prec === "number")return parse_conv(_aE_);
- var n=prec[1];
- return parse_conv([0,0,n])}
- if(typeof prec === "number")return parse_conv(_aF_);
- var n$0=prec[1];
- return parse_conv([0,1,n$0])}
- return parse_conv(pad)}
- function parse_conversion
- (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb)
- {var
- plus_used=[0,0],
- hash_used=[0,0],
- space_used=[0,0],
- ign_used=[0,0],
- pad_used=[0,0],
- prec_used=[0,0];
- function get_plus(param){plus_used[1] = 1;return plus}
- function get_hash(param){hash_used[1] = 1;return hash}
- function get_space(param){space_used[1] = 1;return space}
- function get_ign(param){ign_used[1] = 1;return ign}
- function get_pad(param){pad_used[1] = 1;return pad}
- function get_prec(param){prec_used[1] = 1;return prec}
- function get_padprec(param){pad_used[1] = 1;return padprec}
- function get_int_pad(param)
- {var pad=get_pad(0),match=get_prec(0);
- if(typeof match === "number" && ! match)return pad;
- if(typeof pad === "number")
- return 0;
- else
- {if(0 === pad[0])
- {if(2 <= pad[1])
- {var n=pad[2];
- return legacy_behavior$0
- ?[0,1,n]
- :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)}
- return pad}
- return 2 <= pad[1]
- ?legacy_behavior$0
- ?_aG_
- :incompatible_flag(pct_ind,str_ind,48,cst_precision$1)
- :pad}}
- function check_no_0(symb,pad)
- {if(typeof pad === "number")
- return pad;
- else
- {if(0 === pad[0])
- {if(2 <= pad[1])
- {var width=pad[2];
- return legacy_behavior$0
- ?[0,1,width]
- :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)}
- return pad}
- return 2 <= pad[1]
- ?legacy_behavior$0
- ?_aH_
- :incompatible_flag(pct_ind,str_ind,symb,cst_0$1)
- :pad}}
- function opt_of_pad(c,pad)
- {if(typeof pad === "number")
- return 0;
- else
- {if(0 === pad[0])
- switch(pad[1])
- {case 0:
- var width=pad[2];
- return legacy_behavior$0
- ?[0,width]
- :incompatible_flag(pct_ind,str_ind,c,cst$38);
- case 1:var width$0=pad[2];return [0,width$0];
- default:
- var width$1=pad[2];
- return legacy_behavior$0
- ?[0,width$1]
- :incompatible_flag(pct_ind,str_ind,c,cst_0$2)}
- return incompatible_flag(pct_ind,str_ind,c,cst$39)}}
- function get_pad_opt(c){return opt_of_pad(c,get_pad(0))}
- function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))}
- var switch$0=0;
- if(124 <= symb)
- switch$0 = 1;
- else
- switch(symb)
- {case 33:
- var
- match$6=parse(str_ind,end_ind),
- fmt_rest$5=match$6[1],
- fmt_result=[0,[10,fmt_rest$5]];
- break;
- case 40:
- var
- sub_end=search_subformat_end(str_ind,end_ind,41),
- match$8=parse(sub_end + 2 | 0,end_ind),
- fmt_rest$7=match$8[1],
- match$9=parse(str_ind,sub_end),
- sub_fmt=match$9[1],
- sub_fmtty=fmtty_of_fmt(sub_fmt);
- if(get_ign(0))
- var
- ignored$2=[9,get_pad_opt(95),sub_fmtty],
- _qv_=[0,[23,ignored$2,fmt_rest$7]];
- else
- var _qv_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]];
- var fmt_result=_qv_;
- break;
- case 44:var fmt_result=parse(str_ind,end_ind);break;
- case 67:
- var
- match$12=parse(str_ind,end_ind),
- fmt_rest$10=match$12[1],
- _qx_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]],
- fmt_result=_qx_;
- break;
- case 78:
- var
- match$16=parse(str_ind,end_ind),
- fmt_rest$14=match$16[1],
- counter$0=2;
- if(get_ign(0))
- var ignored$6=[11,counter$0],_qD_=[0,[23,ignored$6,fmt_rest$14]];
- else
- var _qD_=[0,[21,counter$0,fmt_rest$14]];
- var fmt_result=_qD_;
- break;
- case 83:
- var
- pad$6=check_no_0(symb,get_padprec(0)),
- match$17=parse(str_ind,end_ind),
- fmt_rest$15=match$17[1];
- if(get_ign(0))
- var
- ignored$7=[1,get_padprec_opt(95)],
- _qE_=[0,[23,ignored$7,fmt_rest$15]];
- else
- var
- match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15),
- fmt_rest$16=match$18[2],
- pad$7=match$18[1],
- _qE_=[0,[3,pad$7,fmt_rest$16]];
- var fmt_result=_qE_;
- break;
- case 91:
- if(str_ind === end_ind)unexpected_end_of_format(end_ind);
- var
- char_set=create_char_set(0),
- add_char=function(c){return add_in_char_set(char_set,c)},
- add_range=
- function(c$0,c)
- {if(! (c < c$0))
- {var i=c$0;
- for(;;)
- {add_in_char_set(char_set,char_of_int(i));
- var _qX_=i + 1 | 0;
- if(c !== i){var i=_qX_;continue}
- break}}
- return 0},
- fail_single_percent=
- function(str_ind)
- {return caml_call2(failwith_message(_aQ_),str,str_ind)},
- parse_char_set_content=
- function(counter,str_ind,end_ind)
- {var str_ind$0=str_ind;
- for(;;)
- {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var c=caml_string_get(str,str_ind$0);
- if(45 === c)
- {add_char(45);
- var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;
- continue}
- if(93 === c)return str_ind$0 + 1 | 0;
- var _qW_=str_ind$0 + 1 | 0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return parse_char_set_after_char$0(counter$0,_qW_,end_ind,c)}
- return caml_trampoline_return
- (parse_char_set_after_char$0,[0,_qW_,end_ind,c])}},
- parse_char_set_after_char$0=
- function(counter,str_ind,end_ind,c)
- {var str_ind$0=str_ind,c$0=c;
- for(;;)
- {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
- var c$1=caml_string_get(str,str_ind$0),switch$0=0;
- if(46 <= c$1)
- {if(64 === c$1)
- switch$0 = 1;
- else
- if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}}
- else
- if(37 === c$1)
- switch$0 = 1;
- else
- if(45 <= c$1)
- {var str_ind$2=str_ind$0 + 1 | 0;
- if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind);
- var c$2=caml_string_get(str,str_ind$2);
- if(37 === c$2)
- {if((str_ind$2 + 1 | 0) === end_ind)
- unexpected_end_of_format(end_ind);
- var c$3=caml_string_get(str,str_ind$2 + 1 | 0);
- if(37 !== c$3 && 64 !== c$3)
- return fail_single_percent(str_ind$2);
- add_range(c$0,c$3);
- var _qU_=str_ind$2 + 2 | 0;
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return parse_char_set_content(counter$2,_qU_,end_ind)}
- return caml_trampoline_return
- (parse_char_set_content,[0,_qU_,end_ind])}
- if(93 === c$2)
- {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0}
- add_range(c$0,c$2);
- var _qV_=str_ind$2 + 1 | 0;
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return parse_char_set_content(counter$1,_qV_,end_ind)}
- return caml_trampoline_return
- (parse_char_set_content,[0,_qV_,end_ind])}
- if(switch$0 && 37 === c$0)
- {add_char(c$1);
- var _qT_=str_ind$0 + 1 | 0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return parse_char_set_content(counter$0,_qT_,end_ind)}
- return caml_trampoline_return
- (parse_char_set_content,[0,_qT_,end_ind])}
- if(37 === c$0)fail_single_percent(str_ind$0);
- add_char(c$0);
- var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1;
- continue}},
- parse_char_set_after_char=
- function(str_ind,end_ind,c)
- {return caml_trampoline
- (parse_char_set_after_char$0(0,str_ind,end_ind,c))};
- if(str_ind === end_ind)unexpected_end_of_format(end_ind);
- var match$31=caml_string_get(str,str_ind);
- if(94 === match$31)
- var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0;
- else
- var reverse=0,str_ind$1=str_ind;
- if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind);
- var
- c=caml_string_get(str,str_ind$1),
- next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c),
- char_set$0=freeze_char_set(char_set),
- char_set$1=reverse?rev_char_set(char_set$0):char_set$0,
- match$21=parse(next_ind,end_ind),
- fmt_rest$19=match$21[1];
- if(get_ign(0))
- var
- ignored$9=[10,get_pad_opt(95),char_set$1],
- _qJ_=[0,[23,ignored$9,fmt_rest$19]];
- else
- var _qJ_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]];
- var fmt_result=_qJ_;
- break;
- case 97:
- var
- match$22=parse(str_ind,end_ind),
- fmt_rest$20=match$22[1],
- fmt_result=[0,[15,fmt_rest$20]];
- break;
- case 99:
- var
- char_format=
- function(fmt_rest)
- {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]},
- match$23=parse(str_ind,end_ind),
- fmt_rest$21=match$23[1],
- match$24=get_pad_opt(99);
- if(match$24)
- {if(0 === match$24[1])
- var
- _qK_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]],
- _qL_=_qK_;
- else
- var
- _qL_=
- legacy_behavior$0
- ?char_format(fmt_rest$21)
- :invalid_format_message
- (str_ind,cst_non_zero_widths_are_unsupp);
- var _qM_=_qL_}
- else
- var _qM_=char_format(fmt_rest$21);
- var fmt_result=_qM_;
- break;
- case 114:
- var
- match$25=parse(str_ind,end_ind),
- fmt_rest$22=match$25[1],
- _qN_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]],
- fmt_result=_qN_;
- break;
- case 115:
- var
- pad$9=check_no_0(symb,get_padprec(0)),
- match$26=parse(str_ind,end_ind),
- fmt_rest$23=match$26[1];
- if(get_ign(0))
- var
- ignored$10=[0,get_padprec_opt(95)],
- _qO_=[0,[23,ignored$10,fmt_rest$23]];
- else
- var
- match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23),
- fmt_rest$24=match$27[2],
- pad$10=match$27[1],
- _qO_=[0,[2,pad$10,fmt_rest$24]];
- var fmt_result=_qO_;
- break;
- case 116:
- var
- match$28=parse(str_ind,end_ind),
- fmt_rest$25=match$28[1],
- fmt_result=[0,[16,fmt_rest$25]];
- break;
- case 123:
- var
- sub_end$0=search_subformat_end(str_ind,end_ind,125),
- match$29=parse(str_ind,sub_end$0),
- sub_fmt$0=match$29[1],
- match$30=parse(sub_end$0 + 2 | 0,end_ind),
- fmt_rest$26=match$30[1],
- sub_fmtty$0=fmtty_of_fmt(sub_fmt$0);
- if(get_ign(0))
- var
- ignored$11=[8,get_pad_opt(95),sub_fmtty$0],
- _qP_=[0,[23,ignored$11,fmt_rest$26]];
- else
- var _qP_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]];
- var fmt_result=_qP_;
- break;
- case 66:
- case 98:
- var
- pad$3=check_no_0(symb,get_padprec(0)),
- match$10=parse(str_ind,end_ind),
- fmt_rest$8=match$10[1];
- if(get_ign(0))
- var
- ignored$3=[7,get_padprec_opt(95)],
- _qw_=[0,[23,ignored$3,fmt_rest$8]];
- else
- var
- match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8),
- fmt_rest$9=match$11[2],
- pad$4=match$11[1],
- _qw_=[0,[9,pad$4,fmt_rest$9]];
- var fmt_result=_qw_;
- break;
- case 37:
- case 64:
- var
- match$7=parse(str_ind,end_ind),
- fmt_rest$6=match$7[1],
- fmt_result=[0,[12,symb,fmt_rest$6]];
- break;
- case 76:
- case 108:
- case 110:
- var switch$1=0;
- if(str_ind !== end_ind)
- {var
- symb$0=caml_string_get(str,str_ind),
- _qQ_=symb$0 - 88 | 0,
- switch$2=0;
- if(! (32 < _qQ_ >>> 0))
- switch(_qQ_)
- {case 0:
- case 12:
- case 17:
- case 23:
- case 29:
- case 32:var _qC_=1;switch$2 = 1;break
- }
- if(! switch$2)var _qC_=0;
- if(_qC_){switch$0 = 1;switch$1 = 1}}
- if(! switch$1)
- {var
- match$15=parse(str_ind,end_ind),
- fmt_rest$13=match$15[1],
- switch$3=0;
- if(108 <= symb)
- {if(! (111 <= symb))
- switch(symb - 108 | 0)
- {case 0:var counter=0;switch$3 = 1;break;
- case 1:break;
- default:var counter=1;switch$3 = 1}}
- else
- if(76 === symb){var counter=2;switch$3 = 1}
- if(! switch$3)throw [0,Assert_failure,_aU_];
- if(get_ign(0))
- var ignored$5=[11,counter],_qB_=[0,[23,ignored$5,fmt_rest$13]];
- else
- var _qB_=[0,[21,counter,fmt_rest$13]];
- var fmt_result=_qB_}
- break;
- case 32:
- case 35:
- case 43:
- case 45:
- case 95:
- var
- fmt_result=
- caml_call3(failwith_message(_aL_),str,pct_ind,symb);
- break;
- case 88:
- case 100:
- case 105:
- case 111:
- case 117:
- case 120:
- var
- _qF_=get_space(0),
- _qG_=get_hash(0),
- iconv$2=
- compute_int_conv(pct_ind,str_ind,get_plus(0),_qG_,_qF_,symb),
- match$19=parse(str_ind,end_ind),
- fmt_rest$17=match$19[1];
- if(get_ign(0))
- var
- ignored$8=[2,iconv$2,get_pad_opt(95)],
- _qH_=[0,[23,ignored$8,fmt_rest$17]];
- else
- var
- _qI_=get_prec(0),
- match$20=make_padprec_fmt_ebb(get_int_pad(0),_qI_,fmt_rest$17),
- fmt_rest$18=match$20[3],
- prec$4=match$20[2],
- pad$8=match$20[1],
- _qH_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]];
- var fmt_result=_qH_;
- break;
- case 69:
- case 70:
- case 71:
- case 72:
- case 101:
- case 102:
- case 103:
- case 104:
- var
- space$1=get_space(0),
- hash$1=get_hash(0),
- plus$2=get_plus(0),
- flag=
- plus$2
- ?space$1
- ?legacy_behavior$0
- ?1
- :incompatible_flag(pct_ind,str_ind,32,cst$50)
- :1
- :space$1?2:0,
- switch$4=0;
- if(73 <= symb)
- {var switcher=symb - 101 | 0;
- if(3 < switcher >>> 0)
- switch$4 = 1;
- else
- {switch(switcher)
- {case 0:var _qR_=1;break;
- case 1:var _qR_=0;break;
- case 2:var _qR_=3;break;
- default:var _qR_=6}
- var kind=_qR_}}
- else
- if(69 <= symb)
- {var switch$5=0;
- switch(symb - 69 | 0)
- {case 0:var _qS_=2;break;
- case 1:switch$4 = 1;switch$5 = 1;break;
- case 2:var _qS_=4;break;
- default:var _qS_=7}
- if(! switch$5)var kind=_qS_}
- else
- switch$4 = 1;
- if(switch$4)
- {var switch$6=0;
- if(hash$1)
- if(70 === symb)var kind=8;else switch$6 = 1;
- else
- if(70 === symb)var kind=5;else switch$6 = 1;
- if(switch$6)throw [0,Assert_failure,_aW_]}
- var
- fconv=[0,flag,kind],
- match$13=parse(str_ind,end_ind),
- fmt_rest$11=match$13[1];
- if(get_ign(0))
- {var match=get_prec(0);
- if(typeof match === "number")
- var _qy_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0;
- else
- var ndec=match[1],_qy_=[0,ndec];
- var
- ignored$4=[6,get_pad_opt(95),_qy_],
- _qz_=[0,[23,ignored$4,fmt_rest$11]]}
- else
- var
- _qA_=get_prec(0),
- match$14=make_padprec_fmt_ebb(get_pad(0),_qA_,fmt_rest$11),
- fmt_rest$12=match$14[3],
- prec$3=match$14[2],
- pad$5=match$14[1],
- _qz_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]];
- var fmt_result=_qz_;
- break;
- default:switch$0 = 1}
- if(switch$0)
- {var switch$7=0;
- if(108 <= symb)
- if(111 <= symb)
- switch$7 = 1;
- else
- {var switch$8=0;
- switch(symb - 108 | 0)
- {case 0:
- var
- _qf_=caml_string_get(str,str_ind),
- _qg_=get_space(0),
- _qh_=get_hash(0),
- iconv=
- compute_int_conv
- (pct_ind,str_ind + 1 | 0,get_plus(0),_qh_,_qg_,_qf_),
- match$0=parse(str_ind + 1 | 0,end_ind),
- fmt_rest=match$0[1];
- if(get_ign(0))
- var
- ignored=[3,iconv,get_pad_opt(95)],
- _qi_=[0,[23,ignored,fmt_rest]];
- else
- var
- _qk_=get_prec(0),
- match$1=make_padprec_fmt_ebb(get_int_pad(0),_qk_,fmt_rest),
- fmt_rest$0=match$1[3],
- prec$0=match$1[2],
- pad$0=match$1[1],
- _qi_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]];
- var _qj_=_qi_;
- break;
- case 1:switch$7 = 1;switch$8 = 1;break;
- default:
- var
- _ql_=caml_string_get(str,str_ind),
- _qm_=get_space(0),
- _qn_=get_hash(0),
- iconv$0=
- compute_int_conv
- (pct_ind,str_ind + 1 | 0,get_plus(0),_qn_,_qm_,_ql_),
- match$2=parse(str_ind + 1 | 0,end_ind),
- fmt_rest$1=match$2[1];
- if(get_ign(0))
- var
- ignored$0=[4,iconv$0,get_pad_opt(95)],
- _qo_=[0,[23,ignored$0,fmt_rest$1]];
- else
- var
- _qp_=get_prec(0),
- match$3=make_padprec_fmt_ebb(get_int_pad(0),_qp_,fmt_rest$1),
- fmt_rest$2=match$3[3],
- prec$1=match$3[2],
- pad$1=match$3[1],
- _qo_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]];
- var _qj_=_qo_}
- if(! switch$8)var fmt_result=_qj_}
- else
- if(76 === symb)
- {var
- _qq_=caml_string_get(str,str_ind),
- _qr_=get_space(0),
- _qs_=get_hash(0),
- iconv$1=
- compute_int_conv
- (pct_ind,str_ind + 1 | 0,get_plus(0),_qs_,_qr_,_qq_),
- match$4=parse(str_ind + 1 | 0,end_ind),
- fmt_rest$3=match$4[1];
- if(get_ign(0))
- var
- ignored$1=[5,iconv$1,get_pad_opt(95)],
- _qt_=[0,[23,ignored$1,fmt_rest$3]];
- else
- var
- _qu_=get_prec(0),
- match$5=make_padprec_fmt_ebb(get_int_pad(0),_qu_,fmt_rest$3),
- fmt_rest$4=match$5[3],
- prec$2=match$5[2],
- pad$2=match$5[1],
- _qt_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]];
- var fmt_result=_qt_}
- else
- switch$7 = 1;
- if(switch$7)
- var
- fmt_result=
- caml_call3(failwith_message(_aI_),str,str_ind - 1 | 0,symb)}
- if(1 - legacy_behavior$0)
- {var _p8_=1 - plus_used[1],plus$0=_p8_?plus:_p8_;
- if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41);
- var _p9_=1 - hash_used[1],hash$0=_p9_?hash:_p9_;
- if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42);
- var _p__=1 - space_used[1],space$0=_p__?space:_p__;
- if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43);
- var _p$_=1 - pad_used[1],_qa_=_p$_?caml_notequal([0,pad],_aJ_):_p$_;
- if(_qa_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0);
- var
- _qb_=1 - prec_used[1],
- _qc_=_qb_?caml_notequal([0,prec],_aK_):_qb_;
- if(_qc_)
- {var _qd_=ign?95:symb;
- incompatible_flag(pct_ind,str_ind,_qd_,cst_precision$2)}
- var plus$1=ign?plus:ign;
- if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)}
- var _qe_=1 - ign_used[1],ign$0=_qe_?ign:_qe_;
- if(ign$0)
- {var switch$9=0;
- if(38 <= symb)
- {if(44 !== symb && 64 !== symb)switch$9 = 1}
- else
- if(33 !== symb && ! (37 <= symb))switch$9 = 1;
- var switch$10=0;
- if(switch$9 || ! legacy_behavior$0)switch$10 = 1;
- if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)}
- return fmt_result}
- function parse(lit_start,end_ind)
- {var str_ind=lit_start;
- for(;;)
- {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0);
- var match=caml_string_get(str,str_ind);
- if(37 === match)
- {var str_ind$2=str_ind + 1 | 0;
- if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind);
- var
- match$1=caml_string_get(str,str_ind$2),
- _p7_=
- 95 === match$1
- ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1)
- :parse_flags(str_ind,str_ind$2,end_ind,0),
- fmt_rest=_p7_[1];
- return add_literal(lit_start,str_ind,fmt_rest)}
- if(64 === match)
- {var str_ind$0=str_ind + 1 | 0;
- if(str_ind$0 === end_ind)
- var match$0=_aM_;
- else
- {var c=caml_string_get(str,str_ind$0),switch$0=0;
- if(65 <= c)
- if(94 <= c)
- {var switcher=c - 123 | 0;
- if(2 < switcher >>> 0)
- switch$0 = 1;
- else
- switch(switcher)
- {case 0:
- var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break;
- case 1:switch$0 = 1;break;
- default:
- var
- match$3=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$2=match$3[1],
- match$0=[0,[17,1,fmt_rest$2]]}}
- else
- if(91 <= c)
- switch(c - 91 | 0)
- {case 0:
- var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break;
- case 1:switch$0 = 1;break;
- default:
- var
- match$4=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$3=match$4[1],
- match$0=[0,[17,0,fmt_rest$3]]}
- else
- switch$0 = 1;
- else
- if(10 === c)
- var
- match$5=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$4=match$5[1],
- match$0=[0,[17,3,fmt_rest$4]];
- else
- if(32 <= c)
- switch(c - 32 | 0)
- {case 0:
- var
- match$6=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$5=match$6[1],
- match$0=[0,[17,_aN_,fmt_rest$5]];
- break;
- case 5:
- var switch$1=0;
- if
- ((str_ind$0 + 1 | 0)
- <
- end_ind
- &&
- 37
- ===
- caml_string_get(str,str_ind$0 + 1 | 0))
- {var
- match$7=parse(str_ind$0 + 2 | 0,end_ind),
- fmt_rest$6=match$7[1],
- match$0=[0,[17,6,fmt_rest$6]];
- switch$1 = 1}
- if(! switch$1)
- var
- match$8=parse(str_ind$0,end_ind),
- fmt_rest$7=match$8[1],
- match$0=[0,[12,64,fmt_rest$7]];
- break;
- case 12:
- var
- match$9=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$8=match$9[1],
- match$0=[0,[17,_aO_,fmt_rest$8]];
- break;
- case 14:
- var
- match$10=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$9=match$10[1],
- match$0=[0,[17,4,fmt_rest$9]];
- break;
- case 27:
- var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind);
- break;
- case 28:
- var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind);
- break;
- case 31:
- var
- match$11=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$10=match$11[1],
- match$0=[0,[17,2,fmt_rest$10]];
- break;
- case 32:
- var
- match$12=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$11=match$12[1],
- match$0=[0,[17,5,fmt_rest$11]];
- break;
- default:switch$0 = 1}
- else
- switch$0 = 1;
- if(switch$0)
- var
- match$2=parse(str_ind$0 + 1 | 0,end_ind),
- fmt_rest$1=match$2[1],
- match$0=[0,[17,[2,c],fmt_rest$1]]}
- var fmt_rest$0=match$0[1];
- return add_literal(lit_start,str_ind,fmt_rest$0)}
- var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1;
- continue}}
- return parse(0,caml_ml_string_length(str))}
- function format_of_string_fmtty(str,fmtty)
- {var match=fmt_ebb_of_string(0,str),fmt=match[1];
- try
- {var _p5_=[0,type_format(fmt,fmtty),str];return _p5_}
- catch(_p6_)
- {_p6_ = caml_wrap_exception(_p6_);
- if(_p6_ === Type_mismatch)
- {var _p4_=string_of_fmtty(fmtty);
- return caml_call2(failwith_message(_aY_),str,_p4_)}
- throw _p6_}}
- function format_of_string_format(str,param)
- {var
- str$0=param[2],
- fmt=param[1],
- match=fmt_ebb_of_string(0,str),
- fmt$0=match[1];
- try
- {var _p2_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _p2_}
- catch(_p3_)
- {_p3_ = caml_wrap_exception(_p3_);
- if(_p3_ === Type_mismatch)
- return caml_call2(failwith_message(_aZ_),str,str$0);
- throw _p3_}}
- var
- CamlinternalFormat=
- [0,
- is_in_char_set,
- rev_char_set,
- create_char_set,
- add_in_char_set,
- freeze_char_set,
- param_format_of_ignored_format,
- make_printf,
- make_iprintf,
- output_acc,
- bufput_acc,
- strput_acc,
- type_format,
- fmt_ebb_of_string,
- format_of_string_fmtty,
- format_of_string_format,
- char_of_iconv,
- string_of_formatting_lit,
- string_of_fmtty,
- string_of_fmt,
- open_box_of_string,
- symm,
- trans,
- recast];
- caml_register_global(791,CamlinternalFormat,"CamlinternalFormat");
- function kfprintf(k,o,param)
- {var fmt=param[1],_p1_=0;
- return make_printf
- (function(acc){output_acc(o,acc);return caml_call1(k,o)},
- _p1_,
- fmt)}
- function kbprintf(k,b,param)
- {var fmt=param[1],_p0_=0;
- return make_printf
- (function(acc){bufput_acc(b,acc);return caml_call1(k,b)},
- _p0_,
- fmt)}
- function ikfprintf(k,oc,param)
- {var fmt=param[1];return make_iprintf(k,oc,fmt)}
- function fprintf(oc,fmt){return kfprintf(function(_pZ_){return 0},oc,fmt)}
- function bprintf(b,fmt){return kbprintf(function(_pY_){return 0},b,fmt)}
- function ifprintf(oc,fmt)
- {return ikfprintf(function(_pX_){return 0},oc,fmt)}
- function ibprintf(b,fmt){return ikfprintf(function(_pW_){return 0},b,fmt)}
- function printf(fmt){return fprintf(stdout,fmt)}
- function eprintf(fmt){return fprintf(stderr,fmt)}
- function ksprintf(k,param)
- {var fmt=param[1];
- function k$0(acc)
- {var buf=create$2(64);
- strput_acc(buf,acc);
- return caml_call1(k,contents(buf))}
- return make_printf(k$0,0,fmt)}
- function sprintf(fmt){return ksprintf(function(s){return s},fmt)}
- var
- Stdlib_Printf=
- [0,
- fprintf,
- printf,
- eprintf,
- sprintf,
- bprintf,
- ifprintf,
- ibprintf,
- kfprintf,
- ikfprintf,
- ksprintf,
- kbprintf,
- ikfprintf,
- ksprintf];
- caml_register_global(792,Stdlib_Printf,"Stdlib__Printf");
- var
- Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)],
- Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)],
- Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)];
- function assoc3(x,l)
- {var l$0=l;
- for(;;)
- {if(l$0)
- {var match=l$0[1],y2=match[2],y1=match[1];
- if(caml_equal(y1,x))return y2;
- var l$1=l$0[2],l$0=l$1;
- continue}
- throw Not_found}}
- function split$1(s)
- {var
- i=index$0(s,61),
- len=caml_ml_string_length(s),
- _pV_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0);
- return [0,sub$0(s,0,i),_pV_]}
- function make_symlist(prefix,sep,suffix,l)
- {if(l)
- {var t=l[2],h=l[1],_pU_=cat(prefix,h);
- return cat
- (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_pU_,t),
- suffix)}
- return cst_none}
- function help_action(param){throw [0,Stop,_a2_]}
- function add_help(speclist)
- {try
- {assoc3(cst_help$2,speclist);var _pR_=0,_pP_=_pR_}
- catch(_pT_)
- {_pT_ = caml_wrap_exception(_pT_);
- if(_pT_ !== Not_found)throw _pT_;
- var
- _pP_=
- [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]}
- try
- {assoc3(cst_help$1,speclist);var _pQ_=0,add2=_pQ_}
- catch(_pS_)
- {_pS_ = caml_wrap_exception(_pS_);
- if(_pS_ !== Not_found)throw _pS_;
- var
- add2=
- [0,
- [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0],
- 0]}
- return append(speclist,append(_pP_,add2))}
- function usage_b(buf,speclist,errmsg)
- {caml_call1(bprintf(buf,_a3_),errmsg);
- var _pM_=add_help(speclist);
- return iter$2
- (function(param)
- {var
- doc=param[3],
- spec=param[2],
- key=param[1],
- _pN_=0 < caml_ml_string_length(doc)?1:0;
- if(_pN_)
- {if(11 === spec[0])
- {var l=spec[1],_pO_=make_symlist(cst$53,cst$52,cst$51,l);
- return caml_call3(bprintf(buf,_a1_),key,_pO_,doc)}
- return caml_call2(bprintf(buf,_a0_),key,doc)}
- return _pN_},
- _pM_)}
- function usage_string(speclist,errmsg)
- {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)}
- function usage(speclist,errmsg)
- {var _pL_=usage_string(speclist,errmsg);
- return caml_call1(eprintf(_a4_),_pL_)}
- var current=[0,0];
- function bool_of_string_opt$0(x)
- {try
- {var _pJ_=[0,bool_of_string(x)];return _pJ_}
- catch(_pK_)
- {_pK_ = caml_wrap_exception(_pK_);
- if(_pK_[1] === Invalid_argument)return 0;
- throw _pK_}}
- function int_of_string_opt$0(x)
- {try
- {var _pH_=[0,caml_int_of_string(x)];return _pH_}
- catch(_pI_)
- {_pI_ = caml_wrap_exception(_pI_);
- if(_pI_[1] === Failure)return 0;
- throw _pI_}}
- function float_of_string_opt(x)
- {try
- {var _pF_=[0,caml_float_of_string(x)];return _pF_}
- catch(_pG_)
- {_pG_ = caml_wrap_exception(_pG_);
- if(_pG_[1] === Failure)return 0;
- throw _pG_}}
- function parse_and_expand_argv_dynamic_
- (allow_expand,current,argv,speclist,anonfun,errmsg)
- {var initpos=current[1];
- function convert_error(error)
- {var
- b=create$2(200),
- progname=
- initpos < argv[1].length - 1
- ?caml_check_bound(argv[1],initpos)[1 + initpos]
- :cst$54;
- switch(error[0])
- {case 0:
- var _pE_=error[1];
- if
- (caml_string_notequal(_pE_,cst_help$3)
- &&
- caml_string_notequal(_pE_,cst_help$4))
- caml_call2(bprintf(b,_a5_),progname,_pE_);
- break;
- case 1:
- var expected=error[3],arg=error[2],opt=error[1];
- caml_call4(bprintf(b,_a8_),progname,arg,opt,expected);
- break;
- case 2:var s=error[1];caml_call2(bprintf(b,_a9_),progname,s);break;
- default:var s$0=error[1];caml_call2(bprintf(b,_a__),progname,s$0)}
- usage_b(b,speclist[1],errmsg);
- if(! caml_equal(error,_a6_) && ! caml_equal(error,_a7_))
- return [0,Bad,contents(b)];
- return [0,Help,contents(b)]}
- current[1]++;
- for(;;)
- {if(current[1] < argv[1].length - 1)
- {try
- {var
- _pt_=current[1],
- s=caml_check_bound(argv[1],_pt_)[1 + _pt_],
- switch$0=0;
- if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0))
- {try
- {var
- follow$1=0,
- _pv_=assoc3(s,speclist[1]),
- follow$0=follow$1,
- action=_pv_}
- catch(_pC_)
- {_pC_ = caml_wrap_exception(_pC_);
- if(_pC_ !== Not_found)throw _pC_;
- try
- {var
- match=split$1(s),
- arg=match[2],
- keyword=match[1],
- follow=[0,arg],
- _pu_=assoc3(keyword,speclist[1])}
- catch(_pD_)
- {_pD_ = caml_wrap_exception(_pD_);
- if(_pD_ === Not_found)throw [0,Stop,[0,s]];
- throw _pD_;
- var _pw_=_pD_}
- var follow$0=follow,action=_pu_,_px_=_pC_}
- var
- no_arg$0=
- function(s,follow)
- {function no_arg(param)
- {if(follow)
- {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]}
- return 0}
- return no_arg},
- no_arg=no_arg$0(s,follow$0),
- get_arg$0=
- function(s,follow)
- {function get_arg(param)
- {if(follow){var arg=follow[1];return arg}
- if((current[1] + 1 | 0) < argv[1].length - 1)
- {var _pB_=current[1] + 1 | 0;
- return caml_check_bound(argv[1],_pB_)[1 + _pB_]}
- throw [0,Stop,[2,s]]}
- return get_arg},
- get_arg=get_arg$0(s,follow$0),
- consume_arg$0=
- function(follow)
- {function consume_arg(param)
- {return follow?0:(current[1]++,0)}
- return consume_arg},
- consume_arg=consume_arg$0(follow$0),
- treat_action$0=
- function(s,no_arg,get_arg,consume_arg)
- {function treat_action(param)
- {switch(param[0])
- {case 0:var f=param[1];no_arg(0);return caml_call1(f,0);
- case 1:
- var
- f$0=param[1],
- arg=get_arg(0),
- match=bool_of_string_opt$0(arg);
- if(match)
- {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)}
- throw [0,Stop,[1,s,arg,cst_a_boolean]];
- case 2:var r=param[1];no_arg(0);r[1] = 1;return 0;
- case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0;
- case 4:
- var f$1=param[1],arg$0=get_arg(0);
- caml_call1(f$1,arg$0);
- return consume_arg(0);
- case 5:
- var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0);
- case 6:
- var
- f$2=param[1],
- arg$1=get_arg(0),
- match$0=int_of_string_opt$0(arg$1);
- if(match$0)
- {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)}
- throw [0,Stop,[1,s,arg$1,cst_an_integer]];
- case 7:
- var
- r$2=param[1],
- arg$2=get_arg(0),
- match$1=int_of_string_opt$0(arg$2);
- if(match$1)
- {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)}
- throw [0,Stop,[1,s,arg$2,cst_an_integer$0]];
- case 8:
- var
- f$3=param[1],
- arg$3=get_arg(0),
- match$2=float_of_string_opt(arg$3);
- if(match$2)
- {var x$1=match$2[1];
- caml_call1(f$3,x$1);
- return consume_arg(0)}
- throw [0,Stop,[1,s,arg$3,cst_a_float]];
- case 9:
- var
- r$3=param[1],
- arg$4=get_arg(0),
- match$3=float_of_string_opt(arg$4);
- if(match$3)
- {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)}
- throw [0,Stop,[1,s,arg$4,cst_a_float$0]];
- case 10:
- var specs=param[1];
- no_arg(0);
- return iter$2(treat_action,specs);
- case 11:
- var f$4=param[2],symb=param[1],arg$5=get_arg(0);
- if(mem(arg$5,symb))
- {caml_call1(f$4,arg$5);return consume_arg(0)}
- throw [0,
- Stop,
- [1,
- s,
- arg$5,
- cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]];
- case 12:
- var f$5=param[1];
- no_arg(0);
- for(;;)
- {if(current[1] < (argv[1].length - 1 - 1 | 0))
- {var _py_=current[1] + 1 | 0;
- caml_call1(f$5,caml_check_bound(argv[1],_py_)[1 + _py_]);
- consume_arg(0);
- continue}
- return 0}
- case 13:
- var f$6=param[1];
- no_arg(0);
- var acc=[0,0];
- for(;;)
- {if(current[1] < (argv[1].length - 1 - 1 | 0))
- {var _pA_=current[1] + 1 | 0,_pz_=acc[1];
- acc[1] = [0,caml_check_bound(argv[1],_pA_)[1 + _pA_],_pz_];
- consume_arg(0);
- continue}
- return caml_call1(f$6,rev(acc[1]))}
- default:
- var f$7=param[1];
- if(1 - allow_expand)
- throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo];
- var arg$6=get_arg(0),newarg=caml_call1(f$7,arg$6);
- consume_arg(0);
- var
- before=sub$1(argv[1],0,current[1] + 1 | 0),
- after=
- sub$1
- (argv[1],
- current[1] + 1 | 0,
- (argv[1].length - 1 - current[1] | 0) - 1 | 0);
- argv[1]
- =
- caml_array_concat([0,before,[0,newarg,[0,after,0]]]);
- return 0}}
- return treat_action},
- treat_action=treat_action$0(s,no_arg,get_arg,consume_arg);
- treat_action(action);
- switch$0 = 1}
- if(! switch$0)caml_call1(anonfun,s)}
- catch(exn$0)
- {exn$0 = caml_wrap_exception(exn$0);
- if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])}
- if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)}
- throw exn$0;
- var exn=exn$0}
- current[1]++;
- continue}
- return 0}}
- function parse_and_expand_argv_dynamic
- (current,argv,speclist,anonfun,errmsg)
- {return parse_and_expand_argv_dynamic_
- (1,current,argv,speclist,anonfun,errmsg)}
- function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg)
- {if(opt)var sth=opt[1],current$0=sth;else var current$0=current;
- return parse_and_expand_argv_dynamic_
- (0,current$0,[0,argv],speclist,anonfun,errmsg)}
- function parse_argv(opt,argv,speclist,anonfun,errmsg)
- {if(opt)var sth=opt[1],current$0=sth;else var current$0=current;
- return parse_argv_dynamic
- ([0,current$0],argv,[0,speclist],anonfun,errmsg)}
- function parse(l,f,msg)
- {try
- {var _ps_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _ps_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bad)
- {var msg$0=exn[2];caml_call1(eprintf(_a$_),msg$0);return exit(2)}
- if(exn[1] === Help)
- {var msg$1=exn[2];caml_call1(printf(_ba_),msg$1);return exit(0)}
- throw exn}}
- function parse_dynamic(l,f,msg)
- {try
- {var _pr_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _pr_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bad)
- {var msg$0=exn[2];caml_call1(eprintf(_bb_),msg$0);return exit(2)}
- if(exn[1] === Help)
- {var msg$1=exn[2];caml_call1(printf(_bc_),msg$1);return exit(0)}
- throw exn}}
- function parse_expand(l,f,msg)
- {try
- {var
- argv=[0,caml_sys_argv(0)],
- spec=[0,l],
- current$0=[0,current[1]],
- _pq_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg);
- return _pq_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Bad)
- {var msg$0=exn[2];caml_call1(eprintf(_bd_),msg$0);return exit(2)}
- if(exn[1] === Help)
- {var msg$1=exn[2];caml_call1(printf(_be_),msg$1);return exit(0)}
- throw exn}}
- function second_word(s)
- {var len=caml_ml_string_length(s);
- function loop(n)
- {var n$0=n;
- for(;;)
- {if(len <= n$0)return len;
- if(32 === caml_string_get(s,n$0))
- {var n$1=n$0 + 1 | 0,n$0=n$1;continue}
- return n$0}}
- try
- {var n$0=index$0(s,9)}
- catch(_po_)
- {_po_ = caml_wrap_exception(_po_);
- if(_po_ === Not_found)
- {try
- {var n=index$0(s,32)}
- catch(_pp_)
- {_pp_ = caml_wrap_exception(_pp_);
- if(_pp_ === Not_found)return len;
- throw _pp_}
- return loop(n + 1 | 0)}
- throw _po_}
- return loop(n$0 + 1 | 0)}
- function max_arg_len(cur,param)
- {var doc=param[3],spec=param[2],kwd=param[1];
- return 11 === spec[0]
- ?max$1(cur,caml_ml_string_length(kwd))
- :max$1(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)}
- function replace_leading_tab(s)
- {var seen=[0,0];
- return map$5
- (function(c)
- {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c},
- s)}
- function align(opt,speclist)
- {if(opt)var sth=opt[1],limit=sth;else var limit=max_int;
- var
- completed=add_help(speclist),
- len=fold_left$0(max_arg_len,0,completed),
- len$0=min$1(len,limit);
- return map$3
- (function(ksd)
- {var _pm_=ksd[1],_pn_=ksd[2];
- if(caml_string_notequal(ksd[3],cst$58))
- {if(11 === _pn_[0])
- {var
- msg$0=ksd[3],
- cutcol$0=second_word(msg$0),
- spaces$0=make$1(max$1(0,len$0 - cutcol$0 | 0) + 3 | 0,32);
- return [0,
- _pm_,
- _pn_,
- cat(cst$59,cat(spaces$0,replace_leading_tab(msg$0)))]}
- var
- msg=ksd[3],
- spec=ksd[2],
- cutcol=second_word(msg),
- kwd_len=caml_ml_string_length(_pm_),
- diff=(len$0 - kwd_len | 0) - cutcol | 0;
- if(0 < diff)
- {var
- spaces=make$1(diff,32),
- prefix=sub$0(replace_leading_tab(msg),0,cutcol),
- suffix=
- sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0);
- return [0,_pm_,spec,cat(prefix,cat(spaces,suffix))]}
- return [0,_pm_,spec,replace_leading_tab(msg)]}
- return ksd},
- completed)}
- function read_aux(trim,sep,file)
- {var ic=open_in_bin(file),buf=create$2(200),words=[0,0];
- function stash(param)
- {var s=contents(buf);
- if(trim)
- {var len=caml_ml_string_length(s),switch$0=0;
- if(0 < len && 13 === caml_string_get(s,len - 1 | 0))
- {var _pl_=sub$0(s,0,len - 1 | 0);switch$0 = 1}
- if(! switch$0)var _pl_=s;
- var word=_pl_}
- else
- var word=s;
- words[1] = [0,word,words[1]];
- return clear$1(buf)}
- try
- {for(;;)
- {var c=caml_ml_input_char(ic);
- if(c === sep)stash(0);else add_char(buf,c);
- continue}}
- catch(_pk_)
- {_pk_ = caml_wrap_exception(_pk_);
- if(_pk_ === End_of_file)
- {if(0 < buf[2])stash(0);
- caml_ml_close_channel(ic);
- return of_list(rev(words[1]))}
- throw _pk_}}
- var _bf_=10,_bg_=1;
- function read_arg(_pj_){return read_aux(_bg_,_bf_,_pj_)}
- var _bh_=0,_bi_=0;
- function read_arg0(_pi_){return read_aux(_bi_,_bh_,_pi_)}
- function write_aux(sep,file,args)
- {var oc=open_out_bin(file);
- iter$5(function(s){return caml_call2(fprintf(oc,_bj_),s,sep)},args);
- return close_out(oc)}
- var _bk_=10;
- function write_arg(_pg_,_ph_){return write_aux(_bk_,_pg_,_ph_)}
- var _bl_=0;
- function write_arg0(_pe_,_pf_){return write_aux(_bl_,_pe_,_pf_)}
- var
- Stdlib_Arg=
- [0,
- parse,
- parse_dynamic,
- parse_argv,
- parse_argv_dynamic,
- parse_and_expand_argv_dynamic,
- parse_expand,
- Help,
- Bad,
- usage,
- usage_string,
- align,
- current,
- read_arg,
- read_arg0,
- write_arg,
- write_arg0];
- caml_register_global(793,Stdlib_Arg,"Stdlib__Arg");
- var
- Stdlib_Atomic=
- [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr];
- caml_register_global(794,Stdlib_Atomic,"Stdlib__Atomic");
- var printers=[0,0];
- function field(x,i)
- {var f=x[1 + i];
- return is_block(f)
- ?caml_obj_tag(f) === 252
- ?caml_call1(sprintf(_bm_),f)
- :caml_obj_tag(f) === 253?to_string(f):cst$60
- :caml_call1(sprintf(_bn_),f)}
- function other_fields(x,i)
- {if(x.length - 1 <= i)return cst$61;
- var _pc_=other_fields(x,i + 1 | 0),_pd_=field(x,i);
- return caml_call2(sprintf(_bo_),_pd_,_pc_)}
- function use_printers(x)
- {function conv(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var tl=param$0[2],hd=param$0[1];
- try
- {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1}
- catch(_pb_){}
- if(switch$0 && val){var s=val[1];return [0,s]}
- var param$0=tl;
- continue}
- return 0}}
- return conv(printers[1])}
- function to_string_default(x)
- {if(x === Out_of_memory)return cst_Out_of_memory;
- if(x === Stack_overflow)return cst_Stack_overflow;
- if(x[1] === Match_failure)
- {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1];
- return caml_call5
- (sprintf(locfmt),
- file,
- line,
- char$0,
- char$0 + 5 | 0,
- cst_Pattern_matching_failed)}
- if(x[1] === Assert_failure)
- {var
- match$1=x[2],
- char$1=match$1[3],
- line$0=match$1[2],
- file$0=match$1[1];
- return caml_call5
- (sprintf(locfmt),
- file$0,
- line$0,
- char$1,
- char$1 + 6 | 0,
- cst_Assertion_failed)}
- if(x[1] === Undefined_recursive_module)
- {var
- match$2=x[2],
- char$2=match$2[3],
- line$1=match$2[2],
- file$1=match$2[1];
- return caml_call5
- (sprintf(locfmt),
- file$1,
- line$1,
- char$2,
- char$2 + 6 | 0,
- cst_Undefined_recursive_module)}
- if(0 === caml_obj_tag(x))
- {var constructor=x[1][1],match=x.length - 1;
- if(2 < match >>> 0)
- var
- _o9_=other_fields(x,2),
- _o__=field(x,1),
- _pa_=caml_call2(sprintf(_bp_),_o__,_o9_);
- else
- switch(match)
- {case 0:var _pa_=cst$62;break;
- case 1:var _pa_=cst$63;break;
- default:var _o$_=field(x,1),_pa_=caml_call1(sprintf(_bq_),_o$_)}
- return cat(constructor,_pa_)}
- return x[1]}
- function to_string$6(e)
- {var match=use_printers(e);
- if(match){var s=match[1];return s}
- return to_string_default(e)}
- function print(fct,arg)
- {try
- {var _o8_=caml_call1(fct,arg);return _o8_}
- catch(x)
- {x = caml_wrap_exception(x);
- var _o7_=to_string$6(x);
- caml_call1(eprintf(_br_),_o7_);
- caml_ml_flush(stderr);
- throw x}}
- function catch$0(fct,arg)
- {try
- {var _o6_=caml_call1(fct,arg);return _o6_}
- catch(x)
- {x = caml_wrap_exception(x);
- caml_ml_flush(stdout);
- var _o5_=to_string$6(x);
- caml_call1(eprintf(_bs_),_o5_);
- return exit(2)}}
- function raw_backtrace_entries(bt){return bt}
- function convert_raw_backtrace(bt)
- {return [0,runtime.caml_convert_raw_backtrace(bt)]}
- function format_backtrace_slot(pos,slot)
- {function info(is_raise)
- {return is_raise
- ?0 === pos?cst_Raised_at:cst_Re_raised_at
- :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from}
- if(0 === slot[0])
- {var
- _oX_=slot[5],
- _oY_=slot[4],
- _oZ_=slot[3],
- _o0_=slot[6]?cst_inlined:cst$64,
- _o1_=slot[2],
- _o2_=slot[7],
- _o3_=info(slot[1]);
- return [0,
- caml_call7(sprintf(_bt_),_o3_,_o2_,_o1_,_o0_,_oZ_,_oY_,_oX_)]}
- if(slot[1])return 0;
- var _o4_=info(0);
- return [0,caml_call1(sprintf(_bu_),_o4_)]}
- function print_raw_backtrace(outchan,raw_backtrace)
- {var backtrace=convert_raw_backtrace(raw_backtrace);
- if(backtrace)
- {var a=backtrace[1],_oV_=a.length - 1 - 1 | 0,_oU_=0;
- if(! (_oV_ < 0))
- {var i=_oU_;
- for(;;)
- {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]);
- if(match){var str=match[1];caml_call1(fprintf(outchan,_bv_),str)}
- var _oW_=i + 1 | 0;
- if(_oV_ !== i){var i=_oW_;continue}
- break}}
- return 0}
- return fprintf(outchan,_bw_)}
- function print_backtrace(outchan)
- {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))}
- function raw_backtrace_to_string(raw_backtrace)
- {var backtrace=convert_raw_backtrace(raw_backtrace);
- if(backtrace)
- {var a=backtrace[1],b=create$2(1024),_oS_=a.length - 1 - 1 | 0,_oR_=0;
- if(! (_oS_ < 0))
- {var i=_oR_;
- for(;;)
- {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]);
- if(match){var str=match[1];caml_call1(bprintf(b,_bx_),str)}
- var _oT_=i + 1 | 0;
- if(_oS_ !== i){var i=_oT_;continue}
- break}}
- return contents(b)}
- return cst_Program_not_linked_with_g_}
- function backtrace_slot_is_raise(param)
- {return 0 === param[0]?param[1]:param[1]}
- function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0}
- function backtrace_slot_location(param)
- {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0}
- function backtrace_slot_defname(param)
- {if(0 === param[0] && caml_string_notequal(param[7],cst$65))
- return [0,param[7]];
- return 0}
- function backtrace_slots(raw_backtrace)
- {var match=convert_raw_backtrace(raw_backtrace);
- if(match)
- {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1;
- for(;;)
- {if(-1 === i)
- var _oQ_=0;
- else
- {var
- param=caml_check_bound(backtrace,i)[1 + i],
- _oP_=0 === param[0]?1:0;
- if(! _oP_){var i$0=i - 1 | 0,i=i$0;continue}
- var _oQ_=_oP_}
- return _oQ_?[0,backtrace]:0}}
- return 0}
- function backtrace_slots_of_raw_entry(entry)
- {return backtrace_slots([0,entry])}
- function raw_backtrace_length(bt){return bt.length - 1}
- function get_backtrace(param)
- {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))}
- function register_printer(fn)
- {for(;;)
- {var
- old_printers=printers[1],
- new_printers=[0,fn,old_printers],
- success=compare_and_set(printers,old_printers,new_printers),
- _oO_=1 - success;
- if(_oO_)continue;
- return _oO_}}
- function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x}
- function exn_slot_id(x){var slot=exn_slot(x);return slot[2]}
- function exn_slot_name(x){var slot=exn_slot(x);return slot[1]}
- var errors=_by_.slice();
- function default_uncaught_exception_han(exn,raw_backtrace)
- {var _oM_=to_string$6(exn);
- caml_call1(eprintf(_bz_),_oM_);
- print_raw_backtrace(stderr,raw_backtrace);
- var status=runtime.caml_ml_debug_info_status(0);
- if(status < 0)
- {var _oN_=abs(status);
- prerr_endline(caml_check_bound(errors,_oN_)[1 + _oN_])}
- return caml_ml_flush(stderr)}
- var uncaught_exception_handler=[0,default_uncaught_exception_han];
- function set_uncaught_exception_handler(fn)
- {uncaught_exception_handler[1] = fn;return 0}
- var empty_backtrace=[0];
- function handle_uncaught_exception(exn,debugger_in_use)
- {try
- {try
- {var
- raw_backtrace=
- debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0);
- try {do_at_exit(0)}catch(_oL_){}
- try
- {var
- _oH_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace),
- _oG_=_oH_}
- catch(exn$0)
- {exn$0 = caml_wrap_exception(exn$0);
- var
- raw_backtrace$0=caml_get_exception_raw_backtra(0),
- _oE_=to_string$6(exn);
- caml_call1(eprintf(_bA_),_oE_);
- print_raw_backtrace(stderr,raw_backtrace);
- var _oF_=to_string$6(exn$0);
- caml_call1(eprintf(_bB_),_oF_);
- print_raw_backtrace(stderr,raw_backtrace$0);
- var _oG_=caml_ml_flush(stderr)}
- var _oI_=_oG_}
- catch(_oK_)
- {_oK_ = caml_wrap_exception(_oK_);
- if(_oK_ !== Out_of_memory)throw _oK_;
- var _oI_=prerr_endline(cst_Fatal_error_out_of_memory_)}
- return _oI_}
- catch(_oJ_){return 0}}
- caml_register_named_value
- (caml_string_of_jsbytes("Printexc.handle_uncaught_exception"),
- handle_uncaught_exception);
- function _bC_(_oD_){return runtime.caml_raw_backtrace_next_slot(_oD_)}
- function _bD_(_oC_){return runtime.caml_convert_raw_backtrace_slot(_oC_)}
- function _bE_(_oB_,_oA_)
- {return runtime.caml_raw_backtrace_slot(_oB_,_oA_)}
- var
- _bF_=
- [0,
- backtrace_slot_is_raise,
- backtrace_slot_is_inline,
- backtrace_slot_location,
- backtrace_slot_defname,
- format_backtrace_slot];
- function _bG_(_oz_){return caml_get_exception_raw_backtra(_oz_)}
- function _bH_(_oy_){return runtime.caml_backtrace_status(_oy_)}
- var
- Stdlib_Printexc=
- [0,
- to_string$6,
- to_string_default,
- print,
- catch$0,
- print_backtrace,
- get_backtrace,
- function(_ox_){return runtime.caml_record_backtrace(_ox_)},
- _bH_,
- register_printer,
- use_printers,
- raw_backtrace_entries,
- _bG_,
- print_raw_backtrace,
- raw_backtrace_to_string,
- default_uncaught_exception_han,
- set_uncaught_exception_handler,
- backtrace_slots,
- backtrace_slots_of_raw_entry,
- _bF_,
- raw_backtrace_length,
- _bE_,
- _bD_,
- _bC_,
- exn_slot_id,
- exn_slot_name];
- caml_register_global(795,Stdlib_Printexc,"Stdlib__Printexc");
- function const$0(c,param){return c}
- function flip(f,x,y){return caml_call2(f,y,x)}
- function negate(p,v){return 1 - caml_call1(p,v)}
- var
- Finally_raised=
- [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)];
- register_printer
- (function(param)
- {if(param[1] === Finally_raised)
- {var exn=param[2];
- return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]}
- return 0});
- function protect(finally$0,work)
- {function finally_no_exn(param)
- {try
- {var _ow_=caml_call1(finally$0,0);return _ow_}
- catch(e)
- {e = caml_wrap_exception(e);
- var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e];
- caml_restore_raw_backtrace(exn,bt);
- throw exn}}
- try
- {var result=caml_call1(work,0)}
- catch(work_exn)
- {work_exn = caml_wrap_exception(work_exn);
- var work_bt=caml_get_exception_raw_backtra(0);
- finally_no_exn(0);
- caml_restore_raw_backtrace(work_exn,work_bt);
- throw work_exn}
- finally_no_exn(0);
- return result}
- var Stdlib_Fun=[0,const$0,flip,negate,protect,Finally_raised];
- caml_register_global(796,Stdlib_Fun,"Stdlib__Fun");
- function print_stat(c)
- {var st=runtime.caml_gc_stat(0),_oe_=st[4];
- caml_call1(fprintf(c,_bI_),_oe_);
- var _of_=st[5];
- caml_call1(fprintf(c,_bJ_),_of_);
- var _og_=st[14];
- caml_call1(fprintf(c,_bK_),_og_);
- var _oh_=st[17];
- caml_call1(fprintf(c,_bL_),_oh_);
- fprintf(c,_bM_);
- var
- _oi_=st[1],
- l1=caml_ml_string_length(caml_call1(sprintf(_bN_),_oi_)),
- _oj_=st[1];
- caml_call2(fprintf(c,_bO_),l1,_oj_);
- var _ok_=st[2];
- caml_call2(fprintf(c,_bP_),l1,_ok_);
- var _ol_=st[3];
- caml_call2(fprintf(c,_bQ_),l1,_ol_);
- fprintf(c,_bR_);
- var
- _om_=st[15],
- l2=caml_ml_string_length(caml_call1(sprintf(_bS_),_om_)),
- _on_=st[15];
- caml_call2(fprintf(c,_bT_),l2,_on_);
- var _oo_=st[6];
- caml_call2(fprintf(c,_bU_),l2,_oo_);
- var _op_=st[8];
- caml_call2(fprintf(c,_bV_),l2,_op_);
- var _oq_=st[10];
- caml_call2(fprintf(c,_bW_),l2,_oq_);
- var _or_=st[12];
- caml_call2(fprintf(c,_bX_),l2,_or_);
- var _os_=st[13];
- caml_call2(fprintf(c,_bY_),l2,_os_);
- fprintf(c,_bZ_);
- var _ot_=st[9];
- caml_call1(fprintf(c,_b0_),_ot_);
- var _ou_=st[11];
- caml_call1(fprintf(c,_b1_),_ou_);
- var _ov_=st[7];
- return caml_call1(fprintf(c,_b2_),_ov_)}
- function allocated_bytes(param)
- {var
- match=runtime.caml_gc_counters(0),
- ma=match[3],
- pro=match[2],
- mi=match[1];
- return (mi + ma - pro) * 4}
- function create_alarm(f){return [0,1]}
- function delete_alarm(a){a[1] = 0;return 0}
- function _b3_(param){return 0}
- function _b4_(param){return 0}
- function _b5_(param){return 0}
- function _b6_(param){return 0}
- var null_tracker=[0,function(param){return 0},_b6_,_b5_,_b4_,_b3_];
- function start(sampling_rate,opt,tracker)
- {if(opt)
- var sth=opt[1],callstack_size=sth;
- else
- var callstack_size=max_int;
- return runtime.caml_memprof_start(sampling_rate,callstack_size,tracker)}
- var _b7_=[0,null_tracker,start,runtime.caml_memprof_stop];
- function _b8_(_od_){return runtime.caml_final_release(_od_)}
- function _b9_(_oc_,_ob_)
- {return runtime.caml_final_register_called_without_value(_oc_,_ob_)}
- var
- Stdlib_Gc=
- [0,
- print_stat,
- allocated_bytes,
- function(_oa_,_n$_){return runtime.caml_final_register(_oa_,_n$_)},
- _b9_,
- _b8_,
- create_alarm,
- delete_alarm,
- _b7_];
- caml_register_global(797,Stdlib_Gc,"Stdlib__Gc");
- function string(str)
- {return caml_md5_string(str,0,caml_ml_string_length(str))}
- function bytes(b){return string(caml_string_of_bytes(b))}
- function substring(str,ofs,len)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_string_length(str) - len | 0) < ofs))
- return caml_md5_string(str,ofs,len);
- return invalid_arg(cst_Digest_substring)}
- function subbytes(b,ofs,len)
- {return substring(caml_string_of_bytes(b),ofs,len)}
- function file(filename)
- {var ic=open_in_bin(filename);
- try
- {var d=runtime.caml_md5_chan(ic,-1)}
- catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e}
- caml_ml_close_channel(ic);
- return d}
- function output$0(chan,digest){return output_string(chan,digest)}
- function input$0(chan){return really_input_string(chan,16)}
- function char_hex(n){var _n__=10 <= n?87:48;return n + _n__ | 0}
- function to_hex(d)
- {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex);
- var result=caml_create_bytes(32),i=0;
- for(;;)
- {var x=caml_string_get(d,i);
- caml_bytes_unsafe_set(result,i * 2 | 0,char_hex(x >>> 4 | 0));
- caml_bytes_unsafe_set(result,(i * 2 | 0) + 1 | 0,char_hex(x & 15));
- var _n9_=i + 1 | 0;
- if(15 !== i){var i=_n9_;continue}
- return caml_string_of_bytes(result)}}
- function from_hex(s)
- {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex);
- function digit(c)
- {if(65 <= c)
- {if(97 <= c)
- {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
- else
- if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
- else
- if(! (9 < c - 48 >>> 0))return c - 48 | 0;
- throw [0,Invalid_argument,cst_Digest_from_hex$0]}
- var result=caml_create_bytes(16),i=0;
- for(;;)
- {var i$0=2 * i | 0,_n7_=digit(caml_string_get(s,i$0 + 1 | 0));
- caml_bytes_set
- (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _n7_ | 0));
- var _n8_=i + 1 | 0;
- if(15 !== i){var i=_n8_;continue}
- return caml_string_of_bytes(result)}}
- var
- Stdlib_Digest=
- [0,
- compare$8,
- equal$8,
- string,
- bytes,
- substring,
- subbytes,
- file,
- output$0,
- input$0,
- to_hex,
- from_hex];
- caml_register_global(798,Stdlib_Digest,"Stdlib__Digest");
- function new_state(param){return [0,caml_make_vect(55,0),0]}
- function assign(st1,st2)
- {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0}
- function full_init(s,seed)
- {var seed$0=0 === seed.length - 1?[0,0]:seed,l=seed$0.length - 1,i$0=0;
- for(;;)
- {caml_check_bound(s[1],i$0)[1 + i$0] = i$0;
- var _n6_=i$0 + 1 | 0;
- if(54 !== i$0){var i$0=_n6_;continue}
- var accu=[0,cst_x$1],_n2_=54 + max$1(55,l) | 0,_n1_=0;
- if(! (_n2_ < 0))
- {var i=_n1_;
- for(;;)
- {var
- j=i % 55 | 0,
- k=caml_mod(i,l),
- x=caml_check_bound(seed$0,k)[1 + k];
- accu[1] = string(cat(accu[1],caml_string_of_jsbytes("" + x)));
- var
- _n3_=accu[1],
- _nX_=caml_string_get(_n3_,3) << 24,
- _nY_=caml_string_get(_n3_,2) << 16,
- _nZ_=caml_string_get(_n3_,1) << 8,
- _n0_=((caml_string_get(_n3_,0) + _nZ_ | 0) + _nY_ | 0) + _nX_ | 0,
- _n4_=(caml_check_bound(s[1],j)[1 + j] ^ _n0_) & 1073741823;
- caml_check_bound(s[1],j)[1 + j] = _n4_;
- var _n5_=i + 1 | 0;
- if(_n2_ !== i){var i=_n5_;continue}
- break}}
- s[2] = 0;
- return 0}}
- function make$3(seed)
- {var result=new_state(0);full_init(result,seed);return result}
- function make_self_init(param){return make$3(caml_sys_random_seed(0))}
- function copy$5(s){var result=new_state(0);assign(result,s);return result}
- function bits(s)
- {s[2] = (s[2] + 1 | 0) % 55 | 0;
- var
- _nU_=s[2],
- curval=caml_check_bound(s[1],_nU_)[1 + _nU_],
- _nV_=(s[2] + 24 | 0) % 55 | 0,
- newval=
- caml_check_bound(s[1],_nV_)[1 + _nV_]
- +
- (curval ^ (curval >>> 25 | 0) & 31)
- |
- 0,
- newval30=newval & 1073741823,
- _nW_=s[2];
- caml_check_bound(s[1],_nW_)[1 + _nW_] = newval30;
- return newval30}
- function intaux(s,n)
- {for(;;)
- {var r=bits(s),v=caml_mod(r,n);
- if(((1073741823 - n | 0) + 1 | 0) < (r - v | 0))continue;
- return v}}
- function int$0(s,bound)
- {if(! (1073741823 < bound) && 0 < bound)return intaux(s,bound);
- return invalid_arg(cst_Random_int)}
- function full_int(s,bound)
- {if(0 < bound)
- {if(1073741823 < bound)
- for(;;)
- {var b1=bits(s),b2=bits(s);
- if(bound <= 2147483647)
- var bpos=(b2 & 1073725440) << 1 | b1 >>> 15 | 0,r=bpos;
- else
- var
- b3=bits(s),
- bpos$0=
- ((b3 & 1073741312) << 12 | b2 >>> 9 | 0)
- <<
- 20
- |
- b1
- >>>
- 10
- |
- 0,
- r=bpos$0;
- var v=caml_mod(r,bound);
- if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue;
- return v}
- return intaux(s,bound)}
- return invalid_arg(cst_Random_full_int)}
- function int32(s,bound)
- {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32);
- for(;;)
- {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound);
- if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0))
- continue;
- return v}}
- function int64(s,bound)
- {if(caml_lessequal(bound,_b$_))return invalid_arg(cst_Random_int64);
- for(;;)
- {var
- b1=caml_int64_of_int32(bits(s)),
- b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30),
- b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60),
- r=caml_int64_or(b1,caml_int64_or(b2,b3)),
- v=runtime.caml_int64_mod(r,bound);
- if
- (caml_greaterthan
- (caml_int64_sub(r,v),
- caml_int64_add(caml_int64_sub(max_int$2,bound),_b__)))
- continue;
- return v}}
- function nativeint(s,bound){return int32(s,bound)}
- function float$0(s,bound)
- {var r1=bits(s),r2=bits(s);
- return (r1 / 1073741824. + r2) / 1073741824. * bound}
- function bool(s){return 0 === (bits(s) & 1)?1:0}
- var default$0=[0,_ca_.slice(),0];
- function bits$0(param){return bits(default$0)}
- function int$1(bound){return int$0(default$0,bound)}
- function full_int$0(bound){return full_int(default$0,bound)}
- function int32$0(bound){return int32(default$0,bound)}
- function nativeint$0(bound){return nativeint(default$0,bound)}
- function int64$0(bound){return int64(default$0,bound)}
- function float$1(scale){return float$0(default$0,scale)}
- function bool$0(param){return bool(default$0)}
- function full_init$0(seed){return full_init(default$0,seed)}
- function init$4(seed){return full_init(default$0,[0,seed])}
- function self_init(param){return full_init$0(caml_sys_random_seed(0))}
- function get_state(param){return copy$5(default$0)}
- function set_state(s){return assign(default$0,s)}
- var
- _cb_=
- [0,
- make$3,
- make_self_init,
- copy$5,
- bits,
- int$0,
- full_int,
- int32,
- nativeint,
- int64,
- float$0,
- bool],
- Stdlib_Random=
- [0,
- init$4,
- full_init$0,
- self_init,
- bits$0,
- int$1,
- full_int$0,
- int32$0,
- nativeint$0,
- int64$0,
- float$1,
- bool$0,
- _cb_,
- get_state,
- set_state];
- caml_register_global(799,Stdlib_Random,"Stdlib__Random");
- function ongoing_traversal(h)
- {var _nS_=h.length - 1 < 4?1:0,_nT_=_nS_ || (h[4] < 0?1:0);return _nT_}
- function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0}
- try
- {var _cX_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_cX_}
- catch(_nQ_)
- {_nQ_ = caml_wrap_exception(_nQ_);
- if(_nQ_ !== Not_found)throw _nQ_;
- try
- {var _cW_=caml_sys_getenv(cst_CAMLRUNPARAM),_cc_=_cW_}
- catch(_nR_)
- {_nR_ = caml_wrap_exception(_nR_);
- if(_nR_ !== Not_found)throw _nR_;
- var _cc_=cst$66}
- var params=_cc_}
- var
- randomized_default=contains$0(params,82),
- randomized=[0,randomized_default];
- function randomize(param){randomized[1] = 1;return 0}
- function is_randomized(param){return randomized[1]}
- var prng=[246,function(_nP_){return caml_call1(_cb_[2],0)}];
- function power_2_above(x,n)
- {var x$0=x;
- for(;;)
- {if(n <= x$0)return x$0;
- if(max_array_length < (x$0 * 2 | 0))return x$0;
- var x$1=x$0 * 2 | 0,x$0=x$1;
- continue}}
- function create$3(opt,initial_size)
- {if(opt)var sth=opt[1],random=sth;else var random=randomized[1];
- var s=power_2_above(16,initial_size);
- if(random)
- var
- _nN_=caml_obj_tag(prng),
- _nO_=250 === _nN_?prng[1]:246 === _nN_?force_lazy_block(prng):prng,
- seed=caml_call1(_cb_[4],_nO_);
- else
- var seed=0;
- return [0,0,caml_make_vect(s,0),seed,s]}
- function clear$2(h)
- {var _nM_=0 < h[1]?1:0;
- return _nM_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_nM_}
- function reset$0(h)
- {var len=h[2].length - 1;
- if(4 <= h.length - 1 && len !== abs(h[4]))
- {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0}
- return clear$2(h)}
- function copy_bucketlist(param)
- {if(param)
- {var
- key=param[1],
- data=param[2],
- next=param[3],
- prec$0=[0,key,data,next],
- prec=prec$0,
- param$0=next;
- for(;;)
- {if(param$0)
- {var
- key$0=param$0[1],
- data$0=param$0[2],
- next$0=param$0[3],
- r=[0,key$0,data$0,next$0];
- prec[3] = r;
- var prec=r,param$0=next$0;
- continue}
- return prec$0}}
- return 0}
- function copy$6(init)
- {var _nJ_=init[4],_nK_=init[3],_nL_=map$6(copy_bucketlist,init[2]);
- return [0,init[1],_nL_,_nK_,_nJ_]}
- function length$4(h){return h[1]}
- function insert_all_buckets(indexfun,inplace,odata,ndata)
- {var
- nsize=ndata.length - 1,
- ndata_tail=caml_make_vect(nsize,0),
- _nD_=odata.length - 1 - 1 | 0,
- _nC_=0;
- if(! (_nD_ < 0))
- {var i$0=_nC_;
- a:
- for(;;)
- {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1;
- for(;;)
- {if(cell)
- {var
- key=cell[1],
- data=cell[2],
- next=cell[3],
- cell$0=inplace?cell:[0,key,data,0],
- nidx=caml_call1(indexfun,key),
- match=caml_check_bound(ndata_tail,nidx)[1 + nidx];
- if(match)
- match[3] = cell$0;
- else
- caml_check_bound(ndata,nidx)[1 + nidx] = cell$0;
- caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0;
- var cell=next;
- continue}
- var _nI_=i$0 + 1 | 0;
- if(_nD_ !== i$0){var i$0=_nI_;continue a}
- break}
- break}}
- if(inplace)
- {var _nF_=nsize - 1 | 0,_nE_=0;
- if(! (_nF_ < 0))
- {var i=_nE_;
- for(;;)
- {var match$0=caml_check_bound(ndata_tail,i)[1 + i];
- if(match$0)match$0[3] = 0;
- var _nH_=i + 1 | 0;
- if(_nF_ !== i){var i=_nH_;continue}
- break}}
- var _nG_=0}
- else
- var _nG_=inplace;
- return _nG_}
- function resize$0(indexfun,h)
- {var
- odata=h[2],
- osize=odata.length - 1,
- nsize=osize * 2 | 0,
- _nB_=nsize < max_array_length?1:0;
- if(_nB_)
- {var ndata=caml_make_vect(nsize,0),inplace=1 - ongoing_traversal(h);
- h[2] = ndata;
- return insert_all_buckets(caml_call1(indexfun,h),inplace,odata,ndata)}
- return _nB_}
- function iter$10(f,h)
- {function do_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var key=param$0[1],data=param$0[2],next=param$0[3];
- caml_call2(f,key,data);
- var param$0=next;
- continue}
- return 0}}
- var old_trav=ongoing_traversal(h);
- if(1 - old_trav)flip_ongoing_traversal(h);
- try
- {var d=h[2],_nx_=d.length - 1 - 1 | 0,_nw_=0;
- if(! (_nx_ < 0))
- {var i=_nw_;
- for(;;)
- {do_bucket(caml_check_bound(d,i)[1 + i]);
- var _nA_=i + 1 | 0;
- if(_nx_ !== i){var i=_nA_;continue}
- break}}
- var _ny_=1 - old_trav,_nz_=_ny_?flip_ongoing_traversal(h):_ny_;
- return _nz_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(old_trav)throw exn;
- flip_ongoing_traversal(h);
- throw exn}}
- function filter_map_inplace_bucket(f,h,i,prec,slot)
- {var prec$0=prec,slot$0=slot;
- for(;;)
- {if(slot$0)
- {var
- key=slot$0[1],
- data=slot$0[2],
- next=slot$0[3],
- match=caml_call2(f,key,data);
- if(match)
- {var data$0=match[1];
- if(prec$0)
- prec$0[3] = slot$0;
- else
- caml_check_bound(h[2],i)[1 + i] = slot$0;
- slot$0[2] = data$0;
- var prec$0=slot$0,slot$0=next;
- continue}
- h[1] = h[1] - 1 | 0;
- var slot$0=next;
- continue}
- return prec$0
- ?(prec$0[3] = 0,0)
- :(caml_check_bound(h[2],i)[1 + i] = 0,0)}}
- function filter_map_inplace(f,h)
- {var d=h[2],old_trav=ongoing_traversal(h);
- if(1 - old_trav)flip_ongoing_traversal(h);
- try
- {var _ns_=d.length - 1 - 1 | 0,_nr_=0;
- if(! (_ns_ < 0))
- {var i=_nr_;
- for(;;)
- {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]);
- var _nv_=i + 1 | 0;
- if(_ns_ !== i){var i=_nv_;continue}
- break}}
- var _nt_=1 - old_trav,_nu_=_nt_?flip_ongoing_traversal(h):_nt_;
- return _nu_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(old_trav)throw exn;
- flip_ongoing_traversal(h);
- throw exn}}
- function fold$4(f,h,init)
- {function do_bucket(b,accu)
- {var b$0=b,accu$0=accu;
- for(;;)
- {if(b$0)
- {var
- key=b$0[1],
- data=b$0[2],
- next=b$0[3],
- accu$1=caml_call3(f,key,data,accu$0),
- b$0=next,
- accu$0=accu$1;
- continue}
- return accu$0}}
- var old_trav=ongoing_traversal(h);
- if(1 - old_trav)flip_ongoing_traversal(h);
- try
- {var d=h[2],accu=[0,init],_nn_=d.length - 1 - 1 | 0,_nm_=0;
- if(! (_nn_ < 0))
- {var i=_nm_;
- for(;;)
- {var _np_=accu[1];
- accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_np_);
- var _nq_=i + 1 | 0;
- if(_nn_ !== i){var i=_nq_;continue}
- break}}
- if(1 - old_trav)flip_ongoing_traversal(h);
- var _no_=accu[1];
- return _no_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(old_trav)throw exn;
- flip_ongoing_traversal(h);
- throw exn}}
- function bucket_length(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var
- param$1=param$0[3],
- accu$1=accu$0 + 1 | 0,
- accu$0=accu$1,
- param$0=param$1;
- continue}
- return accu$0}}
- function stats(h)
- {var
- _ni_=h[2],
- _nj_=0,
- mbl=
- fold_left$3
- (function(m,b){return max$1(m,bucket_length(0,b))},_nj_,_ni_),
- histo=caml_make_vect(mbl + 1 | 0,0),
- _nk_=h[2];
- iter$5
- (function(b)
- {var
- l=bucket_length(0,b),
- _nl_=caml_check_bound(histo,l)[1 + l] + 1 | 0;
- caml_check_bound(histo,l)[1 + l] = _nl_;
- return 0},
- _nk_);
- return [0,h[1],h[2].length - 1,mbl,histo]}
- function to_seq$9(tbl)
- {var tbl_data=tbl[2];
- function aux(i,buck,param)
- {var i$0=i,buck$0=buck;
- for(;;)
- {if(buck$0)
- {var key=buck$0[1],data=buck$0[2],next=buck$0[3];
- return [0,[0,key,data],function(_nh_){return aux(i$0,next,_nh_)}]}
- if(i$0 === tbl_data.length - 1)return 0;
- var
- buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0],
- i$1=i$0 + 1 | 0,
- i$0=i$1,
- buck$0=buck$1;
- continue}}
- var _ne_=0,_nf_=0;
- return function(_ng_){return aux(_nf_,_ne_,_ng_)}}
- function to_seq_keys(m)
- {var _na_=to_seq$9(m);
- function _nb_(_nd_){return _nd_[1]}
- return function(_nc_){return map(_nb_,_na_,_nc_)}}
- function to_seq_values(m)
- {var _m8_=to_seq$9(m);
- function _m9_(_m$_){return _m$_[2]}
- return function(_m__){return map(_m9_,_m8_,_m__)}}
- function MakeSeeded(H)
- {function key_index(h,key)
- {var _m7_=h[2].length - 1 - 1 | 0;
- return caml_call2(H[2],h[3],key) & _m7_}
- function add(h,key,data)
- {var
- i=key_index(h,key),
- bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]];
- caml_check_bound(h[2],i)[1 + i] = bucket;
- h[1] = h[1] + 1 | 0;
- var _m6_=h[2].length - 1 << 1 < h[1]?1:0;
- return _m6_?resize$0(key_index,h):_m6_}
- function remove(h,key)
- {var
- i=key_index(h,key),
- c$0=caml_check_bound(h[2],i)[1 + i],
- prec=0,
- c=c$0;
- for(;;)
- {if(c)
- {var k=c[1],next=c[3];
- if(caml_call2(H[1],k,key))
- {h[1] = h[1] - 1 | 0;
- return prec
- ?(prec[3] = next,0)
- :(caml_check_bound(h[2],i)[1 + i] = next,0)}
- var prec=c,c=next;
- continue}
- return 0}}
- function find(h,key)
- {var _m5_=key_index(h,key),match=caml_check_bound(h[2],_m5_)[1 + _m5_];
- if(match)
- {var k1=match[1],d1=match[2],next1=match[3];
- if(caml_call2(H[1],key,k1))return d1;
- if(next1)
- {var k2=next1[1],d2=next1[2],next2=next1[3];
- if(caml_call2(H[1],key,k2))return d2;
- if(next2)
- {var k3=next2[1],d3=next2[2],next3=next2[3];
- if(caml_call2(H[1],key,k3))return d3;
- var param=next3;
- for(;;)
- {if(param)
- {var k=param[1],data=param[2],next=param[3];
- if(caml_call2(H[1],key,k))return data;
- var param=next;
- continue}
- throw Not_found}}
- throw Not_found}
- throw Not_found}
- throw Not_found}
- function find_opt(h,key)
- {var _m4_=key_index(h,key),match=caml_check_bound(h[2],_m4_)[1 + _m4_];
- if(match)
- {var k1=match[1],d1=match[2],next1=match[3];
- if(caml_call2(H[1],key,k1))return [0,d1];
- if(next1)
- {var k2=next1[1],d2=next1[2],next2=next1[3];
- if(caml_call2(H[1],key,k2))return [0,d2];
- if(next2)
- {var k3=next2[1],d3=next2[2],next3=next2[3];
- if(caml_call2(H[1],key,k3))return [0,d3];
- var param=next3;
- for(;;)
- {if(param)
- {var k=param[1],data=param[2],next=param[3];
- if(caml_call2(H[1],key,k))return [0,data];
- var param=next;
- continue}
- return 0}}
- return 0}
- return 0}
- return 0}
- function find_all(h,key)
- {function find_in_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var k=param$0[1],d=param$0[2],next=param$0[3];
- if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)];
- var param$0=next;
- continue}
- return 0}}
- var _m3_=key_index(h,key);
- return find_in_bucket(caml_check_bound(h[2],_m3_)[1 + _m3_])}
- function replace(h,key,data)
- {var
- i=key_index(h,key),
- param$0=caml_check_bound(h[2],i)[1 + i],
- param=param$0;
- for(;;)
- {if(param)
- {var k=param[1],next=param[3];
- if(! caml_call2(H[1],k,key)){var param=next;continue}
- param[1] = key;
- param[2] = data;
- var _m0_=0}
- else
- var _m0_=1;
- if(_m0_)
- {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0];
- h[1] = h[1] + 1 | 0;
- var _m1_=h[2].length - 1 << 1 < h[1]?1:0;
- if(_m1_)return resize$0(key_index,h);
- var _m2_=_m1_}
- else
- var _m2_=_m0_;
- return _m2_}}
- function mem(h,key)
- {var
- _mZ_=key_index(h,key),
- param$0=caml_check_bound(h[2],_mZ_)[1 + _mZ_],
- param=param$0;
- for(;;)
- {if(param)
- {var k=param[1],next=param[3],_mY_=caml_call2(H[1],k,key);
- if(_mY_)return _mY_;
- var param=next;
- continue}
- return 0}}
- function add_seq(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return add(tbl,k,v)},
- i)}
- function replace_seq(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return replace(tbl,k,v)},
- i)}
- function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl}
- return [0,
- create$3,
- clear$2,
- reset$0,
- copy$6,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter$10,
- filter_map_inplace,
- fold$4,
- length$4,
- stats,
- to_seq$9,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq]}
- function Make$0(H)
- {var equal=H[1];
- function hash(seed,x){return caml_call1(H[2],x)}
- var
- include=MakeSeeded([0,equal,hash]),
- clear=include[2],
- reset=include[3],
- copy=include[4],
- add=include[5],
- remove=include[6],
- find=include[7],
- find_opt=include[8],
- find_all=include[9],
- replace=include[10],
- mem=include[11],
- iter=include[12],
- filter_map_inplace=include[13],
- fold=include[14],
- length=include[15],
- stats=include[16],
- to_seq=include[17],
- to_seq_keys=include[18],
- to_seq_values=include[19],
- add_seq=include[20],
- replace_seq=include[21],
- _mX_=include[1];
- function create(sz){return caml_call2(_mX_,_cd_,sz)}
- function of_seq(i)
- {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
- return [0,
- create,
- clear,
- reset,
- copy,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter,
- filter_map_inplace,
- fold,
- length,
- stats,
- to_seq,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq]}
- function hash$1(x){return caml_hash(10,100,0,x)}
- function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)}
- function seeded_hash(seed,x){return caml_hash(10,100,seed,x)}
- function key_index(h,key)
- {return 4 <= h.length - 1
- ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0)
- :invalid_arg(cst_Hashtbl_unsupported_hash_t)}
- function add$0(h,key,data)
- {var
- i=key_index(h,key),
- bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]];
- caml_check_bound(h[2],i)[1 + i] = bucket;
- h[1] = h[1] + 1 | 0;
- var _mW_=h[2].length - 1 << 1 < h[1]?1:0;
- return _mW_?resize$0(key_index,h):_mW_}
- function remove(h,key)
- {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0;
- for(;;)
- {if(c)
- {var k=c[1],next=c[3];
- if(0 === caml_compare(k,key))
- {h[1] = h[1] - 1 | 0;
- return prec
- ?(prec[3] = next,0)
- :(caml_check_bound(h[2],i)[1 + i] = next,0)}
- var prec=c,c=next;
- continue}
- return 0}}
- function find$0(h,key)
- {var _mV_=key_index(h,key),match=caml_check_bound(h[2],_mV_)[1 + _mV_];
- if(match)
- {var k1=match[1],d1=match[2],next1=match[3];
- if(0 === caml_compare(key,k1))return d1;
- if(next1)
- {var k2=next1[1],d2=next1[2],next2=next1[3];
- if(0 === caml_compare(key,k2))return d2;
- if(next2)
- {var k3=next2[1],d3=next2[2],next3=next2[3];
- if(0 === caml_compare(key,k3))return d3;
- var param=next3;
- for(;;)
- {if(param)
- {var k=param[1],data=param[2],next=param[3];
- if(0 === caml_compare(key,k))return data;
- var param=next;
- continue}
- throw Not_found}}
- throw Not_found}
- throw Not_found}
- throw Not_found}
- function find_opt$1(h,key)
- {var _mU_=key_index(h,key),match=caml_check_bound(h[2],_mU_)[1 + _mU_];
- if(match)
- {var k1=match[1],d1=match[2],next1=match[3];
- if(0 === caml_compare(key,k1))return [0,d1];
- if(next1)
- {var k2=next1[1],d2=next1[2],next2=next1[3];
- if(0 === caml_compare(key,k2))return [0,d2];
- if(next2)
- {var k3=next2[1],d3=next2[2],next3=next2[3];
- if(0 === caml_compare(key,k3))return [0,d3];
- var param=next3;
- for(;;)
- {if(param)
- {var k=param[1],data=param[2],next=param[3];
- if(0 === caml_compare(key,k))return [0,data];
- var param=next;
- continue}
- return 0}}
- return 0}
- return 0}
- return 0}
- function find_all$0(h,key)
- {function find_in_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var k=param$0[1],data=param$0[2],next=param$0[3];
- if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)];
- var param$0=next;
- continue}
- return 0}}
- var _mT_=key_index(h,key);
- return find_in_bucket(caml_check_bound(h[2],_mT_)[1 + _mT_])}
- function replace(h,key,data)
- {var
- i=key_index(h,key),
- param$0=caml_check_bound(h[2],i)[1 + i],
- param=param$0;
- for(;;)
- {if(param)
- {var k=param[1],next=param[3];
- if(0 !== caml_compare(k,key)){var param=next;continue}
- param[1] = key;
- param[2] = data;
- var _mQ_=0}
- else
- var _mQ_=1;
- if(_mQ_)
- {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0];
- h[1] = h[1] + 1 | 0;
- var _mR_=h[2].length - 1 << 1 < h[1]?1:0;
- if(_mR_)return resize$0(key_index,h);
- var _mS_=_mR_}
- else
- var _mS_=_mQ_;
- return _mS_}}
- function mem$2(h,key)
- {var
- _mP_=key_index(h,key),
- param$0=caml_check_bound(h[2],_mP_)[1 + _mP_],
- param=param$0;
- for(;;)
- {if(param)
- {var k=param[1],next=param[3],_mO_=0 === caml_compare(k,key)?1:0;
- if(_mO_)return _mO_;
- var param=next;
- continue}
- return 0}}
- function add_seq$2(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return add$0(tbl,k,v)},
- i)}
- function replace_seq(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return replace(tbl,k,v)},
- i)}
- function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl}
- function rebuild(opt,h)
- {if(opt)var sth=opt[1],random=sth;else var random=randomized[1];
- var s=power_2_above(16,h[2].length - 1);
- if(random)
- var
- _mH_=caml_obj_tag(prng),
- _mI_=250 === _mH_?prng[1]:246 === _mH_?force_lazy_block(prng):prng,
- seed=caml_call1(_cb_[4],_mI_);
- else
- var seed=4 <= h.length - 1?h[3]:0;
- var
- _mJ_=4 <= h.length - 1?h[4]:s,
- h$0=[0,h[1],caml_make_vect(s,0),seed,_mJ_],
- _mK_=h$0[2],
- _mL_=h[2],
- _mM_=0;
- insert_all_buckets
- (function(_mN_){return key_index(h$0,_mN_)},_mM_,_mL_,_mK_);
- return h$0}
- var
- Stdlib_Hashtbl=
- [0,
- create$3,
- clear$2,
- reset$0,
- copy$6,
- add$0,
- find$0,
- find_opt$1,
- find_all$0,
- mem$2,
- remove,
- replace,
- iter$10,
- filter_map_inplace,
- fold$4,
- length$4,
- randomize,
- is_randomized,
- rebuild,
- stats,
- to_seq$9,
- to_seq_keys,
- to_seq_values,
- add_seq$2,
- replace_seq,
- of_seq$7,
- Make$0,
- MakeSeeded,
- hash$1,
- seeded_hash,
- hash_param,
- caml_hash];
- caml_register_global(800,Stdlib_Hashtbl,"Stdlib__Hashtbl");
- function weak_create(l)
- {var _mF_=0 <= l?1:0,_mG_=_mF_?l <= _t_[15]?1:0:_mF_;
- if(1 - _mG_)invalid_arg(cst_Weak_create);
- return runtime.caml_weak_create(l)}
- function length$5(x){return x.length - 1 - 2 | 0}
- function raise_if_invalid_offset$0(e,o,msg)
- {var _mC_=0 <= o?1:0,_mD_=_mC_?o < length$5(e)?1:0:_mC_,_mE_=1 - _mD_;
- return _mE_?invalid_arg(msg):_mE_}
- function set$0(e,o,x)
- {raise_if_invalid_offset$0(e,o,cst_Weak_set);
- if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)}
- return caml_ephe_unset_key(e,o)}
- function get$1(e,o)
- {raise_if_invalid_offset$0(e,o,cst_Weak_get);
- return runtime.caml_weak_get(e,o)}
- function get_copy(e,o)
- {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy);
- return runtime.caml_weak_get_copy(e,o)}
- function check$0(e,o)
- {raise_if_invalid_offset$0(e,o,cst_Weak_check);
- return runtime.caml_weak_check(e,o)}
- function blit$4(e1,o1,e2,o2,l)
- {if
- (0
- <=
- l
- &&
- 0
- <=
- o1
- &&
- !
- ((length$5(e1) - l | 0) < o1)
- &&
- 0
- <=
- o2
- &&
- !
- ((length$5(e2) - l | 0) < o2))
- {var
- _mA_=0 !== l?1:0,
- _mB_=_mA_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_mA_;
- return _mB_}
- return invalid_arg(cst_Weak_blit)}
- function fill$2(ar,ofs,len,x)
- {if(0 <= ofs && 0 <= len && ! ((length$5(ar) - len | 0) < ofs))
- {var _my_=(ofs + len | 0) - 1 | 0;
- if(! (_my_ < ofs))
- {var i=ofs;
- for(;;)
- {set$0(ar,i,x);
- var _mz_=i + 1 | 0;
- if(_my_ !== i){var i=_mz_;continue}
- break}}
- return 0}
- throw [0,Invalid_argument,cst_Weak_fill]}
- function Make$1(H)
- {var emptybucket=weak_create(0);
- function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)}
- var limit=7;
- function create(sz)
- {var
- sz$0=7 <= sz?sz:7,
- sz$1=max_array_length < sz$0?max_array_length:sz$0;
- return [0,
- caml_make_vect(sz$1,emptybucket),
- caml_make_vect(sz$1,[0]),
- limit,
- 0,
- 0]}
- function clear(t)
- {var _mw_=t[1].length - 1 - 1 | 0,_mv_=0;
- if(! (_mw_ < 0))
- {var i=_mv_;
- for(;;)
- {caml_check_bound(t[1],i)[1 + i] = emptybucket;
- caml_check_bound(t[2],i)[1 + i] = [0];
- var _mx_=i + 1 | 0;
- if(_mw_ !== i){var i=_mx_;continue}
- break}}
- t[3] = limit;
- t[4] = 0;
- return 0}
- function fold(f,t,init)
- {var _mu_=t[1],i=0;
- return fold_right$2
- (function(b,accu$1)
- {var i$0=i,accu=accu$1;
- for(;;)
- {if(length$5(b) <= i$0)return accu;
- var match=get$1(b,i$0);
- if(match)
- {var
- v=match[1],
- accu$0=caml_call2(f,v,accu),
- i$1=i$0 + 1 | 0,
- i$0=i$1,
- accu=accu$0;
- continue}
- var i$2=i$0 + 1 | 0,i$0=i$2;
- continue}},
- _mu_,
- init)}
- function iter(f,t)
- {var _mt_=t[1],i=0;
- return iter$5
- (function(b)
- {var i$0=i;
- for(;;)
- {if(length$5(b) <= i$0)return 0;
- var match=get$1(b,i$0);
- if(match)
- {var v=match[1];
- caml_call1(f,v);
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}
- var i$2=i$0 + 1 | 0,i$0=i$2;
- continue}},
- _mt_)}
- function count_bucket(i,b,accu)
- {var i$0=i,accu$0=accu;
- for(;;)
- {if(length$5(b) <= i$0)return accu$0;
- var
- _ms_=check$0(b,i$0)?1:0,
- accu$1=accu$0 + _ms_ | 0,
- i$1=i$0 + 1 | 0,
- i$0=i$1,
- accu$0=accu$1;
- continue}}
- function count(t)
- {var _mn_=0,_mo_=t[1],_mp_=0;
- return fold_right$2
- (function(_mq_,_mr_){return count_bucket(_mp_,_mq_,_mr_)},
- _mo_,
- _mn_)}
- function add_aux(t,setter,d,h,index)
- {var
- bucket$0=caml_check_bound(t[1],index)[1 + index],
- hashes=caml_check_bound(t[2],index)[1 + index],
- sz=length$5(bucket$0),
- i$3=0;
- for(;;)
- {if(sz <= i$3)
- {var
- newsz=
- min$1(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0);
- if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann);
- var
- newbucket$0=weak_create(newsz),
- newhashes=caml_make_vect(newsz,0);
- blit$4(bucket$0,0,newbucket$0,0,sz);
- blit$1(hashes,0,newhashes,0,sz);
- caml_call3(setter,newbucket$0,sz,d);
- caml_check_bound(newhashes,sz)[1 + sz] = h;
- caml_check_bound(t[1],index)[1 + index] = newbucket$0;
- caml_check_bound(t[2],index)[1 + index] = newhashes;
- var _mj_=sz <= t[3]?1:0,_mk_=_mj_?t[3] < newsz?1:0:_mj_;
- if(_mk_)
- {t[4] = t[4] + 1 | 0;
- var i$4=0;
- for(;;)
- {var
- _l$_=t[5],
- bucket=caml_check_bound(t[1],_l$_)[1 + _l$_],
- _ma_=t[5],
- hbucket=caml_check_bound(t[2],_ma_)[1 + _ma_],
- n=length$5(bucket),
- prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0,
- live=count_bucket(0,bucket,0);
- if(live <= prev_len)
- {var j$2=length$5(bucket) - 1 | 0,i$0=0,j=j$2;
- for(;;)
- {if(prev_len <= j)
- {if(check$0(bucket,i$0))
- {var i$1=i$0 + 1 | 0,i$0=i$1;continue}
- if(check$0(bucket,j))
- {blit$4(bucket,j,bucket,i$0,1);
- var _mb_=caml_check_bound(hbucket,j)[1 + j];
- caml_check_bound(hbucket,i$0)[1 + i$0] = _mb_;
- var j$0=j - 1 | 0,i$2=i$0 + 1 | 0,i$0=i$2,j=j$0;
- continue}
- var j$1=j - 1 | 0,j=j$1;
- continue}
- if(0 === prev_len)
- {var _mc_=t[5];
- caml_check_bound(t[1],_mc_)[1 + _mc_] = emptybucket;
- var _md_=t[5];
- caml_check_bound(t[2],_md_)[1 + _md_] = [0]}
- else
- {var newbucket=weak_create(prev_len);
- blit$4(bucket,0,newbucket,0,prev_len);
- var _mg_=t[5];
- caml_check_bound(t[1],_mg_)[1 + _mg_] = newbucket;
- var _mh_=sub$1(hbucket,0,prev_len),_mi_=t[5];
- caml_check_bound(t[2],_mi_)[1 + _mi_] = _mh_}
- var _me_=t[3] < n?1:0,_mf_=_me_?prev_len <= t[3]?1:0:_me_;
- if(_mf_)t[4] = t[4] - 1 | 0;
- break}}
- t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1);
- var _mm_=i$4 + 1 | 0;
- if(2 !== i$4){var i$4=_mm_;continue}
- break}}
- var _ml_=((t[1].length - 1) / 2 | 0) < t[4]?1:0;
- if(_ml_)
- {var
- n$0=t[1].length - 1,
- newlen=min$1(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length);
- if(n$0 < newlen)
- {var newt=create(newlen),_l__=t[1],i=0;
- iteri$2
- (function(j,ob)
- {var i$0=i;
- for(;;)
- {if(length$5(ob) <= i$0)return 0;
- var match=check$0(ob,i$0);
- if(match)
- {var
- oh=caml_check_bound(t[2],j)[1 + j],
- setter$0=
- function(i)
- {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)}
- return setter},
- setter=setter$0(i$0),
- h=caml_check_bound(oh,i$0)[1 + i$0];
- add_aux(newt,setter,0,h,get_index(newt,h));
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}
- var i$2=i$0 + 1 | 0,i$0=i$2;
- continue}},
- _l__);
- t[1] = newt[1];
- t[2] = newt[2];
- t[3] = newt[3];
- t[4] = newt[4];
- t[5] = caml_mod(t[5],newt[1].length - 1);
- return 0}
- t[3] = max_int;
- t[4] = 0;
- return 0}
- return _ml_}
- if(check$0(bucket$0,i$3)){var i$5=i$3 + 1 | 0,i$3=i$5;continue}
- caml_call3(setter,bucket$0,i$3,d);
- caml_check_bound(hashes,i$3)[1 + i$3] = h;
- return 0}}
- function add(t,d)
- {var h=caml_call1(H[2],d);
- return add_aux(t,set$0,[0,d],h,get_index(t,h))}
- function find_or(t,d,ifnotfound)
- {var
- h=caml_call1(H[2],d),
- index=get_index(t,h),
- bucket=caml_check_bound(t[1],index)[1 + index],
- hashes=caml_check_bound(t[2],index)[1 + index],
- sz=length$5(bucket),
- i=0;
- for(;;)
- {if(sz <= i)return caml_call2(ifnotfound,h,index);
- if(h === caml_check_bound(hashes,i)[1 + i])
- {var match=get_copy(bucket,i);
- if(match)
- {var v=match[1];
- if(caml_call2(H[1],v,d))
- {var match$0=get$1(bucket,i);
- if(match$0){var v$0=match$0[1];return v$0}
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- var i$1=i + 1 | 0,i=i$1;
- continue}
- var i$2=i + 1 | 0,i=i$2;
- continue}}
- function merge(t,d)
- {return find_or
- (t,
- d,
- function(h,index){add_aux(t,set$0,[0,d],h,index);return d})}
- function find(t,d)
- {return find_or(t,d,function(h,index){throw Not_found})}
- function find_opt(t,d)
- {var
- h=caml_call1(H[2],d),
- index=get_index(t,h),
- bucket=caml_check_bound(t[1],index)[1 + index],
- hashes=caml_check_bound(t[2],index)[1 + index],
- sz=length$5(bucket),
- i=0;
- for(;;)
- {if(sz <= i)return 0;
- if(h === caml_check_bound(hashes,i)[1 + i])
- {var match=get_copy(bucket,i);
- if(match)
- {var v=match[1];
- if(caml_call2(H[1],v,d))
- {var v$0=get$1(bucket,i);
- if(v$0)return v$0;
- var i$0=i + 1 | 0,i=i$0;
- continue}}
- var i$1=i + 1 | 0,i=i$1;
- continue}
- var i$2=i + 1 | 0,i=i$2;
- continue}}
- function find_shadow(t,d,iffound,ifnotfound)
- {var
- h=caml_call1(H[2],d),
- index=get_index(t,h),
- bucket=caml_check_bound(t[1],index)[1 + index],
- hashes=caml_check_bound(t[2],index)[1 + index],
- sz=length$5(bucket),
- i=0;
- for(;;)
- {if(sz <= i)return ifnotfound;
- if(h === caml_check_bound(hashes,i)[1 + i])
- {var match=get_copy(bucket,i);
- if(match)
- {var v=match[1];
- if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)}
- var i$0=i + 1 | 0,i=i$0;
- continue}
- var i$1=i + 1 | 0,i=i$1;
- continue}}
- function remove(t,d)
- {var _l9_=0;
- return find_shadow(t,d,function(w,i){return set$0(w,i,0)},_l9_)}
- function mem(t,d)
- {var _l8_=0;return find_shadow(t,d,function(w,i){return 1},_l8_)}
- function find_all(t,d)
- {var
- h=caml_call1(H[2],d),
- index=get_index(t,h),
- bucket=caml_check_bound(t[1],index)[1 + index],
- hashes=caml_check_bound(t[2],index)[1 + index],
- sz=length$5(bucket),
- i=0,
- accu=0;
- for(;;)
- {if(sz <= i)return accu;
- if(h === caml_check_bound(hashes,i)[1 + i])
- {var match=get_copy(bucket,i);
- if(match)
- {var v=match[1];
- if(caml_call2(H[1],v,d))
- {var match$0=get$1(bucket,i);
- if(match$0)
- {var
- v$0=match$0[1],
- accu$0=[0,v$0,accu],
- i$0=i + 1 | 0,
- i=i$0,
- accu=accu$0;
- continue}
- var i$1=i + 1 | 0,i=i$1;
- continue}}
- var i$2=i + 1 | 0,i=i$2;
- continue}
- var i$3=i + 1 | 0,i=i$3;
- continue}}
- function stats(t)
- {var len=t[1].length - 1,lens=map$6(length$5,t[1]);
- sort(caml_int_compare,lens);
- var
- _l0_=0,
- totlen=
- fold_left$3(function(_l7_,_l6_){return _l7_ + _l6_ | 0},_l0_,lens),
- _l1_=len - 1 | 0,
- _l3_=len / 2 | 0,
- _l2_=caml_check_bound(lens,_l1_)[1 + _l1_],
- _l4_=caml_check_bound(lens,_l3_)[1 + _l3_],
- _l5_=caml_check_bound(lens,0)[1];
- return [0,len,count(t),totlen,_l5_,_l4_,_l2_]}
- return [0,
- create,
- clear,
- merge,
- add,
- remove,
- find,
- find_opt,
- find_all,
- mem,
- iter,
- fold,
- count,
- stats]}
- var
- Stdlib_Weak=
- [0,
- weak_create,
- length$5,
- set$0,
- get$1,
- get_copy,
- check$0,
- fill$2,
- blit$4,
- Make$1];
- caml_register_global(801,Stdlib_Weak,"Stdlib__Weak");
- function id$0(x){return x}
- var
- String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)],
- size=0,
- unknown=-1;
- function pp_enqueue(state,token)
- {state[13] = state[13] + token[3] | 0;return add(token,state[28])}
- var pp_infinity=1000000010;
- function pp_output_string(state,s)
- {return caml_call3(state[17],s,0,caml_ml_string_length(s))}
- function pp_output_newline(state){return caml_call1(state[19],0)}
- function format_pp_text(state,size,text)
- {state[9] = state[9] - size | 0;
- pp_output_string(state,text);
- state[11] = 0;
- return 0}
- function format_string(state,s)
- {var _lZ_=caml_string_notequal(s,cst$67);
- return _lZ_?format_pp_text(state,caml_ml_string_length(s),s):_lZ_}
- function break_new_line(state,param,width)
- {var after=param[3],offset=param[2],before=param[1];
- format_string(state,before);
- pp_output_newline(state);
- state[11] = 1;
- var
- indent=(state[6] - width | 0) + offset | 0,
- real_indent=min$1(state[8],indent);
- state[10] = real_indent;
- state[9] = state[6] - state[10] | 0;
- caml_call1(state[21],state[10]);
- return format_string(state,after)}
- function break_line(state,width){return break_new_line(state,_ce_,width)}
- function break_same_line(state,param)
- {var after=param[3],width=param[2],before=param[1];
- format_string(state,before);
- state[9] = state[9] - width | 0;
- caml_call1(state[20],width);
- return format_string(state,after)}
- function format_pp_token(state,size$0,param)
- {if(typeof param === "number")
- switch(param)
- {case 0:
- var match$3=top_opt(state[3]);
- if(match$3)
- {var
- match$4=match$3[1],
- tabs=match$4[1],
- add_tab=
- function(n,ls)
- {if(ls)
- {var l=ls[2],x=ls[1];
- return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]}
- return [0,n,0]};
- tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]);
- return 0}
- return 0;
- case 1:pop_opt(state[2]);return 0;
- case 2:pop_opt(state[3]);return 0;
- case 3:
- var match$5=top_opt(state[2]);
- if(match$5)
- {var match$6=match$5[1],width$0=match$6[2];
- return break_line(state,width$0)}
- return pp_output_newline(state);
- case 4:
- var _lW_=state[10] !== (state[6] - state[9] | 0)?1:0;
- if(_lW_)
- {var match$1=take_opt(state[28]);
- if(match$1)
- {var match$2=match$1[1],size=match$2[1],length=match$2[3];
- state[12] = state[12] - length | 0;
- state[9] = state[9] + size | 0;
- return 0}
- return 0}
- return _lW_;
- default:
- var match$7=pop_opt(state[5]);
- if(match$7)
- {var tag_name=match$7[1],marker=caml_call1(state[25],tag_name);
- return pp_output_string(state,marker)}
- return 0}
- else
- switch(param[0])
- {case 0:var s=param[1];return format_pp_text(state,size$0,s);
- case 1:
- var
- breaks=param[2],
- fits=param[1],
- off=breaks[2],
- before=breaks[1],
- match$8=top_opt(state[2]);
- if(match$8)
- {var match$9=match$8[1],width$1=match$9[2],box_type$0=match$9[1];
- switch(box_type$0)
- {case 0:return break_same_line(state,fits);
- case 1:return break_new_line(state,breaks,width$1);
- case 2:return break_new_line(state,breaks,width$1);
- case 3:
- return state[9] < (size$0 + caml_ml_string_length(before) | 0)
- ?break_new_line(state,breaks,width$1)
- :break_same_line(state,fits);
- case 4:
- return state[11]
- ?break_same_line(state,fits)
- :state[9] < (size$0 + caml_ml_string_length(before) | 0)
- ?break_new_line(state,breaks,width$1)
- :((state[6] - width$1 | 0) + off | 0) < state[10]
- ?break_new_line(state,breaks,width$1)
- :break_same_line(state,fits);
- default:return break_same_line(state,fits)}}
- return 0;
- case 2:
- var
- off$0=param[2],
- n=param[1],
- insertion_point=state[6] - state[9] | 0,
- match$10=top_opt(state[3]);
- if(match$10)
- {var match$11=match$10[1],tabs$0=match$11[1],_lX_=tabs$0[1];
- if(_lX_)
- {var first=_lX_[1],param$0=tabs$0[1];
- for(;;)
- {if(param$0)
- {var tail=param$0[2],head=param$0[1];
- if(! (insertion_point <= head)){var param$0=tail;continue}
- var _lY_=head}
- else
- var _lY_=first;
- var tab=_lY_;
- break}}
- else
- var tab=insertion_point;
- var offset=tab - insertion_point | 0;
- return 0 <= offset
- ?break_same_line(state,[0,cst$69,offset + n | 0,cst$68])
- :break_new_line
- (state,[0,cst$71,tab + off$0 | 0,cst$70],state[6])}
- return 0;
- case 3:
- var
- ty=param[2],
- off$1=param[1],
- insertion_point$0=state[6] - state[9] | 0;
- if(state[8] < insertion_point$0)
- {var match=top_opt(state[2]);
- if(match)
- {var match$0=match[1],width=match$0[2],box_type=match$0[1];
- if(state[9] < width && ! (3 < box_type - 1 >>> 0))
- break_line(state,width)}
- else
- pp_output_newline(state)}
- var
- width$2=state[9] - off$1 | 0,
- box_type$1=1 === ty?1:state[9] < size$0?ty:5;
- return push([0,box_type$1,width$2],state[2]);
- case 4:var tbox=param[1];return push(tbox,state[3]);
- default:
- var tag_name$0=param[1],marker$0=caml_call1(state[24],tag_name$0);
- pp_output_string(state,marker$0);
- return push(tag_name$0,state[5])}}
- function advance_left(state)
- {for(;;)
- {var match=peek_opt(state[28]);
- if(match)
- {var
- match$0=match[1],
- size=match$0[1],
- length=match$0[3],
- token=match$0[2],
- pending_count=state[13] - state[12] | 0,
- _lU_=0 <= size?1:0,
- _lV_=_lU_ || (state[9] <= pending_count?1:0);
- if(_lV_)
- {take(state[28]);
- var size$0=0 <= size?size:pp_infinity;
- format_pp_token(state,size$0,token);
- state[12] = length + state[12] | 0;
- continue}
- return _lV_}
- return 0}}
- function enqueue_advance(state,tok)
- {pp_enqueue(state,tok);return advance_left(state)}
- function enqueue_string_as(state,size,s)
- {return enqueue_advance(state,[0,size,[0,s],size])}
- function initialize_scan_stack(stack)
- {clear(stack);
- var queue_elem=[0,unknown,_cf_,0];
- return push([0,-1,queue_elem],stack)}
- function set_size(state,ty)
- {var match=top_opt(state[1]);
- if(match)
- {var
- match$0=match[1],
- queue_elem=match$0[2],
- left_total=match$0[1],
- _lP_=queue_elem[1];
- if(left_total < state[12])return initialize_scan_stack(state[1]);
- var _lQ_=queue_elem[2];
- if(typeof _lQ_ !== "number")
- switch(_lQ_[0])
- {case 3:
- var
- _lS_=1 - ty,
- _lT_=
- _lS_
- ?(queue_elem[1] = state[13] + _lP_ | 0,pop_opt(state[1]),0)
- :_lS_;
- return _lT_;
- case 1:
- case 2:
- var
- _lR_=
- ty?(queue_elem[1] = state[13] + _lP_ | 0,pop_opt(state[1]),0):ty;
- return _lR_
- }
- return 0}
- return 0}
- function scan_push(state,b,token)
- {pp_enqueue(state,token);
- if(b)set_size(state,1);
- var elem=[0,state[13],token];
- return push(elem,state[1])}
- function pp_open_box_gen(state,indent,br_ty)
- {state[14] = state[14] + 1 | 0;
- if(state[14] < state[15])
- {var size=- state[13] | 0,elem=[0,size,[3,indent,br_ty],0];
- return scan_push(state,0,elem)}
- var _lN_=state[14] === state[15]?1:0;
- if(_lN_)
- {var _lO_=state[16];
- return enqueue_string_as(state,caml_ml_string_length(_lO_),_lO_)}
- return _lN_}
- function pp_close_box(state,param)
- {var _lL_=1 < state[14]?1:0;
- if(_lL_)
- {if(state[14] < state[15])
- {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)}
- state[14] = state[14] - 1 | 0;
- var _lM_=0}
- else
- var _lM_=_lL_;
- return _lM_}
- function pp_open_stag(state,tag_name)
- {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)}
- var _lK_=state[23];
- if(_lK_)
- {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])}
- return _lK_}
- function pp_close_stag(state,param)
- {if(state[23])pp_enqueue(state,[0,size,5,0]);
- var _lI_=state[22];
- if(_lI_)
- {var match=pop_opt(state[4]);
- if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)}
- var _lJ_=0}
- else
- var _lJ_=_lI_;
- return _lJ_}
- function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])}
- function pp_close_tag(state,param){return pp_close_stag(state,0)}
- function pp_set_print_tags(state,b){state[22] = b;return 0}
- function pp_set_mark_tags(state,b){state[23] = b;return 0}
- function pp_get_print_tags(state,param){return state[22]}
- function pp_get_mark_tags(state,param){return state[23]}
- function pp_set_tags(state,b)
- {pp_set_print_tags(state,b);return pp_set_mark_tags(state,b)}
- function pp_get_formatter_stag_function(state,param)
- {return [0,state[24],state[25],state[26],state[27]]}
- function pp_set_formatter_stag_function(state,param)
- {var pct=param[4],pot=param[3],mct=param[2],mot=param[1];
- state[24] = mot;
- state[25] = mct;
- state[26] = pot;
- state[27] = pct;
- return 0}
- function pp_rinit(state)
- {state[12] = 1;
- state[13] = 1;
- clear$0(state[28]);
- initialize_scan_stack(state[1]);
- clear(state[2]);
- clear(state[3]);
- clear(state[4]);
- clear(state[5]);
- state[10] = 0;
- state[14] = 0;
- state[9] = state[6];
- return pp_open_box_gen(state,0,3)}
- function pp_flush_queue(state,b)
- {var _lH_=state[4];
- iter$7(function(param){return pp_close_tag(state,0)},_lH_);
- for(;;)
- {if(1 < state[14]){pp_close_box(state,0);continue}
- state[13] = pp_infinity;
- advance_left(state);
- if(b)pp_output_newline(state);
- return pp_rinit(state)}}
- function pp_print_as_size(state,size,s)
- {var _lG_=state[14] < state[15]?1:0;
- return _lG_?enqueue_string_as(state,size,s):_lG_}
- function pp_print_as(state,isize,s)
- {return pp_print_as_size(state,isize,s)}
- function pp_print_string(state,s)
- {return pp_print_as(state,caml_ml_string_length(s),s)}
- function pp_print_bytes(state,s)
- {return pp_print_as(state,caml_ml_bytes_length(s),of_bytes(s))}
- function pp_print_int(state,i)
- {return pp_print_string(state,caml_string_of_jsbytes("" + i))}
- function pp_print_float(state,f)
- {return pp_print_string(state,to_string(f))}
- function pp_print_bool(state,b)
- {return pp_print_string(state,string_of_bool(b))}
- function pp_print_char(state,c){return pp_print_as(state,1,make$1(1,c))}
- function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)}
- function pp_open_vbox(state,indent)
- {return pp_open_box_gen(state,indent,1)}
- function pp_open_hvbox(state,indent)
- {return pp_open_box_gen(state,indent,2)}
- function pp_open_hovbox(state,indent)
- {return pp_open_box_gen(state,indent,3)}
- function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)}
- function pp_print_newline(state,param)
- {pp_flush_queue(state,1);return caml_call1(state[18],0)}
- function pp_print_flush(state,param)
- {pp_flush_queue(state,0);return caml_call1(state[18],0)}
- function pp_force_newline(state,param)
- {var _lF_=state[14] < state[15]?1:0;
- return _lF_?enqueue_advance(state,[0,size,3,0]):_lF_}
- function pp_print_if_newline(state,param)
- {var _lE_=state[14] < state[15]?1:0;
- return _lE_?enqueue_advance(state,[0,size,4,0]):_lE_}
- function pp_print_custom_break(state,fits,breaks)
- {var
- after=fits[3],
- width=fits[2],
- before=fits[1],
- _lD_=state[14] < state[15]?1:0;
- if(_lD_)
- {var
- size=- state[13] | 0,
- token=[1,fits,breaks],
- length=
- (caml_ml_string_length(before) + width | 0)
- +
- caml_ml_string_length(after)
- |
- 0,
- elem=[0,size,token,length];
- return scan_push(state,1,elem)}
- return _lD_}
- function pp_print_break(state,width,offset)
- {return pp_print_custom_break
- (state,[0,cst$75,width,cst$74],[0,cst$73,offset,cst$72])}
- function pp_print_space(state,param){return pp_print_break(state,1,0)}
- function pp_print_cut(state,param){return pp_print_break(state,0,0)}
- function pp_open_tbox(state,param)
- {state[14] = state[14] + 1 | 0;
- var _lC_=state[14] < state[15]?1:0;
- if(_lC_)
- {var elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)}
- return _lC_}
- function pp_close_tbox(state,param)
- {var _lz_=1 < state[14]?1:0;
- if(_lz_)
- {var _lA_=state[14] < state[15]?1:0;
- if(_lA_)
- {var elem=[0,size,2,0];
- enqueue_advance(state,elem);
- state[14] = state[14] - 1 | 0;
- var _lB_=0}
- else
- var _lB_=_lA_}
- else
- var _lB_=_lz_;
- return _lB_}
- function pp_print_tbreak(state,width,offset)
- {var _ly_=state[14] < state[15]?1:0;
- if(_ly_)
- {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width];
- return scan_push(state,1,elem)}
- return _ly_}
- function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)}
- function pp_set_tab(state,param)
- {var _lx_=state[14] < state[15]?1:0;
- if(_lx_){var elem=[0,size,0,0];return enqueue_advance(state,elem)}
- return _lx_}
- function pp_set_max_boxes(state,n)
- {var _lv_=1 < n?1:0,_lw_=_lv_?(state[15] = n,0):_lv_;return _lw_}
- function pp_get_max_boxes(state,param){return state[15]}
- function pp_over_max_boxes(state,param)
- {return state[14] === state[15]?1:0}
- function pp_set_ellipsis_text(state,s){state[16] = s;return 0}
- function pp_get_ellipsis_text(state,param){return state[16]}
- function pp_limit(n){return n < 1000000010?n:1000000009}
- function pp_set_max_indent(state,n$0)
- {var _lu_=1 < n$0?1:0;
- if(_lu_)
- {var n$1=state[6] - n$0 | 0,_lt_=1 <= n$1?1:0;
- if(_lt_)
- {var n=pp_limit(n$1);
- state[7] = n;
- state[8] = state[6] - state[7] | 0;
- return pp_rinit(state)}
- return _lt_}
- return _lu_}
- function pp_get_max_indent(state,param){return state[8]}
- function pp_set_margin(state,n)
- {var _ls_=1 <= n?1:0;
- if(_ls_)
- {var n$0=pp_limit(n);
- state[6] = n$0;
- var
- new_max_indent=
- state[8] <= state[6]
- ?state[8]
- :max$1(max$1(state[6] - state[7] | 0,state[6] / 2 | 0),1);
- return pp_set_max_indent(state,new_max_indent)}
- return _ls_}
- function validate_geometry(param)
- {var margin=param[2],max_indent=param[1];
- return 2 <= max_indent?margin <= max_indent?_cg_:_ch_:_ci_}
- function check_geometry(geometry)
- {var match=validate_geometry(geometry);return 0 === match[0]?1:0}
- function pp_get_margin(state,param){return state[6]}
- function pp_set_full_geometry(state,param)
- {var margin=param[2],max_indent=param[1];
- pp_set_margin(state,margin);
- pp_set_max_indent(state,max_indent);
- return 0}
- function pp_set_geometry(state,max_indent,margin)
- {var geometry=[0,max_indent,margin],match=validate_geometry(geometry);
- if(0 === match[0])return pp_set_full_geometry(state,geometry);
- var msg=match[1];
- throw [0,Invalid_argument,cat(cst_Format_pp_set_geometry,msg)]}
- function pp_safe_set_geometry(state,max_indent,margin)
- {var geometry=[0,max_indent,margin],match=validate_geometry(geometry);
- return 0 === match[0]?pp_set_full_geometry(state,geometry):0}
- function pp_get_geometry(state,param){return [0,state[8],state[6]]}
- function pp_update_geometry(state,update)
- {var geometry=pp_get_geometry(state,0);
- return pp_set_full_geometry(state,caml_call1(update,geometry))}
- function pp_set_formatter_out_functions(state,param)
- {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1];
- state[17] = f;
- state[18] = g;
- state[19] = h;
- state[20] = i;
- state[21] = j;
- return 0}
- function pp_get_formatter_out_functions(state,param)
- {return [0,state[17],state[18],state[19],state[20],state[21]]}
- function pp_set_formatter_output_functi(state,f,g)
- {state[17] = f;state[18] = g;return 0}
- function pp_get_formatter_output_functi(state,param)
- {return [0,state[17],state[18]]}
- function display_newline(state,param)
- {return caml_call3(state[17],cst$76,0,1)}
- var blank_line=make$1(80,32);
- function display_indent(state,n)
- {var n$0=n;
- for(;;)
- {var _lr_=0 < n$0?1:0;
- if(_lr_)
- {if(80 < n$0)
- {caml_call3(state[17],blank_line,0,80);
- var n$1=n$0 - 80 | 0,n$0=n$1;
- continue}
- return caml_call3(state[17],blank_line,0,n$0)}
- return _lr_}}
- function pp_set_formatter_out_channel(state,oc)
- {state[17]
- =
- function(_lo_,_lp_,_lq_){return output_substring(oc,_lo_,_lp_,_lq_)};
- state[18] = function(param){return caml_ml_flush(oc)};
- state[19] = function(_ln_){return display_newline(state,_ln_)};
- state[20] = function(_lm_){return display_indent(state,_lm_)};
- state[21] = function(_ll_){return display_indent(state,_ll_)};
- return 0}
- function default_pp_mark_open_tag(param)
- {if(param[1] === String_tag)
- {var s=param[2];return cat(cst$78,cat(s,cst$77))}
- return cst$79}
- function default_pp_mark_close_tag(param)
- {if(param[1] === String_tag)
- {var s=param[2];return cat(cst$81,cat(s,cst$80))}
- return cst$82}
- function default_pp_print_open_tag(_lk_){return 0}
- function default_pp_print_close_tag(_lj_){return 0}
- function pp_make_formatter(f,g,h,i,j)
- {var pp_queue=create$1(0),sys_tok=[0,unknown,_cj_,0];
- add(sys_tok,pp_queue);
- var scan_stack=create$0(0);
- initialize_scan_stack(scan_stack);
- push([0,1,sys_tok],scan_stack);
- var _lg_=create$0(0),_lh_=create$0(0),_li_=create$0(0);
- return [0,
- scan_stack,
- create$0(0),
- _li_,
- _lh_,
- _lg_,
- 78,
- 10,
- 68,
- 78,
- 0,
- 1,
- 1,
- 1,
- 1,
- max_int,
- cst$83,
- f,
- g,
- h,
- i,
- j,
- 0,
- 0,
- default_pp_mark_open_tag,
- default_pp_mark_close_tag,
- default_pp_print_open_tag,
- default_pp_print_close_tag,
- pp_queue]}
- function formatter_of_out_functions(out_funs)
- {return pp_make_formatter
- (out_funs[1],out_funs[2],out_funs[3],out_funs[4],out_funs[5])}
- function make_formatter(output,flush)
- {function _k__(_lf_){return 0}
- function _k$_(_le_){return 0}
- var
- ppf=
- pp_make_formatter(output,flush,function(_ld_){return 0},_k$_,_k__);
- ppf[19] = function(_lc_){return display_newline(ppf,_lc_)};
- ppf[20] = function(_lb_){return display_indent(ppf,_lb_)};
- ppf[21] = function(_la_){return display_indent(ppf,_la_)};
- return ppf}
- function formatter_of_out_channel(oc)
- {function _k6_(param){return caml_ml_flush(oc)}
- return make_formatter
- (function(_k7_,_k8_,_k9_)
- {return output_substring(oc,_k7_,_k8_,_k9_)},
- _k6_)}
- function formatter_of_buffer(b)
- {function _k1_(_k5_){return 0}
- return make_formatter
- (function(_k2_,_k3_,_k4_)
- {return add_substring(b,_k2_,_k3_,_k4_)},
- _k1_)}
- var pp_buffer_size=512;
- function pp_make_buffer(param){return create$2(pp_buffer_size)}
- var
- stdbuf=pp_make_buffer(0),
- std_formatter=formatter_of_out_channel(stdout),
- err_formatter=formatter_of_out_channel(stderr),
- str_formatter=formatter_of_buffer(stdbuf);
- function flush_buffer_formatter(buf,ppf)
- {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s}
- function flush_str_formatter(param)
- {return flush_buffer_formatter(stdbuf,str_formatter)}
- function make_symbolic_output_buffer(param){return [0,0]}
- function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0}
- function get_symbolic_output_buffer(sob){return rev(sob[1])}
- function flush_symbolic_output_buffer(sob)
- {var items=get_symbolic_output_buffer(sob);
- clear_symbolic_output_buffer(sob);
- return items}
- function add_symbolic_output_item(sob,item)
- {sob[1] = [0,item,sob[1]];return 0}
- function formatter_of_symbolic_output_b(sob)
- {function f(s,i,n){return add_symbolic_output_item(sob,[0,sub$0(s,i,n)])}
- function g(_k0_){return add_symbolic_output_item(sob,0)}
- function h(_kZ_){return add_symbolic_output_item(sob,1)}
- function i(n){return add_symbolic_output_item(sob,[1,n])}
- function j(n){return add_symbolic_output_item(sob,[2,n])}
- return pp_make_formatter(f,g,h,i,j)}
- function open_hbox(_kY_){return pp_open_hbox(std_formatter,_kY_)}
- function open_vbox(_kX_){return pp_open_vbox(std_formatter,_kX_)}
- function open_hvbox(_kW_){return pp_open_hvbox(std_formatter,_kW_)}
- function open_hovbox(_kV_){return pp_open_hovbox(std_formatter,_kV_)}
- function open_box(_kU_){return pp_open_box(std_formatter,_kU_)}
- function close_box(_kT_){return pp_close_box(std_formatter,_kT_)}
- function open_tag(_kS_){return pp_open_tag(std_formatter,_kS_)}
- function close_tag(_kR_){return pp_close_tag(std_formatter,_kR_)}
- function open_stag(_kQ_){return pp_open_stag(std_formatter,_kQ_)}
- function close_stag(_kP_){return pp_close_stag(std_formatter,_kP_)}
- function print_as(_kN_,_kO_){return pp_print_as(std_formatter,_kN_,_kO_)}
- function print_string$0(_kM_){return pp_print_string(std_formatter,_kM_)}
- function print_bytes$0(_kL_){return pp_print_bytes(std_formatter,_kL_)}
- function print_int$0(_kK_){return pp_print_int(std_formatter,_kK_)}
- function print_float$0(_kJ_){return pp_print_float(std_formatter,_kJ_)}
- function print_char$0(_kI_){return pp_print_char(std_formatter,_kI_)}
- function print_bool(_kH_){return pp_print_bool(std_formatter,_kH_)}
- function print_break(_kF_,_kG_)
- {return pp_print_break(std_formatter,_kF_,_kG_)}
- function print_cut(_kE_){return pp_print_cut(std_formatter,_kE_)}
- function print_space(_kD_){return pp_print_space(std_formatter,_kD_)}
- function force_newline(_kC_){return pp_force_newline(std_formatter,_kC_)}
- function print_flush(_kB_){return pp_print_flush(std_formatter,_kB_)}
- function print_newline$0(_kA_)
- {return pp_print_newline(std_formatter,_kA_)}
- function print_if_newline(_kz_)
- {return pp_print_if_newline(std_formatter,_kz_)}
- function open_tbox(_ky_){return pp_open_tbox(std_formatter,_ky_)}
- function close_tbox(_kx_){return pp_close_tbox(std_formatter,_kx_)}
- function print_tbreak(_kv_,_kw_)
- {return pp_print_tbreak(std_formatter,_kv_,_kw_)}
- function set_tab(_ku_){return pp_set_tab(std_formatter,_ku_)}
- function print_tab(_kt_){return pp_print_tab(std_formatter,_kt_)}
- function set_margin(_ks_){return pp_set_margin(std_formatter,_ks_)}
- function get_margin(_kr_){return std_formatter[6]}
- function set_max_indent(_kq_)
- {return pp_set_max_indent(std_formatter,_kq_)}
- function get_max_indent(_kp_){return std_formatter[8]}
- function set_geometry(_kn_,_ko_)
- {return pp_set_geometry(std_formatter,_kn_,_ko_)}
- function safe_set_geometry(_kl_,_km_)
- {return pp_safe_set_geometry(std_formatter,_kl_,_km_)}
- function get_geometry(_kk_){return pp_get_geometry(std_formatter,_kk_)}
- function update_geometry(_kj_)
- {return pp_update_geometry(std_formatter,_kj_)}
- function set_max_boxes(_ki_){return pp_set_max_boxes(std_formatter,_ki_)}
- function get_max_boxes(_kh_){return std_formatter[15]}
- function over_max_boxes(_kg_)
- {return pp_over_max_boxes(std_formatter,_kg_)}
- function set_ellipsis_text(_kf_)
- {return pp_set_ellipsis_text(std_formatter,_kf_)}
- function get_ellipsis_text(_ke_){return std_formatter[16]}
- function set_formatter_out_channel(_kd_)
- {return pp_set_formatter_out_channel(std_formatter,_kd_)}
- function set_formatter_out_functions(_kc_)
- {return pp_set_formatter_out_functions(std_formatter,_kc_)}
- function get_formatter_out_functions(_kb_)
- {return pp_get_formatter_out_functions(std_formatter,_kb_)}
- function set_formatter_output_functions(_j$_,_ka_)
- {return pp_set_formatter_output_functi(std_formatter,_j$_,_ka_)}
- function get_formatter_output_functions(_j__)
- {return pp_get_formatter_output_functi(std_formatter,_j__)}
- function set_formatter_stag_functions(_j9_)
- {return pp_set_formatter_stag_function(std_formatter,_j9_)}
- function get_formatter_stag_functions(_j8_)
- {return pp_get_formatter_stag_function(std_formatter,_j8_)}
- function set_print_tags(_j7_)
- {return pp_set_print_tags(std_formatter,_j7_)}
- function get_print_tags(_j6_){return std_formatter[22]}
- function set_mark_tags(_j5_){return pp_set_mark_tags(std_formatter,_j5_)}
- function get_mark_tags(_j4_){return std_formatter[23]}
- function set_tags(_j3_){return pp_set_tags(std_formatter,_j3_)}
- function pp_print_list(opt,pp_v,ppf,param)
- {var opt$0=opt,param$0=param;
- for(;;)
- {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut;
- if(param$0)
- {var _j2_=param$0[1];
- if(param$0[2])
- {var vs=param$0[2];
- caml_call2(pp_v,ppf,_j2_);
- caml_call2(pp_sep,ppf,0);
- var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs;
- continue}
- return caml_call2(pp_v,ppf,_j2_)}
- return 0}}
- function pp_print_seq(opt,pp_v,ppf,seq$1)
- {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=pp_print_cut;
- var match$0=caml_call1(seq$1,0);
- if(match$0)
- {var seq$2=match$0[2],v$0=match$0[1];
- caml_call2(pp_v,ppf,v$0);
- var seq=seq$2;
- for(;;)
- {var match=caml_call1(seq,0);
- if(match)
- {var seq$0=match[2],v=match[1];
- caml_call2(pp_sep,ppf,0);
- caml_call2(pp_v,ppf,v);
- var seq=seq$0;
- continue}
- return 0}}
- return 0}
- function pp_print_text(ppf,s)
- {var len=caml_ml_string_length(s),left=[0,0],right=[0,0];
- function flush(param)
- {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0));
- right[1]++;
- left[1] = right[1];
- return 0}
- for(;;)
- {if(right[1] !== len)
- {var match=caml_string_get(s,right[1]);
- if(10 === match)
- {flush(0);pp_force_newline(ppf,0)}
- else
- if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++;
- continue}
- var _j1_=left[1] !== len?1:0;
- return _j1_?flush(0):_j1_}}
- function pp_print_option(opt,pp_v,ppf,param)
- {if(opt)
- var sth=opt[1],none=sth;
- else
- var none=function(param,_j0_){return 0};
- if(param){var v=param[1];return caml_call2(pp_v,ppf,v)}
- return caml_call2(none,ppf,0)}
- function pp_print_result(ok,error,ppf,param)
- {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)}
- var e=param[1];
- return caml_call2(error,ppf,e)}
- function pp_print_either(left,right,ppf,param)
- {if(0 === param[0]){var l=param[1];return caml_call2(left,ppf,l)}
- var r=param[1];
- return caml_call2(right,ppf,r)}
- function compute_tag(output,tag_acc)
- {var buf=create$2(16),ppf=formatter_of_buffer(buf);
- caml_call2(output,ppf,tag_acc);
- pp_print_flush(ppf,0);
- var len=buf[2];
- return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)}
- function output_formatting_lit(ppf,fmting_lit)
- {if(typeof fmting_lit === "number")
- switch(fmting_lit)
- {case 0:return pp_close_box(ppf,0);
- case 1:return pp_close_tag(ppf,0);
- case 2:return pp_print_flush(ppf,0);
- case 3:return pp_force_newline(ppf,0);
- case 4:return pp_print_newline(ppf,0);
- case 5:return pp_print_char(ppf,64);
- default:return pp_print_char(ppf,37)}
- else
- switch(fmting_lit[0])
- {case 0:
- var offset=fmting_lit[3],width=fmting_lit[2];
- return pp_print_break(ppf,width,offset);
- case 1:return 0;
- default:
- var c=fmting_lit[1];
- pp_print_char(ppf,64);
- return pp_print_char(ppf,c)}}
- function output_acc$0(ppf,acc)
- {var switch$0=0;
- if(typeof acc === "number")
- return 0;
- else
- switch(acc[0])
- {case 0:
- var f=acc[2],p=acc[1];
- output_acc$0(ppf,p);
- return output_formatting_lit(ppf,f);
- case 1:
- var _jQ_=acc[2],_jR_=acc[1];
- if(0 === _jQ_[0])
- {var acc$0=_jQ_[1];
- output_acc$0(ppf,_jR_);
- return pp_open_stag
- (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])}
- var acc$1=_jQ_[1];
- output_acc$0(ppf,_jR_);
- var
- match=open_box_of_string(compute_tag(output_acc$0,acc$1)),
- bty=match[2],
- indent=match[1];
- return pp_open_box_gen(ppf,indent,bty);
- case 2:
- var _jS_=acc[1],switch$1=0;
- if(typeof _jS_ !== "number" && 0 === _jS_[0])
- {var _jT_=_jS_[2],switch$2=0;
- if(typeof _jT_ !== "number" && 1 === _jT_[0])
- {var s$0=acc[2],size=_jT_[2],p$1=_jS_[1];
- switch$1 = 1;
- switch$2 = 1}}
- if(! switch$1){var s=acc[2],p$0=_jS_;switch$0 = 2}
- break;
- case 3:
- var _jU_=acc[1],switch$3=0;
- if(typeof _jU_ !== "number" && 0 === _jU_[0])
- {var _jV_=_jU_[2],switch$4=0;
- if(typeof _jV_ !== "number" && 1 === _jV_[0])
- {var c$0=acc[2],size$0=_jV_[2],p$3=_jU_[1];
- switch$0 = 1;
- switch$3 = 1;
- switch$4 = 1}}
- if(! switch$3){var c=acc[2],p$2=_jU_;switch$0 = 3}
- break;
- case 4:
- var _jW_=acc[1],switch$5=0;
- if(typeof _jW_ !== "number" && 0 === _jW_[0])
- {var _jX_=_jW_[2],switch$6=0;
- if(typeof _jX_ !== "number" && 1 === _jX_[0])
- {var s$0=acc[2],size=_jX_[2],p$1=_jW_[1];
- switch$5 = 1;
- switch$6 = 1}}
- if(! switch$5){var s=acc[2],p$0=_jW_;switch$0 = 2}
- break;
- case 5:
- var _jY_=acc[1],switch$7=0;
- if(typeof _jY_ === "number" || ! (0 === _jY_[0]))
- switch$7 = 1;
- else
- {var _jZ_=_jY_[2],switch$8=0;
- if(typeof _jZ_ !== "number" && 1 === _jZ_[0])
- {var c$0=acc[2],size$0=_jZ_[2],p$3=_jY_[1];
- switch$0 = 1;
- switch$8 = 1}
- if(! switch$8)switch$7 = 1}
- if(switch$7){var c=acc[2],p$2=_jY_;switch$0 = 3}
- break;
- case 6:
- var f$0=acc[2],p$4=acc[1];
- output_acc$0(ppf,p$4);
- return caml_call1(f$0,ppf);
- case 7:
- var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0);
- default:
- var msg=acc[2],p$6=acc[1];
- output_acc$0(ppf,p$6);
- return invalid_arg(msg)}
- switch(switch$0)
- {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0);
- case 1:
- output_acc$0(ppf,p$3);
- return pp_print_as_size(ppf,size$0,make$1(1,c$0));
- case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s);
- default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}}
- function strput_acc$0(ppf,acc)
- {var switch$0=0;
- if(typeof acc === "number")
- return 0;
- else
- switch(acc[0])
- {case 0:
- var f=acc[2],p=acc[1];
- strput_acc$0(ppf,p);
- return output_formatting_lit(ppf,f);
- case 1:
- var _jE_=acc[2],_jF_=acc[1];
- if(0 === _jE_[0])
- {var acc$0=_jE_[1];
- strput_acc$0(ppf,_jF_);
- return pp_open_stag
- (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])}
- var acc$1=_jE_[1];
- strput_acc$0(ppf,_jF_);
- var
- match=open_box_of_string(compute_tag(strput_acc$0,acc$1)),
- bty=match[2],
- indent=match[1];
- return pp_open_box_gen(ppf,indent,bty);
- case 2:
- var _jG_=acc[1],switch$1=0;
- if(typeof _jG_ !== "number" && 0 === _jG_[0])
- {var _jH_=_jG_[2],switch$2=0;
- if(typeof _jH_ !== "number" && 1 === _jH_[0])
- {var s$0=acc[2],size=_jH_[2],p$1=_jG_[1];
- switch$1 = 1;
- switch$2 = 1}}
- if(! switch$1){var s=acc[2],p$0=_jG_;switch$0 = 2}
- break;
- case 3:
- var _jI_=acc[1],switch$3=0;
- if(typeof _jI_ !== "number" && 0 === _jI_[0])
- {var _jJ_=_jI_[2],switch$4=0;
- if(typeof _jJ_ !== "number" && 1 === _jJ_[0])
- {var c$0=acc[2],size$0=_jJ_[2],p$3=_jI_[1];
- switch$0 = 1;
- switch$3 = 1;
- switch$4 = 1}}
- if(! switch$3){var c=acc[2],p$2=_jI_;switch$0 = 3}
- break;
- case 4:
- var _jK_=acc[1],switch$5=0;
- if(typeof _jK_ !== "number" && 0 === _jK_[0])
- {var _jL_=_jK_[2],switch$6=0;
- if(typeof _jL_ !== "number" && 1 === _jL_[0])
- {var s$0=acc[2],size=_jL_[2],p$1=_jK_[1];
- switch$5 = 1;
- switch$6 = 1}}
- if(! switch$5){var s=acc[2],p$0=_jK_;switch$0 = 2}
- break;
- case 5:
- var _jM_=acc[1],switch$7=0;
- if(typeof _jM_ === "number" || ! (0 === _jM_[0]))
- switch$7 = 1;
- else
- {var _jN_=_jM_[2],switch$8=0;
- if(typeof _jN_ !== "number" && 1 === _jN_[0])
- {var c$0=acc[2],size$0=_jN_[2],p$3=_jM_[1];
- switch$0 = 1;
- switch$8 = 1}
- if(! switch$8)switch$7 = 1}
- if(switch$7){var c=acc[2],p$2=_jM_;switch$0 = 3}
- break;
- case 6:
- var _jO_=acc[1];
- if(typeof _jO_ !== "number" && 0 === _jO_[0])
- {var _jP_=_jO_[2];
- if(typeof _jP_ !== "number" && 1 === _jP_[0])
- {var f$1=acc[2],size$1=_jP_[2],p$4=_jO_[1];
- strput_acc$0(ppf,p$4);
- return pp_print_as_size(ppf,size$1,caml_call1(f$1,0))}}
- var f$0=acc[2];
- strput_acc$0(ppf,_jO_);
- return pp_print_string(ppf,caml_call1(f$0,0));
- case 7:
- var p$5=acc[1];strput_acc$0(ppf,p$5);return pp_print_flush(ppf,0);
- default:
- var msg=acc[2],p$6=acc[1];
- strput_acc$0(ppf,p$6);
- return invalid_arg(msg)}
- switch(switch$0)
- {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0);
- case 1:
- strput_acc$0(ppf,p$3);
- return pp_print_as_size(ppf,size$0,make$1(1,c$0));
- case 2:strput_acc$0(ppf,p$0);return pp_print_string(ppf,s);
- default:strput_acc$0(ppf,p$2);return pp_print_char(ppf,c)}}
- function kfprintf$0(k,ppf,param)
- {var fmt=param[1],_jD_=0;
- return make_printf
- (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)},
- _jD_,
- fmt)}
- function ikfprintf$0(k,ppf,param)
- {var fmt=param[1];return make_iprintf(k,ppf,fmt)}
- function ifprintf$0(ppf,param)
- {var fmt=param[1],_jB_=0;
- return make_iprintf(function(_jC_){return 0},_jB_,fmt)}
- function fprintf$0(ppf)
- {function _jy_(_jA_){return 0}
- return function(_jz_){return kfprintf$0(_jy_,ppf,_jz_)}}
- function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)}
- function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)}
- function kdprintf(k,param)
- {var fmt=param[1],_jx_=0;
- return make_printf
- (function(acc)
- {return caml_call1
- (k,function(ppf){return output_acc$0(ppf,acc)})},
- _jx_,
- fmt)}
- function dprintf(fmt){return kdprintf(function(i){return i},fmt)}
- function kprintf(k,param)
- {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b);
- function k$0(acc)
- {strput_acc$0(ppf,acc);
- return caml_call1(k,flush_buffer_formatter(b,ppf))}
- return make_printf(k$0,0,fmt)}
- function sprintf$0(fmt){return kprintf(id$0,fmt)}
- function kasprintf(k,param)
- {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b);
- function k$0(acc)
- {output_acc$0(ppf,acc);
- return caml_call1(k,flush_buffer_formatter(b,ppf))}
- return make_printf(k$0,0,fmt)}
- function asprintf(fmt){return kasprintf(id$0,fmt)}
- function flush_standard_formatters(param)
- {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)}
- at_exit(flush_standard_formatters);
- function pp_set_all_formatter_output_fu(state,f,g,h,i)
- {pp_set_formatter_output_functi(state,f,g);
- state[19] = h;
- state[20] = i;
- return 0}
- function pp_get_all_formatter_output_fu(state,param)
- {return [0,state[17],state[18],state[19],state[20]]}
- function set_all_formatter_output_funct(_jt_,_ju_,_jv_,_jw_)
- {return pp_set_all_formatter_output_fu(std_formatter,_jt_,_ju_,_jv_,_jw_)}
- function get_all_formatter_output_funct(_js_)
- {return pp_get_all_formatter_output_fu(std_formatter,_js_)}
- function bprintf$0(b,param)
- {var fmt=param[1],ppf=formatter_of_buffer(b);
- function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)}
- return make_printf(k,0,fmt)}
- function pp_set_formatter_tag_functions(state,param)
- {var pct=param[4],pot=param[3],mct=param[2],mot=param[1];
- function stringify(f,e,param)
- {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)}
- return e}
- state[24] = function(_jr_){return stringify(mot,cst$84,_jr_)};
- state[25] = function(_jq_){return stringify(mct,cst$85,_jq_)};
- var _jm_=0;
- state[26] = function(_jp_){return stringify(pot,_jm_,_jp_)};
- var _jn_=0;
- state[27] = function(_jo_){return stringify(pct,_jn_,_jo_)};
- return 0}
- function pp_get_formatter_tag_functions(fmt,param)
- {var funs=pp_get_formatter_stag_function(fmt,0);
- function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])}
- function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])}
- function print_open_tag(s){return caml_call1(funs[3],[0,String_tag,s])}
- function print_close_tag(s){return caml_call1(funs[4],[0,String_tag,s])}
- return [0,mark_open_tag,mark_close_tag,print_open_tag,print_close_tag]}
- function set_formatter_tag_functions(_jl_)
- {return pp_set_formatter_tag_functions(std_formatter,_jl_)}
- function get_formatter_tag_functions(_jk_)
- {return pp_get_formatter_tag_functions(std_formatter,_jk_)}
- var
- Stdlib_Format=
- [0,
- pp_open_box,
- open_box,
- pp_close_box,
- close_box,
- pp_open_hbox,
- open_hbox,
- pp_open_vbox,
- open_vbox,
- pp_open_hvbox,
- open_hvbox,
- pp_open_hovbox,
- open_hovbox,
- pp_print_string,
- print_string$0,
- pp_print_bytes,
- print_bytes$0,
- pp_print_as,
- print_as,
- pp_print_int,
- print_int$0,
- pp_print_float,
- print_float$0,
- pp_print_char,
- print_char$0,
- pp_print_bool,
- print_bool,
- pp_print_space,
- print_space,
- pp_print_cut,
- print_cut,
- pp_print_break,
- print_break,
- pp_print_custom_break,
- pp_force_newline,
- force_newline,
- pp_print_if_newline,
- print_if_newline,
- pp_print_flush,
- print_flush,
- pp_print_newline,
- print_newline$0,
- pp_set_margin,
- set_margin,
- pp_get_margin,
- get_margin,
- pp_set_max_indent,
- set_max_indent,
- pp_get_max_indent,
- get_max_indent,
- check_geometry,
- pp_set_geometry,
- set_geometry,
- pp_safe_set_geometry,
- safe_set_geometry,
- pp_update_geometry,
- update_geometry,
- pp_get_geometry,
- get_geometry,
- pp_set_max_boxes,
- set_max_boxes,
- pp_get_max_boxes,
- get_max_boxes,
- pp_over_max_boxes,
- over_max_boxes,
- pp_open_tbox,
- open_tbox,
- pp_close_tbox,
- close_tbox,
- pp_set_tab,
- set_tab,
- pp_print_tab,
- print_tab,
- pp_print_tbreak,
- print_tbreak,
- pp_set_ellipsis_text,
- set_ellipsis_text,
- pp_get_ellipsis_text,
- get_ellipsis_text,
- String_tag,
- pp_open_stag,
- open_stag,
- pp_close_stag,
- close_stag,
- pp_set_tags,
- set_tags,
- pp_set_print_tags,
- set_print_tags,
- pp_set_mark_tags,
- set_mark_tags,
- pp_get_print_tags,
- get_print_tags,
- pp_get_mark_tags,
- get_mark_tags,
- pp_set_formatter_out_channel,
- set_formatter_out_channel,
- pp_set_formatter_output_functi,
- set_formatter_output_functions,
- pp_get_formatter_output_functi,
- get_formatter_output_functions,
- pp_set_formatter_out_functions,
- set_formatter_out_functions,
- pp_get_formatter_out_functions,
- get_formatter_out_functions,
- pp_set_formatter_stag_function,
- set_formatter_stag_functions,
- pp_get_formatter_stag_function,
- get_formatter_stag_functions,
- formatter_of_out_channel,
- std_formatter,
- err_formatter,
- formatter_of_buffer,
- stdbuf,
- str_formatter,
- flush_str_formatter,
- make_formatter,
- formatter_of_out_functions,
- make_symbolic_output_buffer,
- clear_symbolic_output_buffer,
- get_symbolic_output_buffer,
- flush_symbolic_output_buffer,
- add_symbolic_output_item,
- formatter_of_symbolic_output_b,
- pp_print_list,
- pp_print_seq,
- pp_print_text,
- pp_print_option,
- pp_print_result,
- pp_print_either,
- fprintf$0,
- printf$0,
- eprintf$0,
- sprintf$0,
- asprintf,
- dprintf,
- ifprintf$0,
- kfprintf$0,
- kdprintf,
- ikfprintf$0,
- kprintf,
- kasprintf,
- bprintf$0,
- kprintf,
- set_all_formatter_output_funct,
- get_all_formatter_output_funct,
- pp_set_all_formatter_output_fu,
- pp_get_all_formatter_output_fu,
- pp_open_tag,
- open_tag,
- pp_close_tag,
- close_tag,
- pp_set_formatter_tag_functions,
- set_formatter_tag_functions,
- pp_get_formatter_tag_functions,
- get_formatter_tag_functions];
- caml_register_global(802,Stdlib_Format,"Stdlib__Format");
- var null_char=0;
- function next_char(ib)
- {try
- {var c=caml_call1(ib[7],0);
- ib[2] = c;
- ib[3] = 1;
- ib[4] = ib[4] + 1 | 0;
- if(10 === c)ib[5] = ib[5] + 1 | 0;
- return c}
- catch(_jj_)
- {_jj_ = caml_wrap_exception(_jj_);
- if(_jj_ === End_of_file)
- {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char}
- throw _jj_}}
- function peek_char(ib){return ib[3]?ib[2]:next_char(ib)}
- function checked_peek_char(ib)
- {var c=peek_char(ib);if(ib[1])throw End_of_file;return c}
- function end_of_input(ib){peek_char(ib);return ib[1]}
- function beginning_of_input(ib){return 0 === ib[4]?1:0}
- function name_of_input(ib)
- {var _ji_=ib[9];
- if(typeof _ji_ === "number")
- return 0 === _ji_?cst_unnamed_function:cst_unnamed_character_string;
- else
- {if(0 === _ji_[0])return cst_unnamed_Stdlib_input_chann;
- var fname=_ji_[1];
- return fname}}
- function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]}
- function reset_token(ib){return reset(ib[8])}
- function invalidate_current_char(ib){ib[3] = 0;return 0}
- function token_string(ib)
- {var token_buffer=ib[8],tok=contents(token_buffer);
- clear$1(token_buffer);
- ib[6] = ib[6] + 1 | 0;
- return tok}
- function skip_char(width,ib){invalidate_current_char(ib);return width}
- function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)}
- function store_char(width,ib,c)
- {add_char(ib[8],c);return ignore_char(width,ib)}
- var default_token_buffer_size=1024;
- function create$4(iname,next)
- {return [0,
- 0,
- null_char,
- 0,
- 0,
- 0,
- 0,
- next,
- create$2(default_token_buffer_size),
- iname]}
- function from_string$1(s)
- {var i=[0,0],len=caml_ml_string_length(s);
- function next(param)
- {if(len <= i[1])throw End_of_file;
- var c=caml_string_get(s,i[1]);
- i[1]++;
- return c}
- return create$4(1,next)}
- var _ck_=0;
- function from_function$0(_jh_){return create$4(_ck_,_jh_)}
- var len=1024;
- function scan_close_at_end(ic)
- {caml_ml_close_channel(ic);throw End_of_file}
- function scan_raise_at_end(ic){throw End_of_file}
- function from_ic(scan_close_ic,iname,ic)
- {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0];
- function next(param)
- {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c}
- if(eof[1])throw End_of_file;
- lim[1] = input(ic,buf,0,len);
- return 0 === lim[1]
- ?(eof[1] = 1,caml_call1(scan_close_ic,ic))
- :(i[1] = 1,caml_bytes_get(buf,0))}
- return create$4(iname,next)}
- var stdib=from_ic(scan_raise_at_end,[1,cst$86,stdin],stdin);
- function open_in_file(open_in,fname)
- {if(caml_string_notequal(fname,cst$87))
- {var ic=caml_call1(open_in,fname);
- return from_ic(scan_close_at_end,[1,fname,ic],ic)}
- return stdib}
- function from_file(_jg_){return open_in_file(open_in,_jg_)}
- function from_file_bin(_jf_){return open_in_file(open_in_bin,_jf_)}
- function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)}
- function close_in$0(ib)
- {var _je_=ib[9];
- if(typeof _je_ === "number")
- return 0;
- else
- {if(0 === _je_[0]){var ic=_je_[1];return caml_ml_close_channel(ic)}
- var ic$0=_je_[2];
- return caml_ml_close_channel(ic$0)}}
- var memo=[0,0];
- function memo_from_ic(scan_close_ic,ic)
- {try
- {var _jc_=assq(ic,memo[1]);return _jc_}
- catch(_jd_)
- {_jd_ = caml_wrap_exception(_jd_);
- if(_jd_ === Not_found)
- {var ib=from_ic(scan_close_ic,[0,ic],ic);
- memo[1] = [0,[0,ic,ib],memo[1]];
- return ib}
- throw _jd_}}
- function memo_from_channel(_jb_)
- {return memo_from_ic(scan_raise_at_end,_jb_)}
- var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)];
- function bad_input(s){throw [0,Scan_failure,s]}
- function bad_input_escape(c)
- {return bad_input(caml_call1(sprintf(_cl_),c))}
- function bad_token_length(message)
- {return bad_input(caml_call1(sprintf(_cm_),message))}
- function bad_float(param)
- {return bad_input(cst_no_dot_or_exponent_part_fo)}
- function bad_hex_float(param)
- {return bad_input(cst_not_a_valid_float_in_hexad)}
- function character_mismatch(c,ci)
- {return bad_input(caml_call2(sprintf(_co_),c,ci))}
- function check_this_char(ib,c)
- {var ci=checked_peek_char(ib);
- return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)}
- function check_char(ib,c$0)
- {if(10 === c$0)
- {var ci=checked_peek_char(ib);
- return 10 === ci
- ?invalidate_current_char(ib)
- :13 === ci
- ?(invalidate_current_char(ib),check_this_char(ib,10))
- :character_mismatch(10,ci)}
- if(32 === c$0)
- for(;;)
- {var c=peek_char(ib),_i$_=1 - ib[1];
- if(_i$_)
- {var _ja_=c - 9 | 0,switch$0=0;
- if(4 < _ja_ >>> 0)
- {if(23 === _ja_)switch$0 = 1}
- else
- if(1 < _ja_ - 2 >>> 0)switch$0 = 1;
- if(switch$0){invalidate_current_char(ib);continue}
- return 0}
- return _i$_}
- return check_this_char(ib,c$0)}
- function token_char(ib){return caml_string_get(token_string(ib),0)}
- function token_bool(ib)
- {var s=token_string(ib);
- return caml_string_notequal(s,cst_false$3)
- ?caml_string_notequal(s,cst_true$3)
- ?bad_input(caml_call1(sprintf(_cp_),s))
- :1
- :0}
- function integer_conversion_of_char(param)
- {var switcher=param - 88 | 0;
- if(! (32 < switcher >>> 0))
- switch(switcher)
- {case 10:return 0;
- case 12:return 1;
- case 17:return 2;
- case 23:return 3;
- case 29:return 4;
- case 0:
- case 32:return 5
- }
- throw [0,Assert_failure,_cq_]}
- function token_int_literal(conv,ib)
- {switch(conv)
- {case 0:var tok=cat(cst_0b,token_string(ib));break;
- case 3:var tok=cat(cst_0o,token_string(ib));break;
- case 4:var tok=cat(cst_0u,token_string(ib));break;
- case 5:var tok=cat(cst_0x,token_string(ib));break;
- default:var tok=token_string(ib)}
- var l=caml_ml_string_length(tok);
- if(0 !== l && 43 === caml_string_get(tok,0))
- return sub$0(tok,1,l - 1 | 0);
- return tok}
- function token_float(ib){return caml_float_of_string(token_string(ib))}
- function scan_decimal_digit_star(width,ib)
- {var width$0=width;
- for(;;)
- {if(0 === width$0)return width$0;
- var c=peek_char(ib);
- if(ib[1])return width$0;
- if(58 <= c)
- {if(95 === c)
- {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}}
- else
- if(48 <= c)
- {var width$2=store_char(width$0,ib,c),width$0=width$2;continue}
- return width$0}}
- function scan_unsigned_decimal_int(width,ib)
- {if(0 === width)return bad_token_length(cst_decimal_digits);
- var c=checked_peek_char(ib);
- if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cr_),c));
- var width$0=store_char(width,ib,c);
- return scan_decimal_digit_star(width$0,ib)}
- function scan_digit_plus(basis,digitp,width$2,ib)
- {if(0 === width$2)return bad_token_length(cst_digits);
- var c$0=checked_peek_char(ib);
- if(caml_call1(digitp,c$0))
- {var width$3=store_char(width$2,ib,c$0),width=width$3;
- for(;;)
- {if(0 === width)return width;
- var c=peek_char(ib);
- if(ib[1])return width;
- if(caml_call1(digitp,c))
- {var width$0=store_char(width,ib,c),width=width$0;continue}
- if(95 === c)
- {var width$1=ignore_char(width,ib),width=width$1;continue}
- return width}}
- return bad_input(caml_call2(sprintf(_cs_),c$0,basis))}
- function is_binary_digit(param){return 1 < param - 48 >>> 0?0:1}
- function scan_binary_int(_i9_,_i__)
- {return scan_digit_plus(cst_binary,is_binary_digit,_i9_,_i__)}
- function is_octal_digit(param){return 7 < param - 48 >>> 0?0:1}
- function scan_octal_int(_i7_,_i8_)
- {return scan_digit_plus(cst_octal,is_octal_digit,_i7_,_i8_)}
- function is_hexa_digit(param)
- {var _i6_=param - 48 | 0,switch$0=0;
- if(22 < _i6_ >>> 0)
- {if(! (5 < _i6_ - 49 >>> 0))switch$0 = 1}
- else
- if(6 < _i6_ - 10 >>> 0)switch$0 = 1;
- return switch$0?1:0}
- function scan_hexadecimal_int(_i4_,_i5_)
- {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_i4_,_i5_)}
- function scan_sign(width,ib)
- {var c=checked_peek_char(ib),switcher=c - 43 | 0;
- if(! (2 < switcher >>> 0))
- switch(switcher)
- {case 0:return store_char(width,ib,c);
- case 1:break;
- default:return store_char(width,ib,c)}
- return width}
- function scan_optionally_signed_decimal(width,ib)
- {var width$0=scan_sign(width,ib);
- return scan_unsigned_decimal_int(width$0,ib)}
- function scan_int_conversion(conv,width$1,ib)
- {switch(conv)
- {case 0:return scan_binary_int(width$1,ib);
- case 1:return scan_optionally_signed_decimal(width$1,ib);
- case 2:
- var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib);
- if(48 === c)
- {var width=store_char(width$0,ib,c);
- if(0 === width)return width;
- var c$0=peek_char(ib);
- if(ib[1])return width;
- var switch$0=0;
- if(99 <= c$0)
- {if(111 === c$0)
- return scan_octal_int(store_char(width,ib,c$0),ib);
- if(120 === c$0)switch$0 = 1}
- else
- if(88 === c$0)
- switch$0 = 1;
- else
- if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib);
- return switch$0
- ?scan_hexadecimal_int(store_char(width,ib,c$0),ib)
- :scan_decimal_digit_star(width,ib)}
- return scan_unsigned_decimal_int(width$0,ib);
- case 3:return scan_octal_int(width$1,ib);
- case 4:return scan_unsigned_decimal_int(width$1,ib);
- default:return scan_hexadecimal_int(width$1,ib)}}
- function scan_fractional_part(width,ib)
- {if(0 === width)return width;
- var c=peek_char(ib);
- return ib[1]
- ?width
- :9 < c - 48 >>> 0
- ?width
- :scan_decimal_digit_star(store_char(width,ib,c),ib)}
- function scan_exponent_part(width,ib)
- {if(0 === width)return width;
- var c=peek_char(ib);
- if(ib[1])return width;
- if(69 !== c && 101 !== c)return width;
- return scan_optionally_signed_decimal(store_char(width,ib,c),ib)}
- function scan_float(width$1,precision,ib)
- {var
- width=scan_sign(width$1,ib),
- width$0=scan_decimal_digit_star(width,ib);
- if(0 === width$0)return [0,width$0,precision];
- var c=peek_char(ib);
- if(ib[1])return [0,width$0,precision];
- if(46 === c)
- {var
- width$2=store_char(width$0,ib,c),
- precision$0=min$1(width$2,precision),
- width$3=
- width$2
- -
- (precision$0 - scan_fractional_part(precision$0,ib) | 0)
- |
- 0;
- return [0,scan_exponent_part(width$3,ib),precision$0]}
- return [0,scan_exponent_part(width$0,ib),precision]}
- function check_case_insensitive_string(width,ib,error,str)
- {function lowercase(c)
- {return 25 < c - 65 >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)}
- var
- len=caml_ml_string_length(str),
- width$0=[0,width],
- _i1_=len - 1 | 0,
- _i0_=0;
- if(! (_i1_ < 0))
- {var i=_i0_;
- for(;;)
- {var c=peek_char(ib),_i2_=lowercase(caml_string_get(str,i));
- if(lowercase(c) !== _i2_)caml_call1(error,0);
- if(0 === width$0[1])caml_call1(error,0);
- width$0[1] = store_char(width$0[1],ib,c);
- var _i3_=i + 1 | 0;
- if(_i1_ !== i){var i=_i3_;continue}
- break}}
- return width$0[1]}
- function scan_hex_float(width,precision,ib)
- {var _iN_=0 === width?1:0,_iO_=_iN_ || end_of_input(ib);
- if(_iO_)bad_hex_float(0);
- var
- width$0=scan_sign(width,ib),
- _iP_=0 === width$0?1:0,
- _iQ_=_iP_ || end_of_input(ib);
- if(_iQ_)bad_hex_float(0);
- var c=peek_char(ib),switch$0=0;
- if(78 <= c)
- {var switcher=c - 79 | 0;
- if(30 < switcher >>> 0)
- {if(! (32 <= switcher))
- {var
- width$1=store_char(width$0,ib,c),
- _iR_=0 === width$1?1:0,
- _iS_=_iR_ || end_of_input(ib);
- if(_iS_)bad_hex_float(0);
- return check_case_insensitive_string
- (width$1,ib,bad_hex_float,cst_an)}}
- else
- if(26 === switcher)switch$0 = 1}
- else
- {if(48 === c)
- {var
- width$3=store_char(width$0,ib,c),
- _iV_=0 === width$3?1:0,
- _iW_=_iV_ || end_of_input(ib);
- if(_iW_)bad_hex_float(0);
- var
- width$4=
- check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2);
- if(0 !== width$4 && ! end_of_input(ib))
- {var match=peek_char(ib),_iX_=match - 46 | 0,switch$1=0;
- if(34 < _iX_ >>> 0)
- {if(66 === _iX_)switch$1 = 1}
- else
- if(32 < _iX_ - 1 >>> 0)switch$1 = 1;
- var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib);
- if(0 !== width$5 && ! end_of_input(ib))
- {var c$0=peek_char(ib);
- if(46 === c$0)
- {var width$6=store_char(width$5,ib,c$0),switch$2=0;
- if(0 !== width$6 && ! end_of_input(ib))
- {var match$0=peek_char(ib),switch$3=0;
- if(80 !== match$0 && 112 !== match$0)
- {var
- precision$0=min$1(width$6,precision),
- width$10=
- width$6
- -
- (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0)
- |
- 0;
- switch$3 = 1}
- if(! switch$3)var width$10=width$6;
- var width$7=width$10;
- switch$2 = 1}
- if(! switch$2)var width$7=width$6;
- var width$8=width$7}
- else
- var width$8=width$5;
- if(0 !== width$8 && ! end_of_input(ib))
- {var c$1=peek_char(ib);
- if(80 !== c$1 && 112 !== c$1)return width$8;
- var
- width$9=store_char(width$8,ib,c$1),
- _iY_=0 === width$9?1:0,
- _iZ_=_iY_ || end_of_input(ib);
- if(_iZ_)bad_hex_float(0);
- return scan_optionally_signed_decimal(width$9,ib)}
- return width$8}
- return width$5}
- return width$4}
- if(73 === c)switch$0 = 1}
- if(switch$0)
- {var
- width$2=store_char(width$0,ib,c),
- _iT_=0 === width$2?1:0,
- _iU_=_iT_ || end_of_input(ib);
- if(_iU_)bad_hex_float(0);
- return check_case_insensitive_string
- (width$2,ib,bad_hex_float,cst_nfinity)}
- return bad_hex_float(0)}
- function scan_caml_float_rest(width,precision,ib)
- {var _iJ_=0 === width?1:0,_iK_=_iJ_ || end_of_input(ib);
- if(_iK_)bad_float(0);
- var
- width$0=scan_decimal_digit_star(width,ib),
- _iL_=0 === width$0?1:0,
- _iM_=_iL_ || end_of_input(ib);
- if(_iM_)bad_float(0);
- var c=peek_char(ib),switcher=c - 69 | 0;
- if(32 < switcher >>> 0)
- {if(-23 === switcher)
- {var
- width$1=store_char(width$0,ib,c),
- precision$0=min$1(width$1,precision),
- width_precision=scan_fractional_part(precision$0,ib),
- frac_width=precision$0 - width_precision | 0,
- width$2=width$1 - frac_width | 0;
- return scan_exponent_part(width$2,ib)}}
- else
- if(30 < switcher - 1 >>> 0)return scan_exponent_part(width$0,ib);
- return bad_float(0)}
- function scan_caml_float(width,precision,ib)
- {var _iv_=0 === width?1:0,_iw_=_iv_ || end_of_input(ib);
- if(_iw_)bad_float(0);
- var
- width$0=scan_sign(width,ib),
- _ix_=0 === width$0?1:0,
- _iy_=_ix_ || end_of_input(ib);
- if(_iy_)bad_float(0);
- var c=peek_char(ib);
- if(49 <= c)
- {if(! (58 <= c))
- {var
- width$1=store_char(width$0,ib,c),
- _iz_=0 === width$1?1:0,
- _iA_=_iz_ || end_of_input(ib);
- if(_iA_)bad_float(0);
- return scan_caml_float_rest(width$1,precision,ib)}}
- else
- if(48 <= c)
- {var
- width$2=store_char(width$0,ib,c),
- _iB_=0 === width$2?1:0,
- _iC_=_iB_ || end_of_input(ib);
- if(_iC_)bad_float(0);
- var c$0=peek_char(ib);
- if(88 !== c$0 && 120 !== c$0)
- return scan_caml_float_rest(width$2,precision,ib);
- var
- width$3=store_char(width$2,ib,c$0),
- _iD_=0 === width$3?1:0,
- _iE_=_iD_ || end_of_input(ib);
- if(_iE_)bad_float(0);
- var
- width$4=scan_hexadecimal_int(width$3,ib),
- _iF_=0 === width$4?1:0,
- _iG_=_iF_ || end_of_input(ib);
- if(_iG_)bad_float(0);
- var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0;
- if(32 < switcher >>> 0)
- if(-34 === switcher)
- {var width$5=store_char(width$4,ib,c$1),switch$1=0;
- if(0 !== width$5 && ! end_of_input(ib))
- {var match=peek_char(ib),switch$2=0;
- if(80 !== match && 112 !== match)
- {var
- precision$0=min$1(width$5,precision),
- width$10=
- width$5
- -
- (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0)
- |
- 0;
- switch$2 = 1}
- if(! switch$2)var width$10=width$5;
- var width$6=width$10;
- switch$1 = 1}
- if(! switch$1)var width$6=width$5;
- var width$7=width$6}
- else
- switch$0 = 1;
- else
- if(30 < switcher - 1 >>> 0)var width$7=width$4;else switch$0 = 1;
- var width$8=switch$0?bad_float(0):width$7;
- if(0 !== width$8 && ! end_of_input(ib))
- {var c$2=peek_char(ib);
- if(80 !== c$2 && 112 !== c$2)return width$8;
- var
- width$9=store_char(width$8,ib,c$2),
- _iH_=0 === width$9?1:0,
- _iI_=_iH_ || end_of_input(ib);
- if(_iI_)bad_hex_float(0);
- return scan_optionally_signed_decimal(width$9,ib)}
- return width$8}
- return bad_float(0)}
- function scan_string(stp,width,ib)
- {var width$0=width;
- for(;;)
- {if(0 === width$0)return width$0;
- var c=peek_char(ib);
- if(ib[1])return width$0;
- if(stp)
- {var c$0=stp[1];
- if(c === c$0)return skip_char(width$0,ib);
- var width$1=store_char(width$0,ib,c),width$0=width$1;
- continue}
- var _iu_=c - 9 | 0,switch$0=0;
- if(4 < _iu_ >>> 0)
- {if(23 === _iu_)switch$0 = 1}
- else
- if(1 < _iu_ - 2 >>> 0)switch$0 = 1;
- if(switch$0)return width$0;
- var width$2=store_char(width$0,ib,c),width$0=width$2;
- continue}}
- function scan_char(width,ib)
- {return store_char(width,ib,checked_peek_char(ib))}
- function hexadecimal_value_of_char(d)
- {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0}
- function check_next_char(message,width,ib)
- {if(0 === width)return bad_token_length(message);
- var c=peek_char(ib);
- return ib[1]?bad_input(caml_call1(sprintf(_cn_),message)):c}
- function check_next_char_for_char(_is_,_it_)
- {return check_next_char(cst_a_Char,_is_,_it_)}
- function check_next_char_for_string(_iq_,_ir_)
- {return check_next_char(cst_a_String,_iq_,_ir_)}
- function scan_backslash_char(width,ib)
- {var c0=check_next_char_for_char(width,ib),switch$0=0;
- if(40 <= c0)
- {if(58 <= c0)
- {var switcher=c0 - 92 | 0;
- if(! (28 < switcher >>> 0))
- switch(switcher)
- {case 28:
- var
- get_digit=
- function(param)
- {var c=next_char(ib),_ip_=c - 48 | 0,switch$0=0;
- if(22 < _ip_ >>> 0)
- {if(! (5 < _ip_ - 49 >>> 0))switch$0 = 1}
- else
- if(6 < _ip_ - 10 >>> 0)switch$0 = 1;
- return switch$0?c:bad_input_escape(c)},
- c1=get_digit(0),
- c2=get_digit(0),
- _il_=hexadecimal_value_of_char(c2),
- c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _il_ | 0,
- switch$1=0;
- if(0 <= c$0 && ! (255 < c$0))
- {var _in_=char_of_int(c$0);switch$1 = 1}
- if(! switch$1)
- var _in_=bad_input(caml_call2(sprintf(_cu_),c1,c2));
- return store_char(width - 2 | 0,ib,_in_);
- case 0:
- case 6:
- case 18:
- case 22:
- case 24:switch$0 = 1;break
- }}
- else
- if(48 <= c0)
- {var
- get_digit$0=
- function(param)
- {var c=next_char(ib);
- return 9 < c - 48 >>> 0?bad_input_escape(c):c},
- c1$0=get_digit$0(0),
- c2$0=get_digit$0(0),
- c=
- ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0)
- +
- (c2$0 - 48 | 0)
- |
- 0,
- switch$2=0;
- if(0 <= c && ! (255 < c)){var _io_=char_of_int(c);switch$2 = 1}
- if(! switch$2)
- var _io_=bad_input(caml_call3(sprintf(_ct_),c0,c1$0,c2$0));
- return store_char(width - 2 | 0,ib,_io_)}}
- else
- if(34 === c0 || 39 <= c0)switch$0 = 1;
- if(switch$0)
- {var switch$3=0;
- if(110 <= c0)
- if(117 <= c0)
- switch$3 = 1;
- else
- switch(c0 - 110 | 0)
- {case 0:var _im_=10;break;
- case 4:var _im_=13;break;
- case 6:var _im_=9;break;
- default:switch$3 = 1}
- else
- if(98 === c0)var _im_=8;else switch$3 = 1;
- if(switch$3)var _im_=c0;
- return store_char(width,ib,_im_)}
- return bad_input_escape(c0)}
- function scan_caml_char(width,ib)
- {function find_stop(width)
- {var c=check_next_char_for_char(width,ib);
- return 39 === c?ignore_char(width,ib):character_mismatch(39,c)}
- var c=checked_peek_char(ib);
- if(39 === c)
- {var
- width$0=ignore_char(width,ib),
- c$0=check_next_char_for_char(width$0,ib);
- return 92 === c$0
- ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib))
- :find_stop(store_char(width$0,ib,c$0))}
- return character_mismatch(39,c)}
- function scan_caml_string(width,ib)
- {function find_stop$0(counter,width)
- {var width$0=width;
- for(;;)
- {var c=check_next_char_for_string(width$0,ib);
- if(34 === c)return ignore_char(width$0,ib);
- if(92 === c)
- {var
- width$1=ignore_char(width$0,ib),
- match=check_next_char_for_string(width$1,ib);
- if(10 === match)
- {var _ij_=ignore_char(width$1,ib);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return skip_spaces(counter$0,_ij_)}
- return caml_trampoline_return(skip_spaces,[0,_ij_])}
- if(13 === match)
- {var
- width$3=ignore_char(width$1,ib),
- match$0=check_next_char_for_string(width$3,ib);
- if(10 === match$0)
- {var _ik_=ignore_char(width$3,ib);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return skip_spaces(counter$1,_ik_)}
- return caml_trampoline_return(skip_spaces,[0,_ik_])}
- var width$5=store_char(width$3,ib,13),width$0=width$5;
- continue}
- var width$4=scan_backslash_char(width$1,ib),width$0=width$4;
- continue}
- var width$2=store_char(width$0,ib,c),width$0=width$2;
- continue}}
- function skip_spaces(counter,width)
- {var width$0=width;
- for(;;)
- {var match=check_next_char_for_string(width$0,ib);
- if(32 === match)
- {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return find_stop$0(counter$0,width$0)}
- return caml_trampoline_return(find_stop$0,[0,width$0])}}
- function find_stop(width){return caml_trampoline(find_stop$0(0,width))}
- var c=checked_peek_char(ib);
- return 34 === c
- ?find_stop(ignore_char(width,ib))
- :character_mismatch(34,c)}
- function scan_chars_in_char_set(char_set,scan_indic,width,ib)
- {function scan_chars(i,stp)
- {var i$0=i;
- for(;;)
- {var c=peek_char(ib),_if_=0 < i$0?1:0;
- if(_if_)
- {var _ig_=1 - ib[1];
- if(_ig_)
- var _ih_=is_in_char_set(char_set,c),_ii_=_ih_?c !== stp?1:0:_ih_;
- else
- var _ii_=_ig_}
- else
- var _ii_=_if_;
- if(_ii_)
- {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue}
- return _ii_}}
- if(scan_indic)
- {var c=scan_indic[1];
- scan_chars(width,c);
- var _ie_=1 - ib[1];
- if(_ie_)
- {var ci=peek_char(ib);
- return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)}
- return _ie_}
- return scan_chars(width,-1)}
- function scanf_bad_input(ib,x)
- {if(x[1] === Scan_failure)
- var s=x[2];
- else
- {if(x[1] !== Failure)throw x;var s=x[2]}
- var i=char_count(ib);
- return bad_input(caml_call2(sprintf(_cw_),i,s))}
- function get_counter(ib,counter)
- {switch(counter)
- {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}}
- function width_of_pad_opt(pad_opt)
- {if(pad_opt){var width=pad_opt[1];return width}return max_int}
- function stopper_of_formatting_lit(fmting)
- {if(6 === fmting)return _cx_;
- var
- str=string_of_formatting_lit(fmting),
- stp=caml_string_get(str,1),
- sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0);
- return [0,stp,sub_str]}
- function take_format_readers$0(counter,k,fmt)
- {var fmt$0=fmt;
- for(;;)
- if(typeof fmt$0 === "number")
- return caml_call1(k,0);
- else
- switch(fmt$0[0])
- {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue;
- case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue;
- case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue;
- case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue;
- case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue;
- case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue;
- case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue;
- case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue;
- case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue;
- case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue;
- case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue;
- case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue;
- case 12:var fmt$13=fmt$0[2],fmt$0=fmt$13;continue;
- case 13:var fmt$14=fmt$0[3],fmt$0=fmt$14;continue;
- case 14:
- var rest=fmt$0[3],fmtty=fmt$0[2],_ic_=erase_rel(symm(fmtty));
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return take_fmtty_format_readers$0(counter$0,k,_ic_,rest)}
- return caml_trampoline_return
- (take_fmtty_format_readers$0,[0,k,_ic_,rest]);
- case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue;
- case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue;
- case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue;
- case 18:
- var _id_=fmt$0[1];
- if(0 === _id_[0])
- {var
- rest$0=fmt$0[2],
- match=_id_[1],
- fmt$18=match[1],
- fmt$19=concat_fmt(fmt$18,rest$0),
- fmt$0=fmt$19;
- continue}
- var
- rest$1=fmt$0[2],
- match$0=_id_[1],
- fmt$20=match$0[1],
- fmt$21=concat_fmt(fmt$20,rest$1),
- fmt$0=fmt$21;
- continue;
- case 19:
- var fmt_rest=fmt$0[1];
- return function(reader)
- {function new_k(readers_rest)
- {return caml_call1(k,[0,reader,readers_rest])}
- return take_format_readers(new_k,fmt_rest)};
- case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue;
- case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue;
- case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue;
- case 23:
- var rest$2=fmt$0[2],ign=fmt$0[1];
- if(typeof ign === "number")
- switch(ign)
- {case 0:var fmt$0=rest$2;continue;
- case 1:var fmt$0=rest$2;continue;
- case 2:
- return function(reader)
- {function new_k(readers_rest)
- {return caml_call1(k,[0,reader,readers_rest])}
- return take_format_readers(new_k,rest$2)};
- default:var fmt$0=rest$2;continue}
- else
- switch(ign[0])
- {case 0:var fmt$0=rest$2;continue;
- case 1:var fmt$0=rest$2;continue;
- case 2:var fmt$0=rest$2;continue;
- case 3:var fmt$0=rest$2;continue;
- case 4:var fmt$0=rest$2;continue;
- case 5:var fmt$0=rest$2;continue;
- case 6:var fmt$0=rest$2;continue;
- case 7:var fmt$0=rest$2;continue;
- case 8:var fmt$0=rest$2;continue;
- case 9:
- var fmtty$0=ign[2];
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return take_fmtty_format_readers$0
- (counter$1,k,fmtty$0,rest$2)}
- return caml_trampoline_return
- (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]);
- case 10:var fmt$0=rest$2;continue;
- default:var fmt$0=rest$2;continue}
- default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}}
- function take_fmtty_format_readers$0(counter,k,fmtty,fmt)
- {var fmtty$0=fmtty;
- for(;;)
- if(typeof fmtty$0 === "number")
- {if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return take_format_readers$0(counter$0,k,fmt)}
- return caml_trampoline_return(take_format_readers$0,[0,k,fmt])}
- else
- switch(fmtty$0[0])
- {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue;
- case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue;
- case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue;
- case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue;
- case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue;
- case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue;
- case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue;
- case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue;
- case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue;
- case 9:
- var
- rest=fmtty$0[3],
- ty2=fmtty$0[2],
- ty1=fmtty$0[1],
- ty=trans(symm(ty1),ty2),
- fmtty$10=concat_fmtty(ty,rest),
- fmtty$0=fmtty$10;
- continue;
- case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue;
- case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue;
- case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue;
- case 13:
- var fmt_rest=fmtty$0[1];
- return function(reader)
- {function new_k(readers_rest)
- {return caml_call1(k,[0,reader,readers_rest])}
- return take_fmtty_format_readers(new_k,fmt_rest,fmt)};
- default:
- var fmt_rest$0=fmtty$0[1];
- return function(reader)
- {function new_k(readers_rest)
- {return caml_call1(k,[0,reader,readers_rest])}
- return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}}
- function take_format_readers(k,fmt)
- {return caml_trampoline(take_format_readers$0(0,k,fmt))}
- function take_fmtty_format_readers(k,fmtty,fmt)
- {return caml_trampoline(take_fmtty_format_readers$0(0,k,fmtty,fmt))}
- function make_scanf(ib,fmt,readers)
- {var fmt$0=fmt;
- for(;;)
- if(typeof fmt$0 === "number")
- return 0;
- else
- switch(fmt$0[0])
- {case 0:
- var rest=fmt$0[1];
- scan_char(0,ib);
- var c=token_char(ib);
- return [0,c,make_scanf(ib,rest,readers)];
- case 1:
- var rest$0=fmt$0[1];
- scan_caml_char(0,ib);
- var c$0=token_char(ib);
- return [0,c$0,make_scanf(ib,rest$0,readers)];
- case 2:
- var _h1_=fmt$0[1],_h2_=fmt$0[2];
- if(typeof _h2_ !== "number")
- switch(_h2_[0])
- {case 17:
- var
- rest$2=_h2_[2],
- fmting_lit=_h2_[1],
- match=stopper_of_formatting_lit(fmting_lit),
- str=match[2],
- stp=match[1],
- scan$0=
- function(width,param,ib)
- {return scan_string([0,stp],width,ib)},
- str_rest=[11,str,rest$2];
- return pad_prec_scanf
- (ib,str_rest,readers,_h1_,0,scan$0,token_string);
- case 18:
- var _h3_=_h2_[1];
- if(0 === _h3_[0])
- {var
- rest$3=_h2_[2],
- match$0=_h3_[1],
- fmt$1=match$0[1],
- scan$1=
- function(width,param,ib){return scan_string(_cy_,width,ib)};
- return pad_prec_scanf
- (ib,
- concat_fmt(fmt$1,rest$3),
- readers,
- _h1_,
- 0,
- scan$1,
- token_string)}
- var
- rest$4=_h2_[2],
- match$1=_h3_[1],
- fmt$2=match$1[1],
- scan$2=
- function(width,param,ib){return scan_string(_cz_,width,ib)};
- return pad_prec_scanf
- (ib,
- concat_fmt(fmt$2,rest$4),
- readers,
- _h1_,
- 0,
- scan$2,
- token_string)
- }
- var
- rest$1=fmt$0[2],
- scan=function(width,param,ib){return scan_string(0,width,ib)};
- return pad_prec_scanf(ib,rest$1,readers,_h1_,0,scan,token_string);
- case 3:
- var
- rest$5=fmt$0[2],
- pad=fmt$0[1],
- scan$3=function(width,param,ib){return scan_caml_string(width,ib)};
- return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string);
- case 4:
- var
- rest$6=fmt$0[4],
- prec=fmt$0[3],
- pad$0=fmt$0[2],
- iconv=fmt$0[1],
- conv=integer_conversion_of_char(char_of_iconv(iconv)),
- scan$4=
- function(width,param,ib)
- {return scan_int_conversion(conv,width,ib)};
- return pad_prec_scanf
- (ib,
- rest$6,
- readers,
- pad$0,
- prec,
- scan$4,
- function(ib)
- {return caml_int_of_string(token_int_literal(conv,ib))});
- case 5:
- var
- rest$7=fmt$0[4],
- prec$0=fmt$0[3],
- pad$1=fmt$0[2],
- iconv$0=fmt$0[1],
- conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)),
- scan$5=
- function(width,param,ib)
- {return scan_int_conversion(conv$0,width,ib)};
- return pad_prec_scanf
- (ib,
- rest$7,
- readers,
- pad$1,
- prec$0,
- scan$5,
- function(ib)
- {return caml_int_of_string(token_int_literal(conv$0,ib))});
- case 6:
- var
- rest$8=fmt$0[4],
- prec$1=fmt$0[3],
- pad$2=fmt$0[2],
- iconv$1=fmt$0[1],
- conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)),
- scan$6=
- function(width,param,ib)
- {return scan_int_conversion(conv$1,width,ib)};
- return pad_prec_scanf
- (ib,
- rest$8,
- readers,
- pad$2,
- prec$1,
- scan$6,
- function(ib)
- {return caml_int_of_string(token_int_literal(conv$1,ib))});
- case 7:
- var
- rest$9=fmt$0[4],
- prec$2=fmt$0[3],
- pad$3=fmt$0[2],
- iconv$2=fmt$0[1],
- conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)),
- scan$7=
- function(width,param,ib)
- {return scan_int_conversion(conv$2,width,ib)};
- return pad_prec_scanf
- (ib,
- rest$9,
- readers,
- pad$3,
- prec$2,
- scan$7,
- function(ib)
- {return caml_int64_of_string(token_int_literal(conv$2,ib))});
- case 8:
- switch(fmt$0[1][2])
- {case 5:
- case 8:
- var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2];
- return pad_prec_scanf
- (ib,
- rest$11,
- readers,
- pad$5,
- prec$4,
- scan_caml_float,
- token_float);
- case 6:
- case 7:
- var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2];
- return pad_prec_scanf
- (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float);
- default:
- var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2];
- return pad_prec_scanf
- (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)}
- case 9:
- var
- rest$13=fmt$0[2],
- pad$7=fmt$0[1],
- scan$8=
- function(param,_ib_,ib)
- {var
- c=checked_peek_char(ib),
- m=
- 102 === c
- ?5
- :116 === c?4:bad_input(caml_call1(sprintf(_cv_),c));
- return scan_string(0,m,ib)};
- return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool);
- case 10:
- var rest$14=fmt$0[1];
- if(end_of_input(ib)){var fmt$0=rest$14;continue}
- return bad_input(cst_end_of_input_not_found);
- case 11:
- var rest$15=fmt$0[2],str$0=fmt$0[1];
- iter$4(function(_ia_){return check_char(ib,_ia_)},str$0);
- var fmt$0=rest$15;
- continue;
- case 12:
- var rest$16=fmt$0[2],chr=fmt$0[1];
- check_char(ib,chr);
- var fmt$0=rest$16;
- continue;
- case 13:
- var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1];
- scan_caml_string(width_of_pad_opt(pad_opt),ib);
- var s=token_string(ib);
- try
- {var _h4_=format_of_string_fmtty(s,fmtty),fmt$3=_h4_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] !== Failure)throw exn;
- var msg=exn[2],fmt$3=bad_input(msg)}
- return [0,fmt$3,make_scanf(ib,rest$17,readers)];
- case 14:
- var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1];
- scan_caml_string(width_of_pad_opt(pad_opt$0),ib);
- var s$0=token_string(ib);
- try
- {var
- match$2=fmt_ebb_of_string(0,s$0),
- fmt$6=match$2[1],
- match$3=fmt_ebb_of_string(0,s$0),
- fmt$7=match$3[1],
- fmt$8=type_format(fmt$7,erase_rel(symm(fmtty$0))),
- _h6_=type_format(fmt$6,erase_rel(fmtty$0)),
- fmt$5=fmt$8,
- fmt$4=_h6_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] !== Failure)throw exn;
- var
- msg$0=exn[2],
- _h5_=bad_input(msg$0),
- fmt$5=_h5_[2],
- fmt$4=_h5_[1]}
- return [0,
- [0,fmt$4,s$0],
- make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)];
- case 15:return invalid_arg(cst_scanf_bad_conversion_a);
- case 16:return invalid_arg(cst_scanf_bad_conversion_t);
- case 17:
- var
- rest$19=fmt$0[2],
- formatting_lit=fmt$0[1],
- _h7_=string_of_formatting_lit(formatting_lit);
- iter$4(function(_h$_){return check_char(ib,_h$_)},_h7_);
- var fmt$0=rest$19;
- continue;
- case 18:
- var _h8_=fmt$0[1];
- if(0 === _h8_[0])
- {var rest$20=fmt$0[2],match$4=_h8_[1],fmt$9=match$4[1];
- check_char(ib,64);
- check_char(ib,123);
- var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10;
- continue}
- var rest$21=fmt$0[2],match$5=_h8_[1],fmt$11=match$5[1];
- check_char(ib,64);
- check_char(ib,91);
- var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12;
- continue;
- case 19:
- var fmt_rest=fmt$0[1];
- if(readers)
- {var
- readers_rest=readers[2],
- reader=readers[1],
- x=caml_call1(reader,ib);
- return [0,x,make_scanf(ib,fmt_rest,readers_rest)]}
- return invalid_arg(cst_scanf_missing_reader);
- case 20:
- var _h9_=fmt$0[1],_h__=fmt$0[3];
- if(typeof _h__ !== "number" && 17 === _h__[0])
- {var
- rest$23=_h__[2],
- fmting_lit$0=_h__[1],
- char_set$0=fmt$0[2],
- match$6=stopper_of_formatting_lit(fmting_lit$0),
- str$1=match$6[2],
- stp$0=match$6[1],
- width$0=width_of_pad_opt(_h9_);
- scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib);
- var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23];
- return [0,s$2,make_scanf(ib,str_rest$0,readers)]}
- var
- rest$22=fmt$0[3],
- char_set=fmt$0[2],
- width=width_of_pad_opt(_h9_);
- scan_chars_in_char_set(char_set,0,width,ib);
- var s$1=token_string(ib);
- return [0,s$1,make_scanf(ib,rest$22,readers)];
- case 21:
- var
- rest$24=fmt$0[2],
- counter=fmt$0[1],
- count=get_counter(ib,counter);
- return [0,count,make_scanf(ib,rest$24,readers)];
- case 22:
- var rest$25=fmt$0[1],c$1=checked_peek_char(ib);
- return [0,c$1,make_scanf(ib,rest$25,readers)];
- case 23:
- var
- rest$26=fmt$0[2],
- ign=fmt$0[1],
- match$7=param_format_of_ignored_format(ign,rest$26),
- fmt$13=match$7[1],
- match$8=make_scanf(ib,fmt$13,readers);
- if(match$8){var arg_rest=match$8[2];return arg_rest}
- throw [0,Assert_failure,_cA_];
- default:return invalid_arg(cst_scanf_bad_conversion_custo)}}
- function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token)
- {if(typeof pad === "number")
- {if(typeof prec === "number")
- {if(prec)return invalid_arg(cst_scanf_bad_conversion);
- caml_call3(scan,max_int,max_int,ib);
- var x=caml_call1(token,ib);
- return [0,x,make_scanf(ib,fmt,readers)]}
- var p=prec[1];
- caml_call3(scan,max_int,p,ib);
- var x$0=caml_call1(token,ib);
- return [0,x$0,make_scanf(ib,fmt,readers)]}
- else
- {if(0 === pad[0])
- {if(pad[1])
- {var _h0_=pad[2];
- if(typeof prec === "number")
- {if(prec)return invalid_arg(cst_scanf_bad_conversion$0);
- caml_call3(scan,_h0_,max_int,ib);
- var x$1=caml_call1(token,ib);
- return [0,x$1,make_scanf(ib,fmt,readers)]}
- var p$0=prec[1];
- caml_call3(scan,_h0_,p$0,ib);
- var x$2=caml_call1(token,ib);
- return [0,x$2,make_scanf(ib,fmt,readers)]}
- return invalid_arg(cst_scanf_bad_conversion$1)}
- return invalid_arg(cst_scanf_bad_conversion$2)}}
- function kscanf(ib,ef,param)
- {var str=param[2],fmt=param[1];
- function apply(f,args)
- {var f$0=f,args$0=args;
- for(;;)
- {if(args$0)
- {var
- r=args$0[2],
- x=args$0[1],
- f$1=caml_call1(f$0,x),
- f$0=f$1,
- args$0=r;
- continue}
- return f$0}}
- function k(readers,f)
- {reset_token(ib);
- try
- {var _hZ_=[0,make_scanf(ib,fmt,readers)],_hY_=_hZ_}
- catch(exc)
- {exc = caml_wrap_exception(exc);
- var switch$0=0;
- if
- (exc[1]
- !==
- Scan_failure
- &&
- exc[1]
- !==
- Failure
- &&
- exc
- !==
- End_of_file)
- {if(exc[1] !== Invalid_argument)throw exc;
- var
- msg=exc[2],
- _hX_=
- invalid_arg
- (cat(msg,cat(cst_in_format,cat(escaped$1(str),cst$88))));
- switch$0 = 1}
- if(! switch$0)var _hX_=[1,exc];
- var _hY_=_hX_}
- if(0 === _hY_[0]){var args=_hY_[1];return apply(f,args)}
- var exc=_hY_[1];
- return caml_call2(ef,ib,exc)}
- return take_format_readers(k,fmt)}
- function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)}
- function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)}
- function sscanf(s,fmt)
- {return kscanf(from_string$1(s),scanf_bad_input,fmt)}
- function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)}
- function bscanf_format(ib,format,f)
- {scan_caml_string(max_int,ib);
- var str=token_string(ib);
- try
- {var _hW_=format_of_string_format(str,format),fmt=_hW_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] !== Failure)throw exn;
- var msg=exn[2],fmt=bad_input(msg)}
- return caml_call1(f,fmt)}
- function sscanf_format(s,format,f)
- {return bscanf_format(from_string$1(s),format,f)}
- function format_from_string(s,fmt)
- {function _hV_(x){return x}
- return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_hV_)}
- function unescaped(s)
- {function _hU_(x){return x}
- return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cB_),_hU_)}
- function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)}
- function fscanf(ic,fmt)
- {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)}
- var
- Stdlib_Scanf=
- [0,
- [0,
- stdib,
- from_file,
- from_file_bin,
- close_in$0,
- from_file,
- from_file_bin,
- from_string$1,
- from_function$0,
- from_channel$0,
- end_of_input,
- beginning_of_input,
- name_of_input,
- stdib],
- Scan_failure,
- bscanf,
- sscanf,
- scanf,
- kscanf,
- ksscanf,
- bscanf_format,
- sscanf_format,
- format_from_string,
- unescaped,
- fscanf,
- kfscanf];
- caml_register_global(803,Stdlib_Scanf,"Stdlib__Scanf");
- function register(name,v){return caml_register_named_value(name,v)}
- function register_exception(name,exn)
- {var slot=caml_obj_tag(exn) === 248?exn:exn[1];
- return caml_register_named_value(name,slot)}
- var Stdlib_Callback=[0,register,register_exception];
- caml_register_global(804,Stdlib_Callback,"Stdlib__Callback");
- function copy$7(o){var o$0=o.slice();return caml_set_oo_id(o$0)}
- var params$0=[0,1,1,1,3,16],initial_object_size=2,dummy_item=0;
- function public_method_label(s)
- {var accu=[0,0],_hR_=caml_ml_string_length(s) - 1 | 0,_hQ_=0;
- if(! (_hR_ < 0))
- {var i=_hQ_;
- for(;;)
- {var _hS_=caml_string_get(s,i);
- accu[1] = (223 * accu[1] | 0) + _hS_ | 0;
- var _hT_=i + 1 | 0;
- if(_hR_ !== i){var i=_hT_;continue}
- break}}
- accu[1] = accu[1] & 2147483647;
- var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1];
- return tag}
- function compare$13(x,y){return caml_string_compare(x,y)}
- var Vars=caml_call1(Stdlib_Map[1],[0,compare$13]);
- function compare$14(x,y){return caml_string_compare(x,y)}
- var
- Meths=caml_call1(Stdlib_Map[1],[0,compare$14]),
- compare$15=caml_int_compare,
- Labs=caml_call1(Stdlib_Map[1],[0,compare$15]),
- dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0],
- table_count=[0,0],
- dummy_met=caml_obj_block(0,0);
- function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n}
- function new_table(pub_labels)
- {table_count[1]++;
- var
- len=pub_labels.length - 1,
- methods=caml_make_vect((len * 2 | 0) + 2 | 0,dummy_met);
- caml_check_bound(methods,0)[1] = len;
- var _hK_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0;
- caml_check_bound(methods,1)[2] = _hK_;
- var _hM_=len - 1 | 0,_hL_=0;
- if(! (_hM_ < 0))
- {var i=_hL_;
- for(;;)
- {var
- _hO_=(i * 2 | 0) + 3 | 0,
- _hN_=caml_check_bound(pub_labels,i)[1 + i];
- caml_check_bound(methods,_hO_)[1 + _hO_] = _hN_;
- var _hP_=i + 1 | 0;
- if(_hM_ !== i){var i=_hP_;continue}
- break}}
- return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]}
- function resize$1(array,new_size)
- {var old_size=array[2].length - 1,_hI_=old_size < new_size?1:0;
- if(_hI_)
- {var new_buck=caml_make_vect(new_size,dummy_met);
- blit$1(array[2],0,new_buck,0,old_size);
- array[2] = new_buck;
- var _hJ_=0}
- else
- var _hJ_=_hI_;
- return _hJ_}
- var method_count=[0,0],inst_var_count=[0,0];
- function new_method(table)
- {var index=table[2].length - 1;
- resize$1(table,index + 1 | 0);
- return index}
- function get_method_label(table,name)
- {try
- {var _hG_=caml_call2(Meths[28],name,table[3]);return _hG_}
- catch(_hH_)
- {_hH_ = caml_wrap_exception(_hH_);
- if(_hH_ === Not_found)
- {var label=new_method(table);
- table[3] = caml_call3(Meths[4],name,label,table[3]);
- table[4] = caml_call3(Labs[4],label,1,table[4]);
- return label}
- throw _hH_}}
- function get_method_labels(table,names)
- {return map$6(function(_hF_){return get_method_label(table,_hF_)},names)}
- function set_method(table,label,element)
- {method_count[1]++;
- return caml_call2(Labs[28],label,table[4])
- ?(resize$1(table,label + 1 | 0),
- caml_check_bound(table[2],label)[1 + label]
- =
- element,
- 0)
- :(table[6] = [0,[0,label,element],table[6]],0)}
- function get_method(table,label)
- {try
- {var _hD_=assoc(label,table[6]);return _hD_}
- catch(_hE_)
- {_hE_ = caml_wrap_exception(_hE_);
- if(_hE_ === Not_found)
- return caml_check_bound(table[2],label)[1 + label];
- throw _hE_}}
- function to_list$3(arr){return 0 === arr?0:to_list$1(arr)}
- function narrow(table,vars,virt_meths,concr_meths)
- {var
- vars$0=to_list$3(vars),
- virt_meths$0=to_list$3(virt_meths),
- concr_meths$0=to_list$3(concr_meths),
- virt_meth_labs=
- map$3
- (function(_hC_){return get_method_label(table,_hC_)},virt_meths$0),
- concr_meth_labs=
- map$3
- (function(_hB_){return get_method_label(table,_hB_)},concr_meths$0);
- table[5]
- =
- [0,
- [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0],
- table[5]];
- var _hs_=Vars[1],_ht_=table[7];
- function _hu_(lab,info,tvars)
- {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars}
- table[7] = caml_call3(Vars[13],_hu_,_ht_,_hs_);
- var by_name=[0,Meths[1]],by_label=[0,Labs[1]];
- iter2
- (function(met,label)
- {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]);
- var _hx_=by_label[1];
- try
- {var _hz_=caml_call2(Labs[28],label,table[4]),_hy_=_hz_}
- catch(_hA_)
- {_hA_ = caml_wrap_exception(_hA_);
- if(_hA_ !== Not_found)throw _hA_;
- var _hy_=1}
- by_label[1] = caml_call3(Labs[4],label,_hy_,_hx_);
- return 0},
- concr_meths$0,
- concr_meth_labs);
- iter2
- (function(met,label)
- {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]);
- by_label[1] = caml_call3(Labs[4],label,0,by_label[1]);
- return 0},
- virt_meths$0,
- virt_meth_labs);
- table[3] = by_name[1];
- table[4] = by_label[1];
- var _hv_=0,_hw_=table[6];
- table[6]
- =
- fold_right
- (function(met,hm)
- {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]},
- _hw_,
- _hv_);
- return 0}
- function widen(table)
- {var
- match=hd(table[5]),
- vars=match[6],
- virt_meths=match[5],
- saved_vars=match[4],
- saved_hidden_meths=match[3],
- by_label=match[2],
- by_name=match[1];
- table[5] = tl(table[5]);
- table[7]
- =
- fold_left$0
- (function(s,v)
- {var _hr_=caml_call2(Vars[28],v,table[7]);
- return caml_call3(Vars[4],v,_hr_,s)},
- saved_vars,
- vars);
- table[3] = by_name;
- table[4] = by_label;
- var _hq_=table[6];
- table[6]
- =
- fold_right
- (function(met,hm)
- {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]},
- _hq_,
- saved_hidden_meths);
- return 0}
- function new_slot(table)
- {var index=table[1];table[1] = index + 1 | 0;return index}
- function new_variable(table,name)
- {try
- {var _ho_=caml_call2(Vars[28],name,table[7]);return _ho_}
- catch(_hp_)
- {_hp_ = caml_wrap_exception(_hp_);
- if(_hp_ === Not_found)
- {var index=new_slot(table);
- if(caml_string_notequal(name,cst$93))
- table[7] = caml_call3(Vars[4],name,index,table[7]);
- return index}
- throw _hp_}}
- function to_array(arr){return caml_equal(arr,0)?[0]:arr}
- function new_methods_variables(table,meths,vals)
- {var
- meths$0=to_array(meths),
- nmeths=meths$0.length - 1,
- nvals=vals.length - 1,
- res=caml_make_vect(nmeths + nvals | 0,0),
- _hg_=nmeths - 1 | 0,
- _hf_=0;
- if(! (_hg_ < 0))
- {var i$0=_hf_;
- for(;;)
- {var
- _hm_=
- get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]);
- caml_check_bound(res,i$0)[1 + i$0] = _hm_;
- var _hn_=i$0 + 1 | 0;
- if(_hg_ !== i$0){var i$0=_hn_;continue}
- break}}
- var _hi_=nvals - 1 | 0,_hh_=0;
- if(! (_hi_ < 0))
- {var i=_hh_;
- for(;;)
- {var
- _hk_=i + nmeths | 0,
- _hj_=new_variable(table,caml_check_bound(vals,i)[1 + i]);
- caml_check_bound(res,_hk_)[1 + _hk_] = _hj_;
- var _hl_=i + 1 | 0;
- if(_hi_ !== i){var i=_hl_;continue}
- break}}
- return res}
- function get_variable(table,name)
- {try
- {var _hd_=caml_call2(Vars[28],name,table[7]);return _hd_}
- catch(_he_)
- {_he_ = caml_wrap_exception(_he_);
- if(_he_ === Not_found)throw [0,Assert_failure,_cC_];
- throw _he_}}
- function get_variables(table,names)
- {return map$6(function(_hc_){return get_variable(table,_hc_)},names)}
- function add_initializer(table,f){table[8] = [0,f,table[8]];return 0}
- function create_table(public_methods)
- {if(0 === public_methods)return new_table([0]);
- var
- tags=map$6(public_method_label,public_methods),
- table=new_table(tags);
- iteri$2
- (function(i,met)
- {var lab=(i * 2 | 0) + 2 | 0;
- table[3] = caml_call3(Meths[4],met,lab,table[3]);
- table[4] = caml_call3(Labs[4],lab,1,table[4]);
- return 0},
- public_methods);
- return table}
- function init_class(table)
- {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0;
- table[8] = rev(table[8]);
- return resize$1
- (table,
- 3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)}
- function inherits(cla,vals,virt_meths,concr_meths,param,top)
- {var env=param[4],super$0=param[2];
- narrow(cla,vals,virt_meths,concr_meths);
- var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla);
- widen(cla);
- var
- _g9_=0,
- _g__=to_array(concr_meths),
- _g$_=
- [0,
- map$6
- (function(nm){return get_method(cla,get_method_label(cla,nm))},_g__),
- _g9_],
- _ha_=to_array(vals);
- return caml_array_concat
- ([0,
- [0,init],
- [0,
- map$6(function(_hb_){return get_variable(cla,_hb_)},_ha_),
- _g$_]])}
- function make_class(pub_meths,class_init)
- {var table=create_table(pub_meths),env_init=caml_call1(class_init,table);
- init_class(table);
- return [0,caml_call1(env_init,0),class_init,env_init,0]}
- function make_class_store(pub_meths,class_init,init_table)
- {var table=create_table(pub_meths),env_init=caml_call1(class_init,table);
- init_class(table);
- init_table[2] = class_init;
- init_table[1] = env_init;
- return 0}
- function dummy_class(loc)
- {function undef(param){throw [0,Undefined_recursive_module,loc]}
- return [0,undef,undef,undef,0]}
- function create_object(table)
- {var obj=caml_obj_block(248,table[1]);
- obj[1] = table[2];
- return caml_set_oo_id(obj)}
- function create_object_opt(obj_0,table)
- {if(obj_0)return obj_0;
- var obj=caml_obj_block(248,table[1]);
- obj[1] = table[2];
- return caml_set_oo_id(obj)}
- function iter_f(obj,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var l=param$0[2],f=param$0[1];
- caml_call1(f,obj);
- var param$0=l;
- continue}
- return 0}}
- function run_initializers(obj,table)
- {var inits=table[8],_g8_=0 !== inits?1:0;
- return _g8_?iter_f(obj,inits):_g8_}
- function run_initializers_opt(obj_0,obj,table)
- {if(obj_0)return obj;
- var inits=table[8];
- if(0 !== inits)iter_f(obj,inits);
- return obj}
- function create_object_and_run_initiali(obj_0,table)
- {if(obj_0)return obj_0;
- var obj=create_object(table);
- run_initializers(obj,table);
- return obj}
- function get_data$0(param)
- {if(param)return param[2];throw [0,Assert_failure,_cG_]}
- function build_path(n,keys,tables)
- {var res=[0,0,0,0],r=[0,res],_g4_=0;
- if(! (n < 0))
- {var i=_g4_;
- for(;;)
- {var _g6_=r[1];
- r[1] = [0,caml_check_bound(keys,i)[1 + i],_g6_,0];
- var _g7_=i + 1 | 0;
- if(n !== i){var i=_g7_;continue}
- break}}
- var _g5_=r[1];
- if(tables){tables[2] = _g5_;return res}
- throw [0,Assert_failure,_cD_]}
- function lookup_tables(root,keys)
- {var tables$2=get_data$0(root);
- if(tables$2)
- {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2;
- a:
- for(;;)
- {if(0 <= i)
- {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables;
- for(;;)
- {if(tables$0)
- {if(tables$0[1] === key)
- {var tables$1=get_data$0(tables$0);
- if(tables$1)
- {var i$0=i - 1 | 0,i=i$0,tables=tables$1;continue a}
- throw [0,Assert_failure,_cI_]}
- if(tables$0)
- {var _g3_=tables$0[3];
- if(_g3_){var tables$0=_g3_;continue}
- var v=[0,key,0,0];
- if(tables$0)
- {tables$0[3] = v;return build_path(i - 1 | 0,keys,v)}
- throw [0,Assert_failure,_cE_]}
- throw [0,Assert_failure,_cH_]}
- throw [0,Assert_failure,_cF_]}}
- return tables}}
- return build_path(keys.length - 1 - 1 | 0,keys,root)}
- function new_cache(table)
- {var n=new_method(table),switch$0=0;
- if
- (0
- !==
- (n % 2 | 0)
- &&
- !
- ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n))
- {var n$0=new_method(table);switch$0 = 1}
- if(! switch$0)var n$0=n;
- caml_check_bound(table[2],n$0)[1 + n$0] = 0;
- return n$0}
- function set_methods(table,methods)
- {var len=methods.length - 1,i=[0,0];
- for(;;)
- {if(i[1] < len)
- {var
- _gX_=i[1],
- label=caml_check_bound(methods,_gX_)[1 + _gX_],
- next=
- function(param)
- {i[1]++;
- var _g2_=i[1];
- return caml_check_bound(methods,_g2_)[1 + _g2_]},
- clo=next(0);
- if(typeof clo === "number")
- switch(clo)
- {case 0:
- var
- x=next(0),
- clo$0=function(x){return function(obj){return x}}(x);
- break;
- case 1:
- var
- n=next(0),
- clo$0=function(n){return function(obj){return obj[1 + n]}}(n);
- break;
- case 2:
- var
- e=next(0),
- n$0=next(0),
- clo$0=
- function(e,n){return function(obj){return obj[1 + e][1 + n]}}
- (e,n$0);
- break;
- case 3:
- var
- n$1=next(0),
- clo$0=
- function(n)
- {return function(obj){return caml_call1(obj[1][1 + n],obj)}}
- (n$1);
- break;
- case 4:
- var
- n$2=next(0),
- clo$0=
- function(n){return function(obj,x){obj[1 + n] = x;return 0}}
- (n$2);
- break;
- case 5:
- var
- f=next(0),
- x$0=next(0),
- clo$0=
- function(f,x){return function(obj){return caml_call1(f,x)}}
- (f,x$0);
- break;
- case 6:
- var
- f$0=next(0),
- n$3=next(0),
- clo$0=
- function(f,n)
- {return function(obj){return caml_call1(f,obj[1 + n])}}
- (f$0,n$3);
- break;
- case 7:
- var
- f$1=next(0),
- e$0=next(0),
- n$4=next(0),
- clo$0=
- function(f,e,n)
- {return function(obj)
- {return caml_call1(f,obj[1 + e][1 + n])}}
- (f$1,e$0,n$4);
- break;
- case 8:
- var
- f$2=next(0),
- n$5=next(0),
- clo$0=
- function(f,n)
- {return function(obj)
- {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}}
- (f$2,n$5);
- break;
- case 9:
- var
- f$3=next(0),
- x$1=next(0),
- y=next(0),
- clo$0=
- function(f,x,y)
- {return function(obj){return caml_call2(f,x,y)}}
- (f$3,x$1,y);
- break;
- case 10:
- var
- f$4=next(0),
- x$2=next(0),
- n$6=next(0),
- clo$0=
- function(f,x,n)
- {return function(obj){return caml_call2(f,x,obj[1 + n])}}
- (f$4,x$2,n$6);
- break;
- case 11:
- var
- f$5=next(0),
- x$3=next(0),
- e$1=next(0),
- n$7=next(0),
- clo$0=
- function(f,x,e,n)
- {return function(obj)
- {return caml_call2(f,x,obj[1 + e][1 + n])}}
- (f$5,x$3,e$1,n$7);
- break;
- case 12:
- var
- f$6=next(0),
- x$4=next(0),
- n$8=next(0),
- clo$0=
- function(f,x,n)
- {return function(obj)
- {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}}
- (f$6,x$4,n$8);
- break;
- case 13:
- var
- f$7=next(0),
- n$9=next(0),
- x$5=next(0),
- clo$0=
- function(f,n,x)
- {return function(obj){return caml_call2(f,obj[1 + n],x)}}
- (f$7,n$9,x$5);
- break;
- case 14:
- var
- f$8=next(0),
- e$2=next(0),
- n$10=next(0),
- x$6=next(0),
- clo$0=
- function(f,e,n,x)
- {return function(obj)
- {return caml_call2(f,obj[1 + e][1 + n],x)}}
- (f$8,e$2,n$10,x$6);
- break;
- case 15:
- var
- f$9=next(0),
- n$11=next(0),
- x$7=next(0),
- clo$0=
- function(f,n,x)
- {return function(obj)
- {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}}
- (f$9,n$11,x$7);
- break;
- case 16:
- var
- n$12=next(0),
- x$8=next(0),
- clo$0=
- function(n,x)
- {return function(obj)
- {return caml_call2(obj[1][1 + n],obj,x)}}
- (n$12,x$8);
- break;
- case 17:
- var
- n$13=next(0),
- m=next(0),
- clo$0=
- function(n,m)
- {return function(obj)
- {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}}
- (n$13,m);
- break;
- case 18:
- var
- n$14=next(0),
- e$3=next(0),
- m$0=next(0),
- clo$0=
- function(n,e,m)
- {return function(obj)
- {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}}
- (n$14,e$3,m$0);
- break;
- case 19:
- var
- n$15=next(0),
- m$1=next(0),
- clo$0=
- function(n,m)
- {return function(obj)
- {var _g0_=caml_call1(obj[1][1 + m],obj);
- return caml_call2(obj[1][1 + n],obj,_g0_)}}
- (n$15,m$1);
- break;
- case 20:
- var m$2=next(0),x$9=next(0);
- new_cache(table);
- var
- clo$0=
- function(m,x)
- {return function(obj)
- {return caml_call1(caml_get_public_method(x,m,0),x)}}
- (m$2,x$9);
- break;
- case 21:
- var m$3=next(0),n$16=next(0);
- new_cache(table);
- var
- clo$0=
- function(m,n)
- {return function(obj)
- {var _gZ_=obj[1 + n];
- return caml_call1(caml_get_public_method(_gZ_,m,0),_gZ_)}}
- (m$3,n$16);
- break;
- case 22:
- var m$4=next(0),e$4=next(0),n$17=next(0);
- new_cache(table);
- var
- clo$0=
- function(m,e,n)
- {return function(obj)
- {var _gY_=obj[1 + e][1 + n];
- return caml_call1(caml_get_public_method(_gY_,m,0),_gY_)}}
- (m$4,e$4,n$17);
- break;
- default:
- var m$5=next(0),n$18=next(0);
- new_cache(table);
- var
- clo$0=
- function(m,n)
- {return function(obj)
- {var _g1_=caml_call1(obj[1][1 + n],obj);
- return caml_call1(caml_get_public_method(_g1_,m,0),_g1_)}}
- (m$5,n$18)}
- else
- var clo$0=clo;
- set_method(table,label,clo$0);
- i[1]++;
- continue}
- return 0}}
- function stats$0(param)
- {return [0,table_count[1],method_count[1],inst_var_count[1]]}
- var
- CamlinternalOO=
- [0,
- public_method_label,
- new_method,
- new_variable,
- new_methods_variables,
- get_variable,
- get_variables,
- get_method_label,
- get_method_labels,
- get_method,
- set_method,
- set_methods,
- narrow,
- widen,
- add_initializer,
- dummy_table,
- create_table,
- init_class,
- inherits,
- make_class,
- make_class_store,
- dummy_class,
- copy$7,
- create_object,
- create_object_opt,
- run_initializers,
- run_initializers_opt,
- create_object_and_run_initiali,
- lookup_tables,
- params$0,
- stats$0];
- caml_register_global(805,CamlinternalOO,"CamlinternalOO");
- var Stdlib_Oo=[0,copy$7,public_method_label,public_method_label];
- caml_register_global(806,Stdlib_Oo,"Stdlib__Oo");
- function init_mod_block(loc,comps$0)
- {var
- length=comps$0.length - 1,
- modu=caml_obj_block(0,length),
- _gT_=length - 1 | 0,
- _gS_=0;
- if(! (_gT_ < 0))
- {var i=_gS_;
- for(;;)
- {var shape=caml_check_bound(comps$0,i)[1 + i];
- if(typeof shape === "number")
- switch(shape)
- {case 0:
- var
- fn$0=
- function(i)
- {function fn(x)
- {var fn$0=modu[1 + i];
- if(fn === fn$0)throw [0,Undefined_recursive_module,loc];
- return caml_call1(fn$0,x)}
- return fn},
- fn=fn$0(i),
- init=fn;
- break;
- case 1:
- var l=[];
- runtime.caml_update_dummy
- (l,
- [246,
- function(l,i)
- {return function(_gV_)
- {var l$0=modu[1 + i];
- if(l === l$0)throw [0,Undefined_recursive_module,loc];
- var _gW_=caml_obj_tag(l$0);
- return 250 === _gW_
- ?l$0[1]
- :246 === _gW_?force_lazy_block(l$0):l$0}}
- (l,i)]);
- var init=l;
- break;
- default:var init=dummy_class(loc)}
- else
- if(0 === shape[0])
- var comps=shape[1],init=init_mod_block(loc,comps);
- else
- var v=shape[1],init=v;
- modu[1 + i] = init;
- var _gU_=i + 1 | 0;
- if(_gT_ !== i){var i=_gU_;continue}
- break}}
- return modu}
- function init_mod(loc,shape)
- {if(typeof shape !== "number" && 0 === shape[0])
- {var comps=shape[1];return init_mod_block(loc,comps)}
- return failwith(cst_CamlinternalMod_init_mod_n)}
- function update_mod_block(comps$0,o,n)
- {if(0 === caml_obj_tag(n) && comps$0.length - 1 <= n.length - 1)
- {var _gQ_=comps$0.length - 1 - 1 | 0,_gP_=0;
- if(! (_gQ_ < 0))
- {var i=_gP_;
- for(;;)
- {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i];
- if(typeof shape === "number")
- if(2 === shape)
- {var switch$0=0;
- if(0 === caml_obj_tag(n$0) && 4 === n$0.length - 1)
- {var cl=o[1 + i],j=0;
- for(;;)
- {cl[1 + j] = n$0[1 + j];
- var _gO_=j + 1 | 0;
- if(3 !== j){var j=_gO_;continue}
- break}}
- else
- switch$0 = 1;
- if(switch$0)throw [0,Assert_failure,_cJ_]}
- else
- o[1 + i] = n$0;
- else
- if(0 === shape[0])
- {var comps=shape[1];update_mod_block(comps,o[1 + i],n$0)}
- var _gR_=i + 1 | 0;
- if(_gQ_ !== i){var i=_gR_;continue}
- break}}
- return 0}
- throw [0,Assert_failure,_cK_]}
- function update_mod(shape,o,n)
- {if(typeof shape !== "number" && 0 === shape[0])
- {var comps=shape[1];return update_mod_block(comps,o,n)}
- return failwith(cst_CamlinternalMod_update_mod)}
- var CamlinternalMod=[0,init_mod,update_mod];
- caml_register_global(807,CamlinternalMod,"CamlinternalMod");
- var
- initial_buffer=caml_create_bytes(32),
- buffer=[0,initial_buffer],
- bufpos=[0,0];
- function reset_buffer(param)
- {buffer[1] = initial_buffer;bufpos[1] = 0;return 0}
- function store(c)
- {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1])
- {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0);
- blit(buffer[1],0,newbuffer,0,bufpos[1]);
- buffer[1] = newbuffer}
- caml_bytes_set(buffer[1],bufpos[1],c);
- bufpos[1]++;
- return 0}
- function get_string(param)
- {var s=sub_string(buffer[1],0,bufpos[1]);
- buffer[1] = initial_buffer;
- return s}
- function make_lexer(keywords)
- {var kwd_table=caml_call2(Stdlib_Hashtbl[1],0,17);
- iter$2
- (function(s){return caml_call3(Stdlib_Hashtbl[5],kwd_table,s,[0,s])},
- keywords);
- function ident_or_keyword(id)
- {try
- {var _gM_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _gM_}
- catch(_gN_)
- {_gN_ = caml_wrap_exception(_gN_);
- if(_gN_ === Not_found)return [1,id];
- throw _gN_}}
- function keyword_or_error(c)
- {var s=make$1(1,c);
- try
- {var _gK_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _gK_}
- catch(_gL_)
- {_gL_ = caml_wrap_exception(_gL_);
- if(_gL_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)];
- throw _gL_}}
- function comment(strm)
- {a:
- for(;;)
- {var match=peek$0(strm);
- if(match)
- {var switcher=match[1] - 40 | 0;
- if(! (2 < switcher >>> 0))
- switch(switcher)
- {case 0:
- junk(strm);
- var match$0=peek$0(strm);
- if(match$0)
- {if(42 === match$0[1]){junk(strm);comment(strm);continue}
- junk(strm);
- continue}
- throw Failure$0;
- case 1:break;
- default:
- junk(strm);
- for(;;)
- {var match$1=peek$0(strm);
- if(match$1)
- {var _gJ_=match$1[1];
- if(41 === _gJ_){junk(strm);return 0}
- if(42 === _gJ_){junk(strm);continue}
- junk(strm);
- continue a}
- throw Failure$0}}
- junk(strm);
- continue}
- throw Failure$0}}
- function escape(strm)
- {var match=peek$0(strm);
- if(match)
- {var _gG_=match[1];
- if(58 <= _gG_)
- {var switcher=_gG_ - 110 | 0;
- if(! (6 < switcher >>> 0))
- switch(switcher)
- {case 0:junk(strm);return 10;
- case 4:junk(strm);return 13;
- case 6:junk(strm);return 9
- }}
- else
- if(48 <= _gG_)
- {junk(strm);
- var match$0=peek$0(strm);
- if(match$0)
- {var _gH_=match$0[1];
- if(! (9 < _gH_ - 48 >>> 0))
- {junk(strm);
- var match$1=peek$0(strm);
- if(match$1)
- {var _gI_=match$1[1];
- if(! (9 < _gI_ - 48 >>> 0))
- {junk(strm);
- return chr
- ((((_gG_ - 48 | 0) * 100 | 0)
- +
- ((_gH_ - 48 | 0) * 10 | 0)
- |
- 0)
- +
- (_gI_ - 48 | 0)
- |
- 0)}}
- throw [0,Error,cst$99]}}
- throw [0,Error,cst$98]}
- junk(strm);
- return _gG_}
- throw Failure$0}
- function end_exponent_part(strm)
- {for(;;)
- {var match=peek$0(strm);
- if(match)
- {var _gF_=match[1];
- if(! (9 < _gF_ - 48 >>> 0)){junk(strm);store(_gF_);continue}}
- return [0,[3,caml_float_of_string(get_string(0))]]}}
- function exponent_part(strm)
- {var match=peek$0(strm);
- if(match)
- {var _gE_=match[1],switch$0=0;
- if(43 !== _gE_ && 45 !== _gE_)switch$0 = 1;
- if(! switch$0)
- {junk(strm);store(_gE_);return end_exponent_part(strm)}}
- return end_exponent_part(strm)}
- function number(s)
- {for(;;)
- {var match=peek$0(s);
- if(match)
- {var _gB_=match[1];
- if(58 <= _gB_)
- {var switch$0=0;
- if(69 === _gB_ || 101 === _gB_)switch$0 = 1;
- if(switch$0){junk(s);store(69);return exponent_part(s)}}
- else
- {if(46 === _gB_)
- {junk(s);
- store(46);
- for(;;)
- {var match$0=peek$0(s);
- if(match$0)
- {var _gC_=match$0[1],_gD_=_gC_ - 69 | 0;
- if(32 < _gD_ >>> 0)
- {if(! (9 < _gD_ + 21 >>> 0)){junk(s);store(_gC_);continue}}
- else
- if(30 < _gD_ - 1 >>> 0)
- {junk(s);store(69);return exponent_part(s)}}
- return [0,[3,caml_float_of_string(get_string(0))]]}}
- if(48 <= _gB_){junk(s);store(_gB_);continue}}}
- return [0,[2,caml_int_of_string(get_string(0))]]}}
- function ident2(strm)
- {for(;;)
- {var match=peek$0(strm);
- if(match)
- {var _gz_=match[1],switch$0=0;
- if(94 <= _gz_)
- {var _gA_=_gz_ - 95 | 0;
- if(30 < _gA_ >>> 0)
- {if(! (32 <= _gA_))switch$0 = 1}
- else
- if(29 === _gA_)switch$0 = 1}
- else
- if(65 <= _gz_)
- {if(92 === _gz_)switch$0 = 1}
- else
- if(33 <= _gz_)
- switch(_gz_ - 33 | 0)
- {case 0:
- case 2:
- case 3:
- case 4:
- case 5:
- case 9:
- case 10:
- case 12:
- case 14:
- case 25:
- case 27:
- case 28:
- case 29:
- case 30:
- case 31:switch$0 = 1;break
- }
- if(switch$0){junk(strm);store(_gz_);continue}}
- return [0,ident_or_keyword(get_string(0))]}}
- function neg_number(s)
- {var match=peek$0(s);
- if(match)
- {var _gy_=match[1];
- if(! (9 < _gy_ - 48 >>> 0))
- {junk(s);reset_buffer(0);store(45);store(_gy_);return number(s)}}
- reset_buffer(0);
- store(45);
- return ident2(s)}
- function ident(strm)
- {for(;;)
- {var match=peek$0(strm);
- if(match)
- {var _gw_=match[1],switch$0=0;
- if(91 <= _gw_)
- {var _gx_=_gw_ - 95 | 0;
- if(27 < _gx_ >>> 0)
- {if(97 <= _gx_)switch$0 = 1}
- else
- if(1 !== _gx_)switch$0 = 1}
- else
- if(48 <= _gw_)
- {if(6 < _gw_ - 58 >>> 0)switch$0 = 1}
- else
- if(39 === _gw_)switch$0 = 1;
- if(switch$0){junk(strm);store(_gw_);continue}}
- return [0,ident_or_keyword(get_string(0))]}}
- function next_token$0(counter,strm)
- {for(;;)
- {var match=peek$0(strm);
- if(match)
- {var _gm_=match[1],switch$0=0;
- if(124 <= _gm_)
- {if(127 <= _gm_)
- {if(192 <= _gm_)switch$0 = 1}
- else
- if(125 !== _gm_)switch$0 = 2}
- else
- {var _gn_=_gm_ - 65 | 0;
- if(57 < _gn_ >>> 0)
- {if(! (58 <= _gn_))
- switch(_gn_ + 65 | 0)
- {case 34:
- junk(strm);
- reset_buffer(0);
- for(;;)
- {var match$1=peek$0(strm);
- if(match$1)
- {var _gp_=match$1[1];
- if(34 === _gp_){junk(strm);return [0,[4,get_string(0)]]}
- if(92 === _gp_)
- {junk(strm);
- try
- {var c$0=escape(strm)}
- catch(_gv_)
- {_gv_ = caml_wrap_exception(_gv_);
- if(_gv_ === Failure$0)throw [0,Error,cst$96];
- throw _gv_;
- var _gs_=_gv_}
- store(c$0);
- continue}
- junk(strm);
- store(_gp_);
- continue}
- throw Failure$0}
- case 39:
- junk(strm);
- try
- {var match$2=peek$0(strm);
- if(! match$2)throw Failure$0;
- var _gq_=match$2[1];
- if(92 === _gq_)
- {junk(strm);
- try
- {var _gr_=escape(strm)}
- catch(_gu_)
- {_gu_ = caml_wrap_exception(_gu_);
- if(_gu_ === Failure$0)throw [0,Error,cst$97];
- throw _gu_}
- var c=_gr_}
- else
- {junk(strm);var c=_gq_}}
- catch(_gt_)
- {_gt_ = caml_wrap_exception(_gt_);
- if(_gt_ === Failure$0)throw [0,Error,cst$94];
- throw _gt_}
- var match$0=peek$0(strm);
- if(match$0 && 39 === match$0[1])
- {junk(strm);return [0,[5,c]]}
- throw [0,Error,cst$95];
- case 40:
- junk(strm);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return maybe_comment(counter$0,strm)}
- return caml_trampoline_return(maybe_comment,[0,strm]);
- case 45:junk(strm);return neg_number(strm);
- case 9:
- case 10:
- case 12:
- case 13:
- case 26:
- case 32:junk(strm);continue;
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- junk(strm);reset_buffer(0);store(_gm_);return number(strm);
- case 33:
- case 35:
- case 36:
- case 37:
- case 38:
- case 42:
- case 43:
- case 47:
- case 58:
- case 60:
- case 61:
- case 62:
- case 63:
- case 64:switch$0 = 2;break
- }}
- else
- {var _go_=_gn_ - 26 | 0;
- if(5 < _go_ >>> 0)
- switch$0 = 1;
- else
- switch(_go_)
- {case 4:switch$0 = 1;break;case 1:case 3:switch$0 = 2;break}}}
- switch(switch$0)
- {case 0:junk(strm);return [0,keyword_or_error(_gm_)];
- case 1:
- junk(strm);reset_buffer(0);store(_gm_);return ident(strm);
- default:
- junk(strm);reset_buffer(0);store(_gm_);return ident2(strm)}}
- return 0}}
- function maybe_comment(counter,strm)
- {var match=peek$0(strm);
- if(match && 42 === match[1])
- {junk(strm);
- comment(strm);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)}
- return caml_trampoline_return(next_token$0,[0,strm])}
- return [0,keyword_or_error(40)]}
- function next_token(strm){return caml_trampoline(next_token$0(0,strm))}
- return function(input)
- {return from(function(count){return next_token(input)})}}
- var Stdlib_Genlex=[0,make_lexer];
- caml_register_global(808,Stdlib_Genlex,"Stdlib__Genlex");
- function MakeSeeded$0(H)
- {var prng=[246,function(_gl_){return caml_call1(_cb_[2],0)}];
- function create(opt,initial_size)
- {if(opt)
- var sth=opt[1],random=sth;
- else
- var random=caml_call1(Stdlib_Hashtbl[17],0);
- var x=16;
- for(;;)
- {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0)))
- {var x$0=x * 2 | 0,x=x$0;continue}
- if(random)
- var
- _gj_=caml_obj_tag(prng),
- _gk_=250 === _gj_?prng[1]:246 === _gj_?force_lazy_block(prng):prng,
- seed=caml_call1(_cb_[4],_gk_);
- else
- var seed=0;
- return [0,0,caml_make_vect(x,0),seed,x]}}
- function clear(h)
- {h[1] = 0;
- var len=h[2].length - 1,_gh_=len - 1 | 0,_gg_=0;
- if(! (_gh_ < 0))
- {var i=_gg_;
- for(;;)
- {caml_check_bound(h[2],i)[1 + i] = 0;
- var _gi_=i + 1 | 0;
- if(_gh_ !== i){var i=_gi_;continue}
- break}}
- return 0}
- function reset(h)
- {var len=h[2].length - 1;
- return len === h[4]
- ?clear(h)
- :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)}
- function copy(init)
- {var _gd_=init[4],_ge_=init[3],_gf_=copy$1(init[2]);
- return [0,init[1],_gf_,_ge_,_gd_]}
- function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)}
- function clean(h)
- {function do_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var hkey=param$0[1],rest=param$0[3],c=param$0[2];
- if(caml_call1(H[7],c))
- {var rest$0=param$0[3],c$0=param$0[2];
- return [0,hkey,c$0,do_bucket(rest$0)]}
- h[1] = h[1] - 1 | 0;
- var param$0=rest;
- continue}
- return 0}}
- var d=h[2],_ga_=d.length - 1 - 1 | 0,_f$_=0;
- if(! (_ga_ < 0))
- {var i=_f$_;
- for(;;)
- {var _gb_=do_bucket(caml_check_bound(d,i)[1 + i]);
- caml_check_bound(d,i)[1 + i] = _gb_;
- var _gc_=i + 1 | 0;
- if(_ga_ !== i){var i=_gc_;continue}
- break}}
- return 0}
- function resize(h)
- {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0;
- clean(h);
- var
- _f4_=nsize < max_array_length?1:0,
- _f5_=_f4_?(osize >>> 1 | 0) <= h[1]?1:0:_f4_;
- if(_f5_)
- {var ndata=caml_make_vect(nsize,0);
- h[2] = ndata;
- var
- insert_bucket=
- function(param)
- {if(param)
- {var rest=param[3],data=param[2],hkey=param[1];
- insert_bucket(rest);
- var
- nidx=key_index(h,hkey),
- _f__=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]];
- caml_check_bound(ndata,nidx)[1 + nidx] = _f__;
- return 0}
- return 0},
- _f7_=osize - 1 | 0,
- _f6_=0;
- if(! (_f7_ < 0))
- {var i=_f6_;
- for(;;)
- {insert_bucket(caml_check_bound(odata,i)[1 + i]);
- var _f9_=i + 1 | 0;
- if(_f7_ !== i){var i=_f9_;continue}
- break}}
- var _f8_=0}
- else
- var _f8_=_f5_;
- return _f8_}
- function add(h,key,info)
- {var
- hkey=caml_call2(H[2],h[3],key),
- i=key_index(h,hkey),
- container=caml_call2(H[1],key,info),
- bucket=[0,hkey,container,caml_check_bound(h[2],i)[1 + i]];
- caml_check_bound(h[2],i)[1 + i] = bucket;
- h[1] = h[1] + 1 | 0;
- var _f3_=h[2].length - 1 << 1 < h[1]?1:0;
- return _f3_?resize(h):_f3_}
- function remove(h,key)
- {var hkey=caml_call2(H[2],h[3],key);
- function remove_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var hk=param$0[1],next=param$0[3],c=param$0[2];
- if(hkey === hk)
- {var match=caml_call2(H[3],c,key);
- switch(match)
- {case 0:h[1] = h[1] - 1 | 0;return next;
- case 1:return [0,hk,c,remove_bucket(next)];
- default:h[1] = h[1] - 1 | 0;var param$0=next;continue}}
- var next$0=param$0[3],c$0=param$0[2];
- return [0,hk,c$0,remove_bucket(next$0)]}
- return 0}}
- var
- i=key_index(h,hkey),
- _f2_=remove_bucket(caml_check_bound(h[2],i)[1 + i]);
- caml_check_bound(h[2],i)[1 + i] = _f2_;
- return 0}
- function find(h,key)
- {var
- hkey=caml_call2(H[2],h[3],key),
- _f1_=key_index(h,hkey),
- param$1=caml_check_bound(h[2],_f1_)[1 + _f1_],
- param=param$1;
- for(;;)
- {if(param)
- {var hk=param[1],rest=param[3],c=param[2];
- if(hkey === hk)
- {var match=caml_call2(H[3],c,key);
- switch(match)
- {case 0:
- var match$0=caml_call1(H[4],c);
- if(match$0){var d=match$0[1];return d}
- var param=rest;
- continue;
- case 1:var param=rest;continue;
- default:var param=rest;continue}}
- var param$0=param[3],param=param$0;
- continue}
- throw Not_found}}
- function find_opt(h,key)
- {var
- hkey=caml_call2(H[2],h[3],key),
- _f0_=key_index(h,hkey),
- param$1=caml_check_bound(h[2],_f0_)[1 + _f0_],
- param=param$1;
- for(;;)
- {if(param)
- {var hk=param[1],rest=param[3],c=param[2];
- if(hkey === hk)
- {var match=caml_call2(H[3],c,key);
- switch(match)
- {case 0:
- var d=caml_call1(H[4],c);
- if(d)return d;
- var param=rest;
- continue;
- case 1:var param=rest;continue;
- default:var param=rest;continue}}
- var param$0=param[3],param=param$0;
- continue}
- return 0}}
- function find_all(h,key)
- {var hkey=caml_call2(H[2],h[3],key);
- function find_in_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var hk=param$0[1],rest=param$0[3],c=param$0[2];
- if(hkey === hk)
- {var match=caml_call2(H[3],c,key);
- switch(match)
- {case 0:
- var match$0=caml_call1(H[4],c);
- if(match$0)
- {var d=match$0[1];return [0,d,find_in_bucket(rest)]}
- var param$0=rest;
- continue;
- case 1:var param$0=rest;continue;
- default:var param$0=rest;continue}}
- var param$1=param$0[3],param$0=param$1;
- continue}
- return 0}}
- var _fZ_=key_index(h,hkey);
- return find_in_bucket(caml_check_bound(h[2],_fZ_)[1 + _fZ_])}
- function replace(h,key,info)
- {var hkey=caml_call2(H[2],h[3],key);
- function replace_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var hk=param$0[1],next=param$0[3],c=param$0[2];
- if(hkey === hk)
- {var match=caml_call2(H[3],c,key);
- if(match){var param$0=next;continue}
- return caml_call3(H[6],c,key,info)}
- var param$1=param$0[3],param$0=param$1;
- continue}
- throw Not_found}}
- var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i];
- try
- {var _fX_=replace_bucket(l);return _fX_}
- catch(_fY_)
- {_fY_ = caml_wrap_exception(_fY_);
- if(_fY_ === Not_found)
- {var container=caml_call2(H[1],key,info);
- caml_check_bound(h[2],i)[1 + i] = [0,hkey,container,l];
- h[1] = h[1] + 1 | 0;
- var _fW_=h[2].length - 1 << 1 < h[1]?1:0;
- return _fW_?resize(h):_fW_}
- throw _fY_}}
- function mem(h,key)
- {var
- hkey=caml_call2(H[2],h[3],key),
- _fV_=key_index(h,hkey),
- param$1=caml_check_bound(h[2],_fV_)[1 + _fV_],
- param=param$1;
- for(;;)
- {if(param)
- {var hk=param[1],rest=param[3],c=param[2];
- if(hk === hkey)
- {var match=caml_call2(H[3],c,key);
- if(match){var param=rest;continue}
- return 1}
- var param$0=param[3],param=param$0;
- continue}
- return 0}}
- function iter$0(f,h)
- {var d$0=h[2],_fT_=d$0.length - 1 - 1 | 0,_fS_=0;
- if(! (_fT_ < 0))
- {var i=_fS_;
- a:
- for(;;)
- {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0;
- for(;;)
- {if(param)
- {var
- rest=param[3],
- c=param[2],
- match=caml_call1(H[5],c),
- match$0=caml_call1(H[4],c),
- switch$0=0;
- if(match && match$0)
- {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1}
- var param=rest;
- continue}
- var _fU_=i + 1 | 0;
- if(_fT_ !== i){var i=_fU_;continue a}
- break}
- break}}
- return 0}
- function fold(f,h,init)
- {var d$0=h[2],accu$1=[0,init],_fP_=d$0.length - 1 - 1 | 0,_fO_=0;
- if(! (_fP_ < 0))
- {var i=_fO_;
- a:
- for(;;)
- {var
- _fQ_=accu$1[1],
- b$0=caml_check_bound(d$0,i)[1 + i],
- b=b$0,
- accu=_fQ_;
- for(;;)
- {if(b)
- {var
- rest=b[3],
- c=b[2],
- match=caml_call1(H[5],c),
- match$0=caml_call1(H[4],c),
- switch$0=0;
- if(match && match$0)
- {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu);
- switch$0 = 1}
- if(! switch$0)var accu$0=accu;
- var b=rest,accu=accu$0;
- continue}
- accu$1[1] = accu;
- var _fR_=i + 1 | 0;
- if(_fP_ !== i){var i=_fR_;continue a}
- break}
- break}}
- return accu$1[1]}
- function filter_map_inplace(f,h)
- {function do_bucket(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var
- rest=param$0[3],
- c=param$0[2],
- hk=param$0[1],
- match=caml_call1(H[5],c),
- match$0=caml_call1(H[4],c);
- if(match && match$0)
- {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d);
- if(match$1)
- {var new_d=match$1[1];
- caml_call3(H[6],c,k,new_d);
- return [0,hk,c,do_bucket(rest)]}
- var param$0=rest;
- continue}
- var param$0=rest;
- continue}
- return 0}}
- var d=h[2],_fL_=d.length - 1 - 1 | 0,_fK_=0;
- if(! (_fL_ < 0))
- {var i=_fK_;
- for(;;)
- {var _fM_=do_bucket(caml_check_bound(d,i)[1 + i]);
- caml_check_bound(d,i)[1 + i] = _fM_;
- var _fN_=i + 1 | 0;
- if(_fL_ !== i){var i=_fN_;continue}
- break}}
- return 0}
- function length(h){return h[1]}
- function bucket_length(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var
- param$1=param$0[3],
- accu$1=accu$0 + 1 | 0,
- accu$0=accu$1,
- param$0=param$1;
- continue}
- return accu$0}}
- function stats(h)
- {var
- _fG_=h[2],
- _fH_=0,
- mbl=
- fold_left$3
- (function(m,b){return max$1(m,bucket_length(0,b))},_fH_,_fG_),
- histo=caml_make_vect(mbl + 1 | 0,0),
- _fI_=h[2];
- iter$5
- (function(b)
- {var
- l=bucket_length(0,b),
- _fJ_=caml_check_bound(histo,l)[1 + l] + 1 | 0;
- caml_check_bound(histo,l)[1 + l] = _fJ_;
- return 0},
- _fI_);
- return [0,h[1],h[2].length - 1,mbl,histo]}
- function bucket_length_alive(accu,param)
- {var accu$0=accu,param$0=param;
- for(;;)
- {if(param$0)
- {var rest=param$0[3],c=param$0[2];
- if(caml_call1(H[7],c))
- {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue}
- var param$1=param$0[3],param$0=param$1;
- continue}
- return accu$0}}
- function stats_alive(h)
- {var
- size=[0,0],
- _fC_=h[2],
- _fD_=0,
- mbl=
- fold_left$3
- (function(m,b){return max$1(m,bucket_length_alive(0,b))},_fD_,_fC_),
- histo=caml_make_vect(mbl + 1 | 0,0),
- _fE_=h[2];
- iter$5
- (function(b)
- {var l=bucket_length_alive(0,b);
- size[1] = size[1] + l | 0;
- var _fF_=caml_check_bound(histo,l)[1 + l] + 1 | 0;
- caml_check_bound(histo,l)[1 + l] = _fF_;
- return 0},
- _fE_);
- return [0,size[1],h[2].length - 1,mbl,histo]}
- function to_seq(tbl)
- {var tbl_data=tbl[2];
- function aux(i,buck,param)
- {var i$0=i,buck$0=buck;
- for(;;)
- {if(buck$0)
- {var
- next=buck$0[3],
- c=buck$0[2],
- match=caml_call1(H[5],c),
- match$0=caml_call1(H[4],c);
- if(match && match$0)
- {var data=match$0[1],key=match[1];
- return [0,
- [0,key,data],
- function(_fB_){return aux(i$0,next,_fB_)}]}
- var buck$0=next;
- continue}
- if(i$0 === tbl_data.length - 1)return 0;
- var
- buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0],
- i$1=i$0 + 1 | 0,
- i$0=i$1,
- buck$0=buck$1;
- continue}}
- var _fy_=0,_fz_=0;
- return function(_fA_){return aux(_fz_,_fy_,_fA_)}}
- function to_seq_keys(m)
- {var _fu_=to_seq(m);
- function _fv_(_fx_){return _fx_[1]}
- return function(_fw_){return map(_fv_,_fu_,_fw_)}}
- function to_seq_values(m)
- {var _fq_=to_seq(m);
- function _fr_(_ft_){return _ft_[2]}
- return function(_fs_){return map(_fr_,_fq_,_fs_)}}
- function add_seq(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return add(tbl,k,v)},
- i)}
- function replace_seq(tbl,i)
- {return iter
- (function(param)
- {var v=param[2],k=param[1];return replace(tbl,k,v)},
- i)}
- function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl}
- return [0,
- create,
- clear,
- reset,
- copy,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter$0,
- filter_map_inplace,
- fold,
- length,
- stats,
- to_seq,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq,
- clean,
- stats_alive]}
- function create$5(param){return caml_call1(_t_[1],1)}
- function get_key$0(t){return caml_call2(_t_[3],t,0)}
- function get_key_copy$0(t){return caml_call2(_t_[4],t,0)}
- function set_key$0(t,k){return caml_call3(_t_[5],t,0,k)}
- function unset_key$0(t){return caml_call2(_t_[6],t,0)}
- function check_key$0(t){return caml_call2(_t_[7],t,0)}
- function blit_key$0(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,1)}
- function get_data$1(t){return caml_call1(_t_[9],t)}
- function get_data_copy(t){return caml_call1(_t_[10],t)}
- function set_data(t,d){return caml_call2(_t_[11],t,d)}
- function unset_data(t){return caml_call1(_t_[12],t)}
- function check_data(t){return caml_call1(_t_[13],t)}
- function blit_data(t1,t2){return caml_call2(_t_[14],t1,t2)}
- function MakeSeeded$1(H)
- {function create(k,d)
- {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c}
- var hash=H[2];
- function equal(c,k)
- {var match=get_key$0(c);
- if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1}
- return 2}
- function set_key_data(c,k,d)
- {unset_data(c);set_key$0(c,k);return set_data(c,d)}
- return MakeSeeded$0
- ([0,
- create,
- hash,
- equal,
- get_data$1,
- get_key$0,
- set_key_data,
- check_key$0])}
- function Make$2(H)
- {var equal=H[1];
- function hash(seed,x){return caml_call1(H[2],x)}
- var
- include=MakeSeeded$1([0,equal,hash]),
- clear=include[2],
- reset=include[3],
- copy=include[4],
- add=include[5],
- remove=include[6],
- find=include[7],
- find_opt=include[8],
- find_all=include[9],
- replace=include[10],
- mem=include[11],
- iter=include[12],
- filter_map_inplace=include[13],
- fold=include[14],
- length=include[15],
- stats=include[16],
- to_seq=include[17],
- to_seq_keys=include[18],
- to_seq_values=include[19],
- add_seq=include[20],
- replace_seq=include[21],
- clean=include[23],
- stats_alive=include[24],
- _fp_=include[1];
- function create(sz){return caml_call2(_fp_,_cL_,sz)}
- function of_seq(i)
- {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
- return [0,
- create,
- clear,
- reset,
- copy,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter,
- filter_map_inplace,
- fold,
- length,
- stats,
- to_seq,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq,
- clean,
- stats_alive]}
- function create$6(param){return caml_call1(_t_[1],2)}
- function get_key1(t){return caml_call2(_t_[3],t,0)}
- function get_key1_copy(t){return caml_call2(_t_[4],t,0)}
- function set_key1(t,k){return caml_call3(_t_[5],t,0,k)}
- function unset_key1(t){return caml_call2(_t_[6],t,0)}
- function check_key1(t){return caml_call2(_t_[7],t,0)}
- function get_key2(t){return caml_call2(_t_[3],t,1)}
- function get_key2_copy(t){return caml_call2(_t_[4],t,1)}
- function set_key2(t,k){return caml_call3(_t_[5],t,1,k)}
- function unset_key2(t){return caml_call2(_t_[6],t,1)}
- function check_key2(t){return caml_call2(_t_[7],t,1)}
- function blit_key1(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,1)}
- function blit_key2(t1,t2){return caml_call5(_t_[8],t1,1,t2,1,1)}
- function blit_key12(t1,t2){return caml_call5(_t_[8],t1,0,t2,0,2)}
- function get_data$2(t){return caml_call1(_t_[9],t)}
- function get_data_copy$0(t){return caml_call1(_t_[10],t)}
- function set_data$0(t,d){return caml_call2(_t_[11],t,d)}
- function unset_data$0(t){return caml_call1(_t_[12],t)}
- function check_data$0(t){return caml_call1(_t_[13],t)}
- function blit_data$0(t1,t2){return caml_call2(_t_[14],t1,t2)}
- function MakeSeeded$2(H1,H2)
- {function create(param,d)
- {var k2=param[2],k1=param[1],c=create$6(0);
- set_data$0(c,d);
- set_key1(c,k1);
- set_key2(c,k2);
- return c}
- function hash(seed,param)
- {var
- k2=param[2],
- k1=param[1],
- _fo_=caml_call2(H2[2],seed,k2) * 65599 | 0;
- return caml_call2(H1[2],seed,k1) + _fo_ | 0}
- function equal(c,param)
- {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c);
- if(match && match$0)
- {var k2$0=match$0[1],k1$0=match[1];
- if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0;
- return 1}
- return 2}
- function get_key(c)
- {var match=get_key1(c),match$0=get_key2(c);
- if(match && match$0)
- {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]}
- return 0}
- function set_key_data(c,param,d)
- {var k2=param[2],k1=param[1];
- unset_data$0(c);
- set_key1(c,k1);
- set_key2(c,k2);
- return set_data$0(c,d)}
- function check_key(c)
- {var _fn_=check_key1(c);return _fn_?check_key2(c):_fn_}
- return MakeSeeded$0
- ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])}
- function Make$3(H1,H2)
- {var equal=H2[1];
- function hash(seed,x){return caml_call1(H2[2],x)}
- var equal$0=H1[1],_fl_=[0,equal,hash];
- function hash$0(seed,x){return caml_call1(H1[2],x)}
- var
- include=MakeSeeded$2([0,equal$0,hash$0],_fl_),
- clear=include[2],
- reset=include[3],
- copy=include[4],
- add=include[5],
- remove=include[6],
- find=include[7],
- find_opt=include[8],
- find_all=include[9],
- replace=include[10],
- mem=include[11],
- iter=include[12],
- filter_map_inplace=include[13],
- fold=include[14],
- length=include[15],
- stats=include[16],
- to_seq=include[17],
- to_seq_keys=include[18],
- to_seq_values=include[19],
- add_seq=include[20],
- replace_seq=include[21],
- clean=include[23],
- stats_alive=include[24],
- _fm_=include[1];
- function create(sz){return caml_call2(_fm_,_cM_,sz)}
- function of_seq(i)
- {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
- return [0,
- create,
- clear,
- reset,
- copy,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter,
- filter_map_inplace,
- fold,
- length,
- stats,
- to_seq,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq,
- clean,
- stats_alive]}
- function create$7(n){return caml_call1(_t_[1],n)}
- function length$6(k){return caml_call1(_t_[2],k)}
- function get_key$1(t,n){return caml_call2(_t_[3],t,n)}
- function get_key_copy$1(t,n){return caml_call2(_t_[4],t,n)}
- function set_key$1(t,n,k){return caml_call3(_t_[5],t,n,k)}
- function unset_key$1(t,n){return caml_call2(_t_[6],t,n)}
- function check_key$1(t,n){return caml_call2(_t_[7],t,n)}
- function blit_key$1(t1,o1,t2,o2,l)
- {return caml_call5(_t_[8],t1,o1,t2,o2,l)}
- function get_data$3(t){return caml_call1(_t_[9],t)}
- function get_data_copy$1(t){return caml_call1(_t_[10],t)}
- function set_data$1(t,d){return caml_call2(_t_[11],t,d)}
- function unset_data$1(t){return caml_call1(_t_[12],t)}
- function check_data$1(t){return caml_call1(_t_[13],t)}
- function blit_data$1(t1,t2){return caml_call2(_t_[14],t1,t2)}
- function MakeSeeded$3(H)
- {function create(k,d)
- {var c=create$7(k.length - 1);
- set_data$1(c,d);
- var _fj_=k.length - 1 - 1 | 0,_fi_=0;
- if(! (_fj_ < 0))
- {var i=_fi_;
- for(;;)
- {set_key$1(c,i,caml_check_bound(k,i)[1 + i]);
- var _fk_=i + 1 | 0;
- if(_fj_ !== i){var i=_fk_;continue}
- break}}
- return c}
- function hash(seed,k)
- {var h=[0,0],_fe_=k.length - 1 - 1 | 0,_fd_=0;
- if(! (_fe_ < 0))
- {var i=_fd_;
- for(;;)
- {var _ff_=h[1],_fg_=caml_check_bound(k,i)[1 + i];
- h[1] = (caml_call2(H[2],seed,_fg_) * 65599 | 0) + _ff_ | 0;
- var _fh_=i + 1 | 0;
- if(_fe_ !== i){var i=_fh_;continue}
- break}}
- return h[1]}
- function equal(c,k)
- {var len=k.length - 1,len$0=length$6(c);
- if(len !== len$0)return 1;
- var i$1=len - 1 | 0,i=i$1;
- for(;;)
- {if(0 <= i)
- {var match=get_key$1(c,i);
- if(match)
- {var ki=match[1],_fc_=caml_check_bound(k,i)[1 + i];
- if(caml_call2(H[1],_fc_,ki)){var i$0=i - 1 | 0,i=i$0;continue}
- return 1}
- return 2}
- return 0}}
- function get_key(c)
- {var len=length$6(c);
- if(0 === len)return [0,[0]];
- var match=get_key$1(c,0);
- if(match)
- {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1;
- for(;;)
- {if(1 <= i)
- {var match$0=get_key$1(c,i);
- if(match$0)
- {var ki=match$0[1];
- caml_check_bound(a,i)[1 + i] = ki;
- var i$0=i - 1 | 0,i=i$0;
- continue}
- return 0}
- return [0,a]}}
- return 0}
- function set_key_data(c,k,d)
- {unset_data$1(c);
- var _fa_=k.length - 1 - 1 | 0,_e$_=0;
- if(! (_fa_ < 0))
- {var i=_e$_;
- for(;;)
- {set_key$1(c,i,caml_check_bound(k,i)[1 + i]);
- var _fb_=i + 1 | 0;
- if(_fa_ !== i){var i=_fb_;continue}
- break}}
- return set_data$1(c,d)}
- function check_key(c)
- {var i$1=length$6(c) - 1 | 0,i=i$1;
- for(;;)
- {var _e8_=i < 0?1:0;
- if(_e8_)
- var _e9_=_e8_;
- else
- {var _e__=check_key$1(c,i);
- if(_e__){var i$0=i - 1 | 0,i=i$0;continue}
- var _e9_=_e__}
- return _e9_}}
- return MakeSeeded$0
- ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])}
- function Make$4(H)
- {var equal=H[1];
- function hash(seed,x){return caml_call1(H[2],x)}
- var
- include=MakeSeeded$3([0,equal,hash]),
- clear=include[2],
- reset=include[3],
- copy=include[4],
- add=include[5],
- remove=include[6],
- find=include[7],
- find_opt=include[8],
- find_all=include[9],
- replace=include[10],
- mem=include[11],
- iter=include[12],
- filter_map_inplace=include[13],
- fold=include[14],
- length=include[15],
- stats=include[16],
- to_seq=include[17],
- to_seq_keys=include[18],
- to_seq_values=include[19],
- add_seq=include[20],
- replace_seq=include[21],
- clean=include[23],
- stats_alive=include[24],
- _e7_=include[1];
- function create(sz){return caml_call2(_e7_,_cN_,sz)}
- function of_seq(i)
- {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
- return [0,
- create,
- clear,
- reset,
- copy,
- add,
- remove,
- find,
- find_opt,
- find_all,
- replace,
- mem,
- iter,
- filter_map_inplace,
- fold,
- length,
- stats,
- to_seq,
- to_seq_keys,
- to_seq_values,
- add_seq,
- replace_seq,
- of_seq,
- clean,
- stats_alive]}
- var
- Stdlib_Ephemeron=
- [0,
- [0,
- create$5,
- get_key$0,
- get_key_copy$0,
- set_key$0,
- unset_key$0,
- check_key$0,
- blit_key$0,
- get_data$1,
- get_data_copy,
- set_data,
- unset_data,
- check_data,
- blit_data,
- Make$2,
- MakeSeeded$1],
- [0,
- create$6,
- get_key1,
- get_key1_copy,
- set_key1,
- unset_key1,
- check_key1,
- get_key2,
- get_key2_copy,
- set_key2,
- unset_key2,
- check_key2,
- blit_key1,
- blit_key2,
- blit_key12,
- get_data$2,
- get_data_copy$0,
- set_data$0,
- unset_data$0,
- check_data$0,
- blit_data$0,
- Make$3,
- MakeSeeded$2],
- [0,
- create$7,
- get_key$1,
- get_key_copy$1,
- set_key$1,
- unset_key$1,
- check_key$1,
- blit_key$1,
- get_data$3,
- get_data_copy$1,
- set_data$1,
- unset_data$1,
- check_data$1,
- blit_data$1,
- Make$4,
- MakeSeeded$3],
- [0,
- function(_e6_)
- {return MakeSeeded$0
- ([0,_e6_[3],_e6_[1],_e6_[2],_e6_[5],_e6_[4],_e6_[6],_e6_[7]])}]];
- caml_register_global(809,Stdlib_Ephemeron,"Stdlib__Ephemeron");
- function generic_basename(is_dir_sep,current_dir_name,name)
- {if(caml_string_equal(name,cst$100))return current_dir_name;
- var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3;
- for(;;)
- {if(0 <= n)
- {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue}
- var p=n + 1 | 0,n$1=n;
- for(;;)
- {if(0 <= n$1)
- {if(caml_call2(is_dir_sep,name,n$1))
- return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0);
- var n$2=n$1 - 1 | 0,n$1=n$2;
- continue}
- return sub$0(name,0,p)}}
- return sub$0(name,0,1)}}
- function generic_dirname(is_dir_sep,current_dir_name,name)
- {if(caml_string_equal(name,cst$101))return current_dir_name;
- var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5;
- for(;;)
- {if(0 <= n)
- {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue}
- var n$1=n;
- for(;;)
- {if(0 <= n$1)
- {if(caml_call2(is_dir_sep,name,n$1))
- {var n$3=n$1;
- for(;;)
- {if(0 <= n$3)
- {if(caml_call2(is_dir_sep,name,n$3))
- {var n$4=n$3 - 1 | 0,n$3=n$4;continue}
- return sub$0(name,0,n$3 + 1 | 0)}
- return sub$0(name,0,1)}}
- var n$2=n$1 - 1 | 0,n$1=n$2;
- continue}
- return current_dir_name}}
- return sub$0(name,0,1)}}
- function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0}
- function is_relative(n)
- {var
- _e4_=caml_ml_string_length(n) < 1?1:0,
- _e5_=_e4_ || (47 !== caml_string_get(n,0)?1:0);
- return _e5_}
- function is_implicit(n)
- {var _eZ_=is_relative(n);
- if(_eZ_)
- {var
- _e0_=caml_ml_string_length(n) < 2?1:0,
- _e1_=_e0_ || caml_string_notequal(sub$0(n,0,2),cst$103);
- if(_e1_)
- var
- _e2_=caml_ml_string_length(n) < 3?1:0,
- _e3_=_e2_ || caml_string_notequal(sub$0(n,0,3),cst$102);
- else
- var _e3_=_e1_}
- else
- var _e3_=_eZ_;
- return _e3_}
- function check_suffix(name,suff){return ends_with$0(suff,name)}
- function chop_suffix_opt(suffix,filename)
- {var
- len_s=caml_ml_string_length(suffix),
- len_f=caml_ml_string_length(filename);
- if(len_s <= len_f)
- {var r=sub$0(filename,len_f - len_s | 0,len_s);
- return caml_string_equal(r,suffix)
- ?[0,sub$0(filename,0,len_f - len_s | 0)]
- :0}
- return 0}
- try
- {var _cV_=caml_sys_getenv(cst_TMPDIR),_cO_=_cV_}
- catch(_eY_)
- {_eY_ = caml_wrap_exception(_eY_);
- if(_eY_ !== Not_found)throw _eY_;
- var _cO_=cst_tmp}
- function quote(s)
- {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0);
- add_char(b,39);
- var _eW_=l - 1 | 0,_eV_=0;
- if(! (_eW_ < 0))
- {var i=_eV_;
- for(;;)
- {if(39 === caml_string_get(s,i))
- add_string(b,quotequote);
- else
- add_char(b,caml_string_get(s,i));
- var _eX_=i + 1 | 0;
- if(_eW_ !== i){var i=_eX_;continue}
- break}}
- add_char(b,39);
- return contents(b)}
- function quote_command(cmd,stdin,stdout,stderr,args)
- {if(stderr)
- var
- f=stderr[1],
- _eP_=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)),
- _eQ_=_eP_;
- else
- var _eQ_=cst$109;
- if(stdout)
- var f$0=stdout[1],_eR_=cat(cst$104,quote(f$0));
- else
- var _eR_=cst$108;
- var _eS_=cat(_eR_,_eQ_);
- if(stdin)
- var f$1=stdin[1],_eT_=cat(cst$105,quote(f$1));
- else
- var _eT_=cst$107;
- var _eU_=cat(_eT_,_eS_);
- return cat(concat$1(cst$106,map$3(quote,[0,cmd,args])),_eU_)}
- function basename(_eO_)
- {return generic_basename(is_dir_sep,current_dir_name,_eO_)}
- function dirname(_eN_)
- {return generic_dirname(is_dir_sep,current_dir_name,_eN_)}
- var
- Unix=
- [0,
- null$0,
- current_dir_name,
- parent_dir_name,
- dir_sep,
- is_dir_sep,
- is_relative,
- is_implicit,
- check_suffix,
- chop_suffix_opt,
- _cO_,
- quote,
- quote_command,
- basename,
- dirname];
- function is_dir_sep$0(s,i)
- {var c=caml_string_get(s,i),_eK_=47 === c?1:0;
- if(_eK_)
- var _eL_=_eK_;
- else
- var _eM_=92 === c?1:0,_eL_=_eM_ || (58 === c?1:0);
- return _eL_}
- function is_relative$0(n)
- {var
- _eE_=caml_ml_string_length(n) < 1?1:0,
- _eF_=_eE_ || (47 !== caml_string_get(n,0)?1:0);
- if(_eF_)
- {var
- _eG_=caml_ml_string_length(n) < 1?1:0,
- _eH_=_eG_ || (92 !== caml_string_get(n,0)?1:0);
- if(_eH_)
- var
- _eI_=caml_ml_string_length(n) < 2?1:0,
- _eJ_=_eI_ || (58 !== caml_string_get(n,1)?1:0);
- else
- var _eJ_=_eH_}
- else
- var _eJ_=_eF_;
- return _eJ_}
- function is_implicit$0(n)
- {var _ev_=is_relative$0(n);
- if(_ev_)
- {var
- _ew_=caml_ml_string_length(n) < 2?1:0,
- _ex_=_ew_ || caml_string_notequal(sub$0(n,0,2),cst$113);
- if(_ex_)
- {var
- _ey_=caml_ml_string_length(n) < 2?1:0,
- _ez_=_ey_ || caml_string_notequal(sub$0(n,0,2),cst$112);
- if(_ez_)
- {var
- _eA_=caml_ml_string_length(n) < 3?1:0,
- _eB_=_eA_ || caml_string_notequal(sub$0(n,0,3),cst$111);
- if(_eB_)
- var
- _eC_=caml_ml_string_length(n) < 3?1:0,
- _eD_=_eC_ || caml_string_notequal(sub$0(n,0,3),cst$110);
- else
- var _eD_=_eB_}
- else
- var _eD_=_ez_}
- else
- var _eD_=_ex_}
- else
- var _eD_=_ev_;
- return _eD_}
- function check_suffix$0(name,suff)
- {var _es_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0;
- if(_es_)
- var
- s=
- sub$0
- (name,
- caml_ml_string_length(name) - caml_ml_string_length(suff) | 0,
- caml_ml_string_length(suff)),
- _et_=lowercase_ascii$1(suff),
- _eu_=caml_string_equal(lowercase_ascii$1(s),_et_);
- else
- var _eu_=_es_;
- return _eu_}
- function chop_suffix_opt$0(suffix,filename)
- {var
- len_s=caml_ml_string_length(suffix),
- len_f=caml_ml_string_length(filename);
- if(len_s <= len_f)
- {var
- r=sub$0(filename,len_f - len_s | 0,len_s),
- _er_=lowercase_ascii$1(suffix);
- return caml_string_equal(lowercase_ascii$1(r),_er_)
- ?[0,sub$0(filename,0,len_f - len_s | 0)]
- :0}
- return 0}
- try
- {var _cU_=caml_sys_getenv(cst_TEMP),temp_dir_name=_cU_}
- catch(_eq_)
- {_eq_ = caml_wrap_exception(_eq_);
- if(_eq_ !== Not_found)throw _eq_;
- var temp_dir_name=cst$114}
- function quote$0(s)
- {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0);
- add_char(b,34);
- function add_bs(n)
- {var _eo_=1;
- if(! (n < 1))
- {var j=_eo_;
- for(;;)
- {add_char(b,92);
- var _ep_=j + 1 | 0;
- if(n !== j){var j=_ep_;continue}
- break}}
- return 0}
- function loop$0(counter,i)
- {var i$0=i;
- for(;;)
- {if(i$0 === l)return add_char(b,34);
- var c=caml_string_get(s,i$0);
- if(34 === c)
- {var _em_=0;
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return loop_bs(counter$1,_em_,i$0)}
- return caml_trampoline_return(loop_bs,[0,_em_,i$0])}
- if(92 === c)
- {var _en_=0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return loop_bs(counter$0,_en_,i$0)}
- return caml_trampoline_return(loop_bs,[0,_en_,i$0])}
- add_char(b,c);
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function loop_bs(counter,n,i)
- {var n$0=n,i$0=i;
- for(;;)
- {if(i$0 === l){add_char(b,34);return add_bs(n$0)}
- var match=caml_string_get(s,i$0);
- if(34 === match)
- {add_bs((2 * n$0 | 0) + 1 | 0);
- add_char(b,34);
- var _el_=i$0 + 1 | 0;
- if(counter < 50)
- {var counter$1=counter + 1 | 0;return loop$0(counter$1,_el_)}
- return caml_trampoline_return(loop$0,[0,_el_])}
- if(92 === match)
- {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue}
- add_bs(n$0);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)}
- return caml_trampoline_return(loop$0,[0,i$0])}}
- function loop(i){return caml_trampoline(loop$0(0,i))}
- loop(0);
- return contents(b)}
- function quote_cmd_filename(f)
- {if(! contains$0(f,34) && ! contains$0(f,37))
- return contains$0(f,32)?cat(cst$116,cat(f,cst$115)):f;
- return failwith(cat(cst_Filename_quote_command_bad,f))}
- function quote_command$0(cmd,stdin,stdout,stderr,args)
- {if(stderr)
- var
- f=stderr[1],
- _ec_=
- caml_equal(stderr,stdout)
- ?cst_2_1$0
- :cat(cst_2$0,quote_cmd_filename(f)),
- _ed_=_ec_;
- else
- var _ed_=cst$125;
- var _ee_=[0,_ed_,_cP_];
- if(stdout)
- var f$0=stdout[1],_ef_=cat(cst$117,quote_cmd_filename(f$0));
- else
- var _ef_=cst$124;
- var _eg_=[0,_ef_,_ee_];
- if(stdin)
- var f$1=stdin[1],_eh_=cat(cst$118,quote_cmd_filename(f$1));
- else
- var _eh_=cst$123;
- var
- s=concat$1(cst$119,map$3(quote$0,args)),
- b=create$2(caml_ml_string_length(s) + 20 | 0),
- _ei_=[0,_eh_,_eg_];
- iter$4
- (function(c)
- {var switch$0=0;
- if(62 <= c)
- {var _ek_=c - 63 | 0;
- if(60 < _ek_ >>> 0)
- {if(! (62 <= _ek_))switch$0 = 1}
- else
- if(31 === _ek_)switch$0 = 1}
- else
- if(42 <= c)
- {if(60 === c)switch$0 = 1}
- else
- if(33 <= c)
- switch(c - 33 | 0)
- {case 2:case 3:case 6:break;default:switch$0 = 1}
- return switch$0?(add_char(b,94),add_char(b,c)):add_char(b,c)},
- s);
- var _ej_=[0,cst$120,[0,contents(b),_ei_]];
- return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_ej_]])}
- function drive_and_path(s)
- {var _d__=2 <= caml_ml_string_length(s)?1:0;
- if(_d__)
- {var param=caml_string_get(s,0),switch$0=0;
- if(91 <= param)
- {if(! (25 < param - 97 >>> 0))switch$0 = 1}
- else
- if(65 <= param)switch$0 = 1;
- var _d$_=switch$0?1:0,_ea_=_d$_?58 === caml_string_get(s,1)?1:0:_d$_}
- else
- var _ea_=_d__;
- if(_ea_)
- {var _eb_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0);
- return [0,sub$0(s,0,2),_eb_]}
- return [0,cst$126,s]}
- function dirname$0(s)
- {var
- match=drive_and_path(s),
- path=match[2],
- drive=match[1],
- dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path);
- return cat(drive,dir)}
- function basename$0(s)
- {var match=drive_and_path(s),path=match[2];
- return generic_basename(is_dir_sep$0,current_dir_name$0,path)}
- var
- Win32=
- [0,
- null$1,
- current_dir_name$0,
- parent_dir_name$0,
- dir_sep$0,
- is_dir_sep$0,
- is_relative$0,
- is_implicit$0,
- check_suffix$0,
- chop_suffix_opt$0,
- temp_dir_name,
- quote$0,
- quote_command$0,
- basename$0,
- dirname$0];
- function basename$1(_d9_)
- {return generic_basename(is_dir_sep$0,current_dir_name$1,_d9_)}
- function dirname$1(_d8_)
- {return generic_dirname(is_dir_sep$0,current_dir_name$1,_d8_)}
- var
- Cygwin=
- [0,
- null$2,
- current_dir_name$1,
- parent_dir_name$1,
- dir_sep$1,
- is_dir_sep$0,
- is_relative$0,
- is_implicit$0,
- check_suffix$0,
- chop_suffix_opt$0,
- _cO_,
- quote,
- quote_command,
- basename$1,
- dirname$1],
- Sysdeps=
- caml_string_notequal(os_type,cst_Cygwin)
- ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32
- :Cygwin,
- null$3=Sysdeps[1],
- current_dir_name$2=Sysdeps[2],
- parent_dir_name$2=Sysdeps[3],
- dir_sep$2=Sysdeps[4],
- is_dir_sep$1=Sysdeps[5],
- is_relative$1=Sysdeps[6],
- is_implicit$1=Sysdeps[7],
- check_suffix$1=Sysdeps[8],
- chop_suffix_opt$1=Sysdeps[9],
- temp_dir_name$0=Sysdeps[10],
- quote$1=Sysdeps[11],
- quote_command$1=Sysdeps[12],
- basename$2=Sysdeps[13],
- dirname$2=Sysdeps[14];
- function concat$4(dirname,filename)
- {var l=caml_ml_string_length(dirname);
- if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0))
- return cat(dirname,cat(dir_sep$2,filename));
- return cat(dirname,filename)}
- function chop_suffix(name,suff)
- {var n=caml_ml_string_length(name) - caml_ml_string_length(suff) | 0;
- return 0 <= n?sub$0(name,0,n):invalid_arg(cst_Filename_chop_suffix)}
- function extension_len(name)
- {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4;
- for(;;)
- {if(0 <= i$1 && ! is_dir_sep$1(name,i$1))
- {if(46 === caml_string_get(name,i$1))
- {var i$2=i$1 - 1 | 0,i=i$2;
- for(;;)
- {if(0 <= i && ! is_dir_sep$1(name,i))
- {if(46 === caml_string_get(name,i))
- {var i$0=i - 1 | 0,i=i$0;continue}
- return caml_ml_string_length(name) - i$1 | 0}
- return 0}}
- var i$3=i$1 - 1 | 0,i$1=i$3;
- continue}
- return 0}}
- function extension(name)
- {var l=extension_len(name);
- return 0 === l?cst$127:sub$0(name,caml_ml_string_length(name) - l | 0,l)}
- function chop_extension(name)
- {var l=extension_len(name);
- return 0 === l
- ?invalid_arg(cst_Filename_chop_extension)
- :sub$0(name,0,caml_ml_string_length(name) - l | 0)}
- function remove_extension(name)
- {var l=extension_len(name);
- return 0 === l?name:sub$0(name,0,caml_ml_string_length(name) - l | 0)}
- var prng$0=[246,function(_d7_){return caml_call1(_cb_[2],0)}];
- function temp_file_name(temp_dir,prefix,suffix)
- {var
- _d5_=caml_obj_tag(prng$0),
- _d6_=
- 250 === _d5_?prng$0[1]:246 === _d5_?force_lazy_block(prng$0):prng$0,
- rnd=caml_call1(_cb_[4],_d6_) & 16777215;
- return concat$4(temp_dir,caml_call3(sprintf(_cQ_),prefix,rnd,suffix))}
- var current_temp_dir_name=[0,temp_dir_name$0];
- function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0}
- function get_temp_dir_name(param){return current_temp_dir_name[1]}
- function temp_file(opt,prefix,suffix)
- {if(opt)
- var sth=opt[1],temp_dir=sth;
- else
- var temp_dir=current_temp_dir_name[1];
- function try_name(counter)
- {var counter$0=counter;
- for(;;)
- {var name=temp_file_name(temp_dir,prefix,suffix);
- try
- {runtime.caml_sys_close(caml_sys_open(name,_cR_,384));return name}
- catch(e)
- {e = caml_wrap_exception(e);
- if(e[1] === Sys_error)
- {if(1000 <= counter$0)throw e;
- var counter$1=counter$0 + 1 | 0,counter$0=counter$1;
- continue}
- throw e}}}
- return try_name(0)}
- function open_temp_file(opt,_d3_,_d2_,prefix,suffix)
- {if(opt)var sth=opt[1],mode=sth;else var mode=_cS_;
- if(_d3_)var sth$0=_d3_[1],perms=sth$0;else var perms=384;
- if(_d2_)
- var sth$1=_d2_[1],temp_dir=sth$1;
- else
- var temp_dir=current_temp_dir_name[1];
- function try_name(counter)
- {var counter$0=counter;
- for(;;)
- {var name=temp_file_name(temp_dir,prefix,suffix);
- try
- {var _d4_=[0,name,open_out_gen([0,1,[0,3,[0,5,mode]]],perms,name)];
- return _d4_}
- catch(e)
- {e = caml_wrap_exception(e);
- if(e[1] === Sys_error)
- {if(1000 <= counter$0)throw e;
- var counter$1=counter$0 + 1 | 0,counter$0=counter$1;
- continue}
- throw e}}}
- return try_name(0)}
- var
- Stdlib_Filename=
- [0,
- current_dir_name$2,
- parent_dir_name$2,
- dir_sep$2,
- concat$4,
- is_relative$1,
- is_implicit$1,
- check_suffix$1,
- chop_suffix,
- chop_suffix_opt$1,
- extension,
- remove_extension,
- chop_extension,
- basename$2,
- dirname$2,
- null$3,
- temp_file,
- open_temp_file,
- get_temp_dir_name,
- set_temp_dir_name,
- temp_dir_name$0,
- quote$1,
- quote_command$1];
- caml_register_global(810,Stdlib_Filename,"Stdlib__Filename");
- function add$1(x,y){return [254,x[1] + y[1],x[2] + y[2]]}
- function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]}
- function neg(x){return [254,- x[1],- x[2]]}
- function conj(x){return [254,x[1],- x[2]]}
- function mul(x,y)
- {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]}
- function div(x,y)
- {if(Math.abs(y[2]) <= Math.abs(y[1]))
- {var r=y[2] / y[1],d=y[1] + r * y[2];
- return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]}
- var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1];
- return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]}
- function inv(x){return div(one$4,x)}
- function norm2(x){return x[1] * x[1] + x[2] * x[2]}
- function norm(x)
- {var r=Math.abs(x[1]),i=Math.abs(x[2]);
- if(r == 0.)return i;
- if(i == 0.)return r;
- if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)}
- var q$0=r / i;
- return i * Math.sqrt(1. + q$0 * q$0)}
- function arg(x){return Math.atan2(x[2],x[1])}
- function polar(n,a){return [254,Math.cos(a) * n,Math.sin(a) * n]}
- function sqrt(x)
- {if(x[1] == 0. && x[2] == 0.)return _cT_;
- var r=Math.abs(x[1]),i=Math.abs(x[2]);
- if(i <= r)
- var
- q=i / r,
- w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q)));
- else
- var
- q$0=r / i,
- w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0)));
- if(0. <= x[1])return [254,w,0.5 * x[2] / w];
- var w$0=0. <= x[2]?w:- w;
- return [254,0.5 * i / w,w$0]}
- function exp(x)
- {var e=Math.exp(x[1]);return [254,e * Math.cos(x[2]),e * Math.sin(x[2])]}
- function log(x)
- {var _d1_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_d1_]}
- function pow(x,y){return exp(mul(y,log(x)))}
- var
- Stdlib_Complex=
- [0,
- zero$4,
- one$4,
- i,
- neg,
- conj,
- add$1,
- sub$4,
- mul,
- inv,
- div,
- sqrt,
- norm2,
- norm,
- arg,
- polar,
- exp,
- log,
- pow];
- caml_register_global(811,Stdlib_Complex,"Stdlib__Complex");
- var
- Stdlib_ArrayLabels=
- [0,
- make_float,
- init$2,
- create_matrix,
- create_matrix,
- append$1,
- concat$2,
- sub$1,
- copy$1,
- fill$0,
- blit$1,
- to_list$1,
- of_list,
- iter$5,
- iteri$2,
- map$6,
- mapi$2,
- fold_left$3,
- fold_left_map$0,
- fold_right$2,
- iter2$0,
- map2$0,
- for_all$2,
- exists$2,
- for_all2$0,
- exists2$0,
- mem$0,
- memq$0,
- find_opt$0,
- find_map$0,
- split$0,
- combine$0,
- sort,
- fast_sort$0,
- fast_sort$0,
- to_seq$4,
- to_seqi$1,
- of_seq$2,
- Floatarray];
- caml_register_global(812,Stdlib_ArrayLabels,"Stdlib__ArrayLabels");
- var
- Stdlib_ListLabels=
- [0,
- length,
- compare_lengths,
- compare_length_with,
- cons$0,
- hd,
- tl,
- nth,
- nth_opt,
- rev,
- init,
- append,
- rev_append,
- flatten,
- flatten,
- equal$5,
- compare$5,
- iter$2,
- iteri,
- map$3,
- mapi,
- rev_map,
- filter_map$0,
- concat_map,
- fold_left_map,
- fold_left$0,
- fold_right,
- iter2,
- map2,
- rev_map2,
- fold_left2,
- fold_right2,
- for_all,
- exists,
- for_all2,
- exists2,
- mem,
- memq,
- find,
- find_opt,
- find_map,
- find_all,
- find_all,
- filteri,
- partition,
- partition_map,
- assoc,
- assoc_opt,
- assq,
- assq_opt,
- mem_assoc,
- mem_assq,
- remove_assoc,
- remove_assq,
- split,
- combine,
- fast_sort,
- fast_sort,
- fast_sort,
- sort_uniq,
- merge,
- to_seq$1,
- of_seq];
- caml_register_global(813,Stdlib_ListLabels,"Stdlib__ListLabels");
- var
- Stdlib_BytesLabels=
- [0,
- make$0,
- init$0,
- empty$0,
- copy,
- to_bytes,
- of_bytes,
- sub,
- sub_string,
- extend,
- fill,
- blit,
- blit$0,
- concat$0,
- cat$0,
- iter$3,
- iteri$0,
- map$4,
- mapi$0,
- fold_left$1,
- fold_right$0,
- for_all$0,
- exists$0,
- trim,
- escaped$0,
- index,
- index_opt,
- rindex,
- rindex_opt,
- index_from,
- index_from_opt,
- rindex_from,
- rindex_from_opt,
- contains,
- contains_from,
- rcontains_from,
- uppercase$0,
- lowercase$0,
- capitalize,
- uncapitalize,
- uppercase_ascii$0,
- lowercase_ascii$0,
- capitalize_ascii,
- uncapitalize_ascii,
- compare$7,
- equal$7,
- starts_with,
- ends_with,
- unsafe_to_string,
- unsafe_of_string,
- split_on_char,
- to_seq$2,
- to_seqi,
- of_seq$0,
- get_uint8,
- get_int8,
- get_uint16_ne,
- get_uint16_be,
- get_uint16_le,
- get_int16_ne,
- get_int16_be,
- get_int16_le,
- get_int32_ne,
- get_int32_be,
- get_int32_le,
- get_int64_ne,
- get_int64_be,
- get_int64_le,
- set_uint8,
- set_int8,
- set_uint16_ne,
- set_int16_be,
- set_int16_le,
- set_int16_ne,
- set_int16_be,
- set_int16_le,
- set_int32_ne,
- set_int32_be,
- set_int32_le,
- set_int64_ne,
- set_int64_be,
- set_int64_le];
- caml_register_global(814,Stdlib_BytesLabels,"Stdlib__BytesLabels");
- var
- Stdlib_StringLabels=
- [0,
- make$1,
- init$1,
- empty$1,
- of_bytes,
- to_bytes,
- concat$1,
- cat,
- equal$8,
- compare$8,
- starts_with$0,
- ends_with$0,
- contains_from$0,
- rcontains_from$0,
- contains$0,
- sub$0,
- split_on_char$0,
- map$5,
- mapi$1,
- fold_left$2,
- fold_right$1,
- for_all$1,
- exists$1,
- trim$0,
- escaped$1,
- uppercase_ascii$1,
- lowercase_ascii$1,
- capitalize_ascii$0,
- uncapitalize_ascii$0,
- iter$4,
- iteri$1,
- index_from$0,
- index_from_opt$0,
- rindex_from$0,
- rindex_from_opt$0,
- index$0,
- index_opt$0,
- rindex$0,
- rindex_opt$0,
- to_seq$3,
- to_seqi$0,
- of_seq$1,
- blit$0,
- copy$0,
- fill,
- uppercase$1,
- lowercase$1,
- capitalize$0,
- uncapitalize$0,
- get_uint8$0,
- get_int8$0,
- get_uint16_ne$0,
- get_uint16_be$0,
- get_uint16_le$0,
- get_int16_ne$0,
- get_int16_be$0,
- get_int16_le$0,
- get_int32_ne$0,
- get_int32_be$0,
- get_int32_le$0,
- get_int64_ne$0,
- get_int64_be$0,
- get_int64_le$0];
- caml_register_global(815,Stdlib_StringLabels,"Stdlib__StringLabels");
- var Stdlib_MoreLabels=[0,Stdlib_Hashtbl,Stdlib_Map,Stdlib_Set];
- caml_register_global(816,Stdlib_MoreLabels,"Stdlib__MoreLabels");
- var Stdlib_StdLabels=[0];
- caml_register_global(817,Stdlib_StdLabels,"Stdlib__StdLabels");
- var
- float32=0,
- float64=1,
- int8_signed=2,
- int8_unsigned=3,
- int16_signed=4,
- int16_unsigned=5,
- int32$1=6,
- int64$1=7,
- int$2=8,
- nativeint$1=9,
- complex32=10,
- complex64=11,
- char$0=12;
- function kind_size_in_bytes(param)
- {switch(param)
- {case 0:return 4;
- case 1:return 8;
- case 2:return 1;
- case 3:return 1;
- case 4:return 2;
- case 5:return 2;
- case 6:return 4;
- case 7:return 8;
- case 8:return 4;
- case 9:return 4;
- case 10:return 8;
- case 11:return 16;
- default:return 1}}
- var c_layout=0,fortran_layout=1;
- function cloop(arr,idx,f,col,max)
- {if(col === idx.length - 1)
- return caml_ba_set_generic(arr,idx,caml_call1(f,idx));
- var _dZ_=caml_check_bound(max,col)[1 + col] - 1 | 0,_dY_=0;
- if(! (_dZ_ < 0))
- {var j=_dY_;
- for(;;)
- {caml_check_bound(idx,col)[1 + col] = j;
- cloop(arr,idx,f,col + 1 | 0,max);
- var _d0_=j + 1 | 0;
- if(_dZ_ !== j){var j=_d0_;continue}
- break}}
- return 0}
- function floop(arr,idx,f,col,max)
- {if(0 <= col)
- {var _dW_=caml_check_bound(max,col)[1 + col],_dV_=1;
- if(! (_dW_ < 1))
- {var j=_dV_;
- for(;;)
- {caml_check_bound(idx,col)[1 + col] = j;
- floop(arr,idx,f,col - 1 | 0,max);
- var _dX_=j + 1 | 0;
- if(_dW_ !== j){var j=_dX_;continue}
- break}}
- return 0}
- return caml_ba_set_generic(arr,idx,caml_call1(f,idx))}
- function init$5(kind,layout,dims,f)
- {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1;
- return 0 === dlen
- ?arr
- :layout
- ?(floop(arr,caml_make_vect(dlen,1),f,dlen - 1 | 0,dims),arr)
- :(cloop(arr,caml_make_vect(dlen,0),f,0,dims),arr)}
- function dims(a)
- {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_dS_=n - 1 | 0,_dR_=0;
- if(! (_dS_ < 0))
- {var i=_dR_;
- for(;;)
- {var _dT_=runtime.caml_ba_dim(a,i);
- caml_check_bound(d,i)[1 + i] = _dT_;
- var _dU_=i + 1 | 0;
- if(_dS_ !== i){var i=_dU_;continue}
- break}}
- return d}
- function size_in_bytes(arr)
- {var _dQ_=fold_left$3(caml_mul,1,dims(arr));
- return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dQ_)}
- function create$8(kind,layout){return caml_ba_create(kind,layout,[0])}
- function get$2(arr){return runtime.caml_ba_get_generic(arr,[0])}
- function set$1(arr)
- {var _dO_=[0];
- return function(_dP_){return caml_ba_set_generic(arr,_dO_,_dP_)}}
- function size_in_bytes$0(arr)
- {return kind_size_in_bytes(caml_ba_kind(arr))}
- function of_value(kind,layout,v)
- {var a=create$8(kind,layout);caml_call1(set$1(a),v);return a}
- function create$9(kind,layout,dim)
- {return caml_ba_create(kind,layout,[0,dim])}
- function size_in_bytes$1(arr)
- {var _dN_=caml_ba_dim_1(arr);
- return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dN_)}
- function slice(a,n)
- {var match=runtime.caml_ba_layout(a);
- return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])}
- function init$6(kind,layout,dim,f)
- {var arr=create$9(kind,layout,dim);
- if(layout)
- {var _dL_=1;
- if(! (dim < 1))
- {var i$0=_dL_;
- for(;;)
- {caml_ba_set_1(arr,i$0,caml_call1(f,i$0));
- var _dM_=i$0 + 1 | 0;
- if(dim !== i$0){var i$0=_dM_;continue}
- break}}
- return arr}
- var _dJ_=dim - 1 | 0,_dI_=0;
- if(! (_dJ_ < 0))
- {var i=_dI_;
- for(;;)
- {caml_ba_set_1(arr,i,caml_call1(f,i));
- var _dK_=i + 1 | 0;
- if(_dJ_ !== i){var i=_dK_;continue}
- break}}
- return arr}
- function of_array(kind,layout,data)
- {var
- ba=create$9(kind,layout,data.length - 1),
- ofs=layout?1:0,
- _dG_=data.length - 1 - 1 | 0,
- _dF_=0;
- if(! (_dG_ < 0))
- {var i=_dF_;
- for(;;)
- {caml_ba_set_1(ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]);
- var _dH_=i + 1 | 0;
- if(_dG_ !== i){var i=_dH_;continue}
- break}}
- return ba}
- function create$10(kind,layout,dim1,dim2)
- {return caml_ba_create(kind,layout,[0,dim1,dim2])}
- function size_in_bytes$2(arr)
- {var _dD_=caml_ba_dim_2(arr),_dE_=caml_ba_dim_1(arr);
- return caml_mul
- (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dE_),_dD_)}
- function slice_left(a,n){return caml_ba_slice(a,[0,n])}
- function slice_right(a,n){return caml_ba_slice(a,[0,n])}
- function init$7(kind,layout,dim1,dim2,f)
- {var arr=create$10(kind,layout,dim1,dim2);
- if(layout)
- {var _dz_=1;
- if(! (dim2 < 1))
- {var j$0=_dz_;
- for(;;)
- {var _dA_=1;
- if(! (dim1 < 1))
- {var i$0=_dA_;
- for(;;)
- {caml_ba_set_2(arr,i$0,j$0,caml_call2(f,i$0,j$0));
- var _dC_=i$0 + 1 | 0;
- if(dim1 !== i$0){var i$0=_dC_;continue}
- break}}
- var _dB_=j$0 + 1 | 0;
- if(dim2 !== j$0){var j$0=_dB_;continue}
- break}}
- return arr}
- var _du_=dim1 - 1 | 0,_dt_=0;
- if(! (_du_ < 0))
- {var i=_dt_;
- for(;;)
- {var _dw_=dim2 - 1 | 0,_dv_=0;
- if(! (_dw_ < 0))
- {var j=_dv_;
- for(;;)
- {caml_ba_set_2(arr,i,j,caml_call2(f,i,j));
- var _dy_=j + 1 | 0;
- if(_dw_ !== j){var j=_dy_;continue}
- break}}
- var _dx_=i + 1 | 0;
- if(_du_ !== i){var i=_dx_;continue}
- break}}
- return arr}
- function of_array$0(kind,layout,data)
- {var
- dim1=data.length - 1,
- dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1,
- ba=create$10(kind,layout,dim1,dim2),
- ofs=layout?1:0,
- _do_=dim1 - 1 | 0,
- _dn_=0;
- if(! (_do_ < 0))
- {var i=_dn_;
- for(;;)
- {var row=caml_check_bound(data,i)[1 + i];
- if(row.length - 1 !== dim2)
- invalid_arg(cst_Bigarray_Array2_of_array_n);
- var _dq_=dim2 - 1 | 0,_dp_=0;
- if(! (_dq_ < 0))
- {var j=_dp_;
- for(;;)
- {caml_ba_set_2
- (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]);
- var _ds_=j + 1 | 0;
- if(_dq_ !== j){var j=_ds_;continue}
- break}}
- var _dr_=i + 1 | 0;
- if(_do_ !== i){var i=_dr_;continue}
- break}}
- return ba}
- function create$11(kind,layout,dim1,dim2,dim3)
- {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])}
- function size_in_bytes$3(arr)
- {var
- _dk_=runtime.caml_ba_dim_3(arr),
- _dl_=caml_ba_dim_2(arr),
- _dm_=caml_ba_dim_1(arr);
- return caml_mul
- (caml_mul
- (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dm_),_dl_),
- _dk_)}
- function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])}
- function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])}
- function slice_left_2(a,n){return caml_ba_slice(a,[0,n])}
- function slice_right_2(a,n){return caml_ba_slice(a,[0,n])}
- function init$8(kind,layout,dim1,dim2,dim3,f)
- {var arr=create$11(kind,layout,dim1,dim2,dim3);
- if(layout)
- {var _de_=1;
- if(! (dim3 < 1))
- {var k$0=_de_;
- for(;;)
- {var _df_=1;
- if(! (dim2 < 1))
- {var j$0=_df_;
- for(;;)
- {var _dh_=1;
- if(! (dim1 < 1))
- {var i$0=_dh_;
- for(;;)
- {caml_ba_set_3(arr,i$0,j$0,k$0,caml_call3(f,i$0,j$0,k$0));
- var _dj_=i$0 + 1 | 0;
- if(dim1 !== i$0){var i$0=_dj_;continue}
- break}}
- var _di_=j$0 + 1 | 0;
- if(dim2 !== j$0){var j$0=_di_;continue}
- break}}
- var _dg_=k$0 + 1 | 0;
- if(dim3 !== k$0){var k$0=_dg_;continue}
- break}}
- return arr}
- var _c8_=dim1 - 1 | 0,_c7_=0;
- if(! (_c8_ < 0))
- {var i=_c7_;
- for(;;)
- {var _c__=dim2 - 1 | 0,_c9_=0;
- if(! (_c__ < 0))
- {var j=_c9_;
- for(;;)
- {var _db_=dim3 - 1 | 0,_da_=0;
- if(! (_db_ < 0))
- {var k=_da_;
- for(;;)
- {caml_ba_set_3(arr,i,j,k,caml_call3(f,i,j,k));
- var _dd_=k + 1 | 0;
- if(_db_ !== k){var k=_dd_;continue}
- break}}
- var _dc_=j + 1 | 0;
- if(_c__ !== j){var j=_dc_;continue}
- break}}
- var _c$_=i + 1 | 0;
- if(_c8_ !== i){var i=_c$_;continue}
- break}}
- return arr}
- function of_array$1(kind,layout,data)
- {var
- dim1=data.length - 1,
- dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1,
- dim3=
- 0 === dim2
- ?0
- :caml_check_bound(caml_check_bound(data,0)[1],0)[1].length - 1,
- ba=create$11(kind,layout,dim1,dim2,dim3),
- ofs=layout?1:0,
- _cZ_=dim1 - 1 | 0,
- _cY_=0;
- if(! (_cZ_ < 0))
- {var i=_cY_;
- for(;;)
- {var row=caml_check_bound(data,i)[1 + i];
- if(row.length - 1 !== dim2)
- invalid_arg(cst_Bigarray_Array3_of_array_n);
- var _c1_=dim2 - 1 | 0,_c0_=0;
- if(! (_c1_ < 0))
- {var j=_c0_;
- for(;;)
- {var col=caml_check_bound(row,j)[1 + j];
- if(col.length - 1 !== dim3)
- invalid_arg(cst_Bigarray_Array3_of_array_n$0);
- var _c4_=dim3 - 1 | 0,_c3_=0;
- if(! (_c4_ < 0))
- {var k=_c3_;
- for(;;)
- {caml_ba_set_3
- (ba,
- i + ofs | 0,
- j + ofs | 0,
- k + ofs | 0,
- caml_check_bound(col,k)[1 + k]);
- var _c6_=k + 1 | 0;
- if(_c4_ !== k){var k=_c6_;continue}
- break}}
- var _c5_=j + 1 | 0;
- if(_c1_ !== j){var j=_c5_;continue}
- break}}
- var _c2_=i + 1 | 0;
- if(_cZ_ !== i){var i=_c2_;continue}
- break}}
- return ba}
- function array0_of_genarray(a)
- {return 0 === caml_ba_num_dims(a)
- ?a
- :invalid_arg(cst_Bigarray_array0_of_genarra)}
- function array1_of_genarray(a)
- {return 1 === caml_ba_num_dims(a)
- ?a
- :invalid_arg(cst_Bigarray_array1_of_genarra)}
- function array2_of_genarray(a)
- {return 2 === caml_ba_num_dims(a)
- ?a
- :invalid_arg(cst_Bigarray_array2_of_genarra)}
- function array3_of_genarray(a)
- {return 3 === caml_ba_num_dims(a)
- ?a
- :invalid_arg(cst_Bigarray_array3_of_genarra)}
- function reshape_0(a){return caml_ba_reshape(a,[0])}
- function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])}
- function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])}
- function reshape_3(a,dim1,dim2,dim3)
- {return caml_ba_reshape(a,[0,dim1,dim2,dim3])}
- var
- Stdlib_Bigarray=
- [0,
- float32,
- float64,
- complex32,
- complex64,
- int8_signed,
- int8_unsigned,
- int16_signed,
- int16_unsigned,
- int$2,
- int32$1,
- int64$1,
- nativeint$1,
- char$0,
- kind_size_in_bytes,
- c_layout,
- fortran_layout,
- [0,init$5,dims,size_in_bytes],
- [0,
- create$8,
- of_value,
- caml_ba_change_layout,
- size_in_bytes$0,
- get$2,
- set$1,
- of_value],
- [0,
- create$9,
- init$6,
- caml_ba_change_layout,
- size_in_bytes$1,
- slice,
- of_array],
- [0,
- create$10,
- init$7,
- caml_ba_change_layout,
- size_in_bytes$2,
- slice_left,
- slice_right,
- of_array$0],
- [0,
- create$11,
- init$8,
- caml_ba_change_layout,
- size_in_bytes$3,
- slice_left_1,
- slice_right_1,
- slice_left_2,
- slice_right_2,
- of_array$1],
- array0_of_genarray,
- array1_of_genarray,
- array2_of_genarray,
- array3_of_genarray,
- caml_ba_reshape,
- reshape_0,
- reshape_1,
- reshape_2,
- reshape_3];
- caml_register_global(818,Stdlib_Bigarray,"Stdlib__Bigarray");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/unix/unix.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_channel_descriptor=runtime.caml_channel_descriptor,
- caml_ml_bytes_length=runtime.caml_ml_bytes_length,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_register_global=runtime.caml_register_global,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_wrap_exception=runtime.caml_wrap_exception,
- unix_inet_addr_of_string=runtime.unix_inet_addr_of_string;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_close_process_full=caml_string_of_jsbytes("close_process_full"),
- cst_close_process=caml_string_of_jsbytes("close_process"),
- cst_close_process_out=caml_string_of_jsbytes("close_process_out"),
- cst_close_process_in=caml_string_of_jsbytes("close_process_in"),
- cst_process_full_pid=caml_string_of_jsbytes("process_full_pid"),
- cst_process_pid=caml_string_of_jsbytes("process_pid"),
- cst_process_out_pid=caml_string_of_jsbytes("process_out_pid"),
- cst_process_in_pid=caml_string_of_jsbytes("process_in_pid"),
- cst$8=caml_string_of_jsbytes(""),
- cst_c$0=caml_string_of_jsbytes("-c"),
- cst_c=caml_string_of_jsbytes("-c"),
- cst$7=caml_string_of_jsbytes(""),
- cst_udp$1=caml_string_of_jsbytes("udp"),
- cst_tcp$1=caml_string_of_jsbytes("tcp"),
- cst$4=caml_string_of_jsbytes(""),
- cst$6=caml_string_of_jsbytes(""),
- cst_tcp=caml_string_of_jsbytes("tcp"),
- cst_udp=caml_string_of_jsbytes("udp"),
- cst_udp$0=caml_string_of_jsbytes("udp"),
- cst_tcp$0=caml_string_of_jsbytes("tcp"),
- cst$5=caml_string_of_jsbytes(""),
- cst_0_0_0_0$0=caml_string_of_jsbytes("0.0.0.0"),
- cst_127_0_0_1$0=caml_string_of_jsbytes("127.0.0.1"),
- cst_Unix_sendto=caml_string_of_jsbytes("Unix.sendto"),
- cst_Unix_send=caml_string_of_jsbytes("Unix.send"),
- cst_Unix_recvfrom=caml_string_of_jsbytes("Unix.recvfrom"),
- cst_Unix_recv=caml_string_of_jsbytes("Unix.recv"),
- cst_Unix_single_write=caml_string_of_jsbytes("Unix.single_write"),
- cst_Unix_write=caml_string_of_jsbytes("Unix.write"),
- cst_Unix_read=caml_string_of_jsbytes("Unix.read"),
- cst$1=caml_string_of_jsbytes(': "'),
- cst_failed=caml_string_of_jsbytes('" failed'),
- cst_on=caml_string_of_jsbytes(' on "'),
- cst$2=caml_string_of_jsbytes('"'),
- cst$3=caml_string_of_jsbytes(": "),
- cst_E2BIG=caml_string_of_jsbytes("E2BIG"),
- cst_EACCES=caml_string_of_jsbytes("EACCES"),
- cst_EAGAIN=caml_string_of_jsbytes("EAGAIN"),
- cst_EBADF=caml_string_of_jsbytes("EBADF"),
- cst_EBUSY=caml_string_of_jsbytes("EBUSY"),
- cst_ECHILD=caml_string_of_jsbytes("ECHILD"),
- cst_EDEADLK=caml_string_of_jsbytes("EDEADLK"),
- cst_EDOM=caml_string_of_jsbytes("EDOM"),
- cst_EEXIST=caml_string_of_jsbytes("EEXIST"),
- cst_EFAULT=caml_string_of_jsbytes("EFAULT"),
- cst_EFBIG=caml_string_of_jsbytes("EFBIG"),
- cst_EINTR=caml_string_of_jsbytes("EINTR"),
- cst_EINVAL=caml_string_of_jsbytes("EINVAL"),
- cst_EIO=caml_string_of_jsbytes("EIO"),
- cst_EISDIR=caml_string_of_jsbytes("EISDIR"),
- cst_EMFILE=caml_string_of_jsbytes("EMFILE"),
- cst_EMLINK=caml_string_of_jsbytes("EMLINK"),
- cst_ENAMETOOLONG=caml_string_of_jsbytes("ENAMETOOLONG"),
- cst_ENFILE=caml_string_of_jsbytes("ENFILE"),
- cst_ENODEV=caml_string_of_jsbytes("ENODEV"),
- cst_ENOENT=caml_string_of_jsbytes("ENOENT"),
- cst_ENOEXEC=caml_string_of_jsbytes("ENOEXEC"),
- cst_ENOLCK=caml_string_of_jsbytes("ENOLCK"),
- cst_ENOMEM=caml_string_of_jsbytes("ENOMEM"),
- cst_ENOSPC=caml_string_of_jsbytes("ENOSPC"),
- cst_ENOSYS=caml_string_of_jsbytes("ENOSYS"),
- cst_ENOTDIR=caml_string_of_jsbytes("ENOTDIR"),
- cst_ENOTEMPTY=caml_string_of_jsbytes("ENOTEMPTY"),
- cst_ENOTTY=caml_string_of_jsbytes("ENOTTY"),
- cst_ENXIO=caml_string_of_jsbytes("ENXIO"),
- cst_EPERM=caml_string_of_jsbytes("EPERM"),
- cst_EPIPE=caml_string_of_jsbytes("EPIPE"),
- cst_ERANGE=caml_string_of_jsbytes("ERANGE"),
- cst_EROFS=caml_string_of_jsbytes("EROFS"),
- cst_ESPIPE=caml_string_of_jsbytes("ESPIPE"),
- cst_ESRCH=caml_string_of_jsbytes("ESRCH"),
- cst_EXDEV=caml_string_of_jsbytes("EXDEV"),
- cst_EWOULDBLOCK=caml_string_of_jsbytes("EWOULDBLOCK"),
- cst_EINPROGRESS=caml_string_of_jsbytes("EINPROGRESS"),
- cst_EALREADY=caml_string_of_jsbytes("EALREADY"),
- cst_ENOTSOCK=caml_string_of_jsbytes("ENOTSOCK"),
- cst_EDESTADDRREQ=caml_string_of_jsbytes("EDESTADDRREQ"),
- cst_EMSGSIZE=caml_string_of_jsbytes("EMSGSIZE"),
- cst_EPROTOTYPE=caml_string_of_jsbytes("EPROTOTYPE"),
- cst_ENOPROTOOPT=caml_string_of_jsbytes("ENOPROTOOPT"),
- cst_EPROTONOSUPPORT=caml_string_of_jsbytes("EPROTONOSUPPORT"),
- cst_ESOCKTNOSUPPORT=caml_string_of_jsbytes("ESOCKTNOSUPPORT"),
- cst_EOPNOTSUPP=caml_string_of_jsbytes("EOPNOTSUPP"),
- cst_EPFNOSUPPORT=caml_string_of_jsbytes("EPFNOSUPPORT"),
- cst_EAFNOSUPPORT=caml_string_of_jsbytes("EAFNOSUPPORT"),
- cst_EADDRINUSE=caml_string_of_jsbytes("EADDRINUSE"),
- cst_EADDRNOTAVAIL=caml_string_of_jsbytes("EADDRNOTAVAIL"),
- cst_ENETDOWN=caml_string_of_jsbytes("ENETDOWN"),
- cst_ENETUNREACH=caml_string_of_jsbytes("ENETUNREACH"),
- cst_ENETRESET=caml_string_of_jsbytes("ENETRESET"),
- cst_ECONNABORTED=caml_string_of_jsbytes("ECONNABORTED"),
- cst_ECONNRESET=caml_string_of_jsbytes("ECONNRESET"),
- cst_ENOBUFS=caml_string_of_jsbytes("ENOBUFS"),
- cst_EISCONN=caml_string_of_jsbytes("EISCONN"),
- cst_ENOTCONN=caml_string_of_jsbytes("ENOTCONN"),
- cst_ESHUTDOWN=caml_string_of_jsbytes("ESHUTDOWN"),
- cst_ETOOMANYREFS=caml_string_of_jsbytes("ETOOMANYREFS"),
- cst_ETIMEDOUT=caml_string_of_jsbytes("ETIMEDOUT"),
- cst_ECONNREFUSED=caml_string_of_jsbytes("ECONNREFUSED"),
- cst_EHOSTDOWN=caml_string_of_jsbytes("EHOSTDOWN"),
- cst_EHOSTUNREACH=caml_string_of_jsbytes("EHOSTUNREACH"),
- cst_ELOOP=caml_string_of_jsbytes("ELOOP"),
- cst_EOVERFLOW=caml_string_of_jsbytes("EOVERFLOW"),
- shell=caml_string_of_jsbytes("/bin/sh"),
- cst_Unix_Unix_error=caml_string_of_jsbytes("Unix.Unix_error"),
- cst=caml_string_of_jsbytes(""),
- cst$0=caml_string_of_jsbytes(""),
- cst_Unix_Unix_error$0=caml_string_of_jsbytes("Unix.Unix_error"),
- cst_0_0_0_0=caml_string_of_jsbytes("0.0.0.0"),
- cst_127_0_0_1=caml_string_of_jsbytes("127.0.0.1"),
- cst$9=caml_string_of_jsbytes("::"),
- cst_1=caml_string_of_jsbytes("::1"),
- Stdlib=global_data.Stdlib,
- Stdlib_Hashtbl=global_data.Stdlib__Hashtbl,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Fun=global_data.Stdlib__Fun,
- Stdlib_Int=global_data.Stdlib__Int,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib_Bytes=global_data.Stdlib__Bytes,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Stdlib_Callback=global_data.Stdlib__Callback,
- Stdlib_Printexc=global_data.Stdlib__Printexc,
- Unix_error=[248,cst_Unix_Unix_error,runtime.caml_fresh_oo_id(0)];
- caml_call2
- (Stdlib_Callback[2],cst_Unix_Unix_error$0,[0,Unix_error,0,cst$0,cst]);
- var
- _n_=[0,1],
- _o_=[0,1],
- _m_=[0,1],
- _j_=[0,1],
- _k_=[0,1],
- _l_=[0,1],
- _h_=[0,1],
- _i_=[0,1],
- _g_=[0,1],
- _f_=[0,1],
- _e_=[0,1],
- _d_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
- _c_=
- [0,
- [11,caml_string_of_jsbytes("EUNKNOWNERR "),[4,0,0,0,0]],
- caml_string_of_jsbytes("EUNKNOWNERR %d")],
- _b_=
- [0,
- [11,
- caml_string_of_jsbytes("Unix.Unix_error(Unix."),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [3,0,[11,caml_string_of_jsbytes(", "),[3,0,[12,41,0]]]]]]],
- caml_string_of_jsbytes("Unix.Unix_error(Unix.%s, %S, %S)")];
- function _a_(param)
- {if(param[1] === Unix_error)
- {var s=param[4],s$0=param[3],e=param[2];
- if(typeof e === "number")
- {var _c__=e;
- if(34 <= _c__)
- switch(_c__)
- {case 34:var msg=cst_ESPIPE;break;
- case 35:var msg=cst_ESRCH;break;
- case 36:var msg=cst_EXDEV;break;
- case 37:var msg=cst_EWOULDBLOCK;break;
- case 38:var msg=cst_EINPROGRESS;break;
- case 39:var msg=cst_EALREADY;break;
- case 40:var msg=cst_ENOTSOCK;break;
- case 41:var msg=cst_EDESTADDRREQ;break;
- case 42:var msg=cst_EMSGSIZE;break;
- case 43:var msg=cst_EPROTOTYPE;break;
- case 44:var msg=cst_ENOPROTOOPT;break;
- case 45:var msg=cst_EPROTONOSUPPORT;break;
- case 46:var msg=cst_ESOCKTNOSUPPORT;break;
- case 47:var msg=cst_EOPNOTSUPP;break;
- case 48:var msg=cst_EPFNOSUPPORT;break;
- case 49:var msg=cst_EAFNOSUPPORT;break;
- case 50:var msg=cst_EADDRINUSE;break;
- case 51:var msg=cst_EADDRNOTAVAIL;break;
- case 52:var msg=cst_ENETDOWN;break;
- case 53:var msg=cst_ENETUNREACH;break;
- case 54:var msg=cst_ENETRESET;break;
- case 55:var msg=cst_ECONNABORTED;break;
- case 56:var msg=cst_ECONNRESET;break;
- case 57:var msg=cst_ENOBUFS;break;
- case 58:var msg=cst_EISCONN;break;
- case 59:var msg=cst_ENOTCONN;break;
- case 60:var msg=cst_ESHUTDOWN;break;
- case 61:var msg=cst_ETOOMANYREFS;break;
- case 62:var msg=cst_ETIMEDOUT;break;
- case 63:var msg=cst_ECONNREFUSED;break;
- case 64:var msg=cst_EHOSTDOWN;break;
- case 65:var msg=cst_EHOSTUNREACH;break;
- case 66:var msg=cst_ELOOP;break;
- default:var msg=cst_EOVERFLOW}
- else
- switch(_c__)
- {case 0:var msg=cst_E2BIG;break;
- case 1:var msg=cst_EACCES;break;
- case 2:var msg=cst_EAGAIN;break;
- case 3:var msg=cst_EBADF;break;
- case 4:var msg=cst_EBUSY;break;
- case 5:var msg=cst_ECHILD;break;
- case 6:var msg=cst_EDEADLK;break;
- case 7:var msg=cst_EDOM;break;
- case 8:var msg=cst_EEXIST;break;
- case 9:var msg=cst_EFAULT;break;
- case 10:var msg=cst_EFBIG;break;
- case 11:var msg=cst_EINTR;break;
- case 12:var msg=cst_EINVAL;break;
- case 13:var msg=cst_EIO;break;
- case 14:var msg=cst_EISDIR;break;
- case 15:var msg=cst_EMFILE;break;
- case 16:var msg=cst_EMLINK;break;
- case 17:var msg=cst_ENAMETOOLONG;break;
- case 18:var msg=cst_ENFILE;break;
- case 19:var msg=cst_ENODEV;break;
- case 20:var msg=cst_ENOENT;break;
- case 21:var msg=cst_ENOEXEC;break;
- case 22:var msg=cst_ENOLCK;break;
- case 23:var msg=cst_ENOMEM;break;
- case 24:var msg=cst_ENOSPC;break;
- case 25:var msg=cst_ENOSYS;break;
- case 26:var msg=cst_ENOTDIR;break;
- case 27:var msg=cst_ENOTEMPTY;break;
- case 28:var msg=cst_ENOTTY;break;
- case 29:var msg=cst_ENXIO;break;
- case 30:var msg=cst_EPERM;break;
- case 31:var msg=cst_EPIPE;break;
- case 32:var msg=cst_ERANGE;break;
- default:var msg=cst_EROFS}}
- else
- var x=e[1],msg=caml_call2(Stdlib_Printf[4],_c_,x);
- return [0,caml_call4(Stdlib_Printf[4],_b_,msg,s$0,s)]}
- return 0}
- caml_call1(Stdlib_Printexc[9],_a_);
- function handle_unix_error(f,arg)
- {try
- {var _c9_=caml_call1(f,arg);return _c9_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Unix_error)
- {var
- arg$0=exn[4],
- fun_name=exn[3],
- err=exn[2],
- _c7_=runtime.caml_check_bound(runtime.caml_sys_argv(0),0)[1];
- caml_call1(Stdlib[49],_c7_);
- caml_call1(Stdlib[49],cst$1);
- caml_call1(Stdlib[49],fun_name);
- caml_call1(Stdlib[49],cst_failed);
- if(0 < caml_ml_string_length(arg$0))
- {caml_call1(Stdlib[49],cst_on);
- caml_call1(Stdlib[49],arg$0);
- caml_call1(Stdlib[49],cst$2)}
- caml_call1(Stdlib[49],cst$3);
- var _c8_=runtime.unix_error_message(err);
- caml_call1(Stdlib[53],_c8_);
- return caml_call1(Stdlib[99],2)}
- throw exn}}
- var stdin=0,stdout=1,stderr=2;
- function read(fd,buf,ofs,len)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_read(fd,buf,ofs,len);
- return caml_call1(Stdlib[1],cst_Unix_read)}
- function write(fd,buf,ofs,len)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_write(fd,buf,ofs,len);
- return caml_call1(Stdlib[1],cst_Unix_write)}
- function single_write(fd,buf,ofs,len)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_single_write(fd,buf,ofs,len);
- return caml_call1(Stdlib[1],cst_Unix_single_write)}
- function write_substring(fd,buf,ofs,len)
- {return write(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len)}
- function single_write_substring(fd,buf,ofs,len)
- {return single_write(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len)}
- function map_file(fd,opt,kind,layout,shared,dims)
- {if(opt)var sth=opt[1],pos=sth;else var pos=_d_;
- return runtime.caml_unix_map_file_bytecode
- (fd,kind,layout,shared,dims,pos)}
- function pause(param)
- {var sigs=runtime.unix_sigprocmask(1,0);
- return runtime.unix_sigsuspend(sigs)}
- function sleep(duration){return runtime.unix_sleep(duration)}
- function is_inet6_addr(s){return 16 === caml_ml_string_length(s)?1:0}
- var
- inet_addr_any=unix_inet_addr_of_string(cst_0_0_0_0),
- inet_addr_loopback=unix_inet_addr_of_string(cst_127_0_0_1);
- try
- {var _v_=unix_inet_addr_of_string(cst$9),inet_addr_any$0=_v_}
- catch(_c6_)
- {_c6_ = caml_wrap_exception(_c6_);
- if(_c6_[1] !== Stdlib[7])throw _c6_;
- var inet_addr_any$0=inet_addr_any}
- try
- {var _u_=unix_inet_addr_of_string(cst_1),inet6_addr_loopback=_u_}
- catch(_c5_)
- {_c5_ = caml_wrap_exception(_c5_);
- if(_c5_[1] !== Stdlib[7])throw _c5_;
- var inet6_addr_loopback=inet_addr_loopback}
- function domain_of_sockaddr(param)
- {if(0 === param[0])return 0;var a=param[1];return is_inet6_addr(a)?2:1}
- function recv(fd,buf,ofs,len,flags)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_recv(fd,buf,ofs,len,flags);
- return caml_call1(Stdlib[1],cst_Unix_recv)}
- function recvfrom(fd,buf,ofs,len,flags)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_recvfrom(fd,buf,ofs,len,flags);
- return caml_call1(Stdlib[1],cst_Unix_recvfrom)}
- function send(fd,buf,ofs,len,flags)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_send(fd,buf,ofs,len,flags);
- return caml_call1(Stdlib[1],cst_Unix_send)}
- function sendto(fd,buf,ofs,len,flags,addr)
- {if
- (0
- <=
- ofs
- &&
- 0
- <=
- len
- &&
- !
- ((caml_ml_bytes_length(buf) - len | 0) < ofs))
- return runtime.unix_sendto(fd,buf,ofs,len,flags,addr);
- return caml_call1(Stdlib[1],cst_Unix_sendto)}
- function send_substring(fd,buf,ofs,len,flags)
- {return send(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len,flags)}
- function sendto_substring(fd,buf,ofs,len,flags,addr)
- {return sendto(fd,caml_call1(Stdlib_Bytes[49],buf),ofs,len,flags,addr)}
- function getsockopt(fd,opt){return runtime.unix_getsockopt(0,fd,opt)}
- function setsockopt(fd,opt,v){return runtime.unix_setsockopt(0,fd,opt,v)}
- function getsockopt_int(fd,opt){return runtime.unix_getsockopt(1,fd,opt)}
- function setsockopt_int(fd,opt,v)
- {return runtime.unix_setsockopt(1,fd,opt,v)}
- function getsockopt_optint(fd,opt)
- {return runtime.unix_getsockopt(2,fd,opt)}
- function setsockopt_optint(fd,opt,v)
- {return runtime.unix_setsockopt(2,fd,opt,v)}
- function getsockopt_float(fd,opt)
- {return runtime.unix_getsockopt(3,fd,opt)}
- function setsockopt_float(fd,opt,v)
- {return runtime.unix_setsockopt(3,fd,opt,v)}
- function getsockopt_error(fd){return runtime.unix_getsockopt(4,fd,0)}
- function getaddrinfo(node,service,opts)
- {try
- {var
- _cV_=runtime.unix_getaddrinfo(node,service,opts),
- _cW_=caml_call1(Stdlib_List[9],_cV_);
- return _cW_}
- catch(_cX_)
- {_cX_ = caml_wrap_exception(_cX_);
- if(_cX_[1] === Stdlib[6])
- {var
- opt_socktype=[0,0],
- opt_protocol=[0,0],
- opt_passive=[0,0],
- _cI_=
- function(param)
- {if(typeof param === "number")
- {if(2 === param){opt_passive[1] = 1;return 0}}
- else
- switch(param[0])
- {case 1:var s=param[1];opt_socktype[1] = [0,s];return 0;
- case 2:var p=param[1];opt_protocol[1] = p;return 0
- }
- return 0};
- caml_call2(Stdlib_List[17],_cI_,opts);
- var
- get_port=
- function(ty,kind)
- {if(caml_string_equal(service,cst$4))return [0,[0,ty,0],0];
- try
- {var _c2_=[0,[0,ty,runtime.caml_int_of_string(service)],0];
- return _c2_}
- catch(_c3_)
- {_c3_ = caml_wrap_exception(_c3_);
- if(_c3_[1] === Stdlib[7])
- try
- {var
- _c1_=
- [0,[0,ty,runtime.unix_getservbyname(service,kind)[3]],0];
- return _c1_}
- catch(_c4_)
- {_c4_ = caml_wrap_exception(_c4_);
- if(_c4_ === Stdlib[8])return 0;
- throw _c4_}
- throw _c3_}},
- _cJ_=opt_socktype[1];
- if(_cJ_)
- var
- _cK_=_cJ_[1],
- _cL_=
- 1 === _cK_
- ?get_port(1,cst_udp)
- :_cK_
- ?caml_string_equal(service,cst$6)?[0,[0,_cK_,0],0]:0
- :get_port(0,cst_tcp),
- ports=_cL_;
- else
- var
- _cT_=get_port(1,cst_udp$0),
- _cU_=get_port(0,cst_tcp$0),
- ports=caml_call2(Stdlib[37],_cU_,_cT_);
- if(caml_string_equal(node,cst$5))
- var
- addresses=
- caml_call2(Stdlib_List[36],2,opts)
- ?[0,[0,inet_addr_any,cst_0_0_0_0$0],0]
- :[0,[0,inet_addr_loopback,cst_127_0_0_1$0],0];
- else
- try
- {var
- _cS_=[0,[0,unix_inet_addr_of_string(node),node],0],
- addresses=_cS_}
- catch(_cZ_)
- {_cZ_ = caml_wrap_exception(_cZ_);
- if(_cZ_[1] !== Stdlib[7])throw _cZ_;
- try
- {var
- he=runtime.unix_gethostbyname(node),
- _cP_=caml_call1(Stdlib_Array[11],he[4]),
- _cQ_=function(a){return [0,a,he[1]]},
- _cR_=caml_call2(Stdlib_List[19],_cQ_,_cP_),
- _cO_=_cR_}
- catch(_c0_)
- {_c0_ = caml_wrap_exception(_c0_);
- if(_c0_ !== Stdlib[8])throw _c0_;
- var _cO_=0}
- var addresses=_cO_}
- var
- _cM_=
- function(param)
- {var port=param[2],ty=param[1];
- function _cY_(param)
- {var name=param[2],addr=param[1];
- return [0,1,ty,opt_protocol[1],[1,addr,port],name]}
- return caml_call2(Stdlib_List[19],_cY_,addresses)},
- _cN_=caml_call2(Stdlib_List[19],_cM_,ports);
- return caml_call1(Stdlib_List[14],_cN_)}
- throw _cX_}}
- function getnameinfo(addr,opts)
- {try
- {var _cE_=runtime.unix_getnameinfo(addr,opts);return _cE_}
- catch(_cF_)
- {_cF_ = caml_wrap_exception(_cF_);
- if(_cF_[1] === Stdlib[6])
- {if(0 === addr[0]){var f=addr[1];return [0,cst$7,f]}
- var p=addr[2],a=addr[1];
- try
- {if(caml_call2(Stdlib_List[36],1,opts))throw Stdlib[8];
- var _cD_=runtime.unix_gethostbyaddr(a)[1],hostname=_cD_}
- catch(_cH_)
- {_cH_ = caml_wrap_exception(_cH_);
- if(_cH_ !== Stdlib[8])throw _cH_;
- if(caml_call2(Stdlib_List[36],2,opts))throw Stdlib[8];
- var hostname=runtime.unix_string_of_inet_addr(a)}
- try
- {if(caml_call2(Stdlib_List[36],3,opts))throw Stdlib[8];
- var
- kind=caml_call2(Stdlib_List[36],4,opts)?cst_udp$1:cst_tcp$1,
- _cC_=runtime.unix_getservbyport(p,kind)[1],
- service=_cC_}
- catch(_cG_)
- {_cG_ = caml_wrap_exception(_cG_);
- if(_cG_ !== Stdlib[8])throw _cG_;
- var service=caml_call1(Stdlib_Int[12],p)}
- return [0,hostname,service]}
- throw _cF_}}
- function waitpid_non_intr(pid)
- {for(;;)
- try
- {var _cA_=runtime.unix_waitpid(0,pid);return _cA_}
- catch(_cB_)
- {_cB_ = caml_wrap_exception(_cB_);
- if(_cB_[1] === Unix_error)
- {var _cz_=_cB_[2];
- if(typeof _cz_ === "number" && 11 === _cz_)continue}
- throw _cB_}}
- function system(cmd)
- {var pid=runtime.unix_spawn(shell,[0,shell,cst_c,cmd],0,0,[0,0,1,2]);
- return waitpid_non_intr(pid)[2]}
- function create_process_gen
- (cmd,args,optenv,new_stdin,new_stdout,new_stderr)
- {var toclose=[0,0];
- function close_after(param)
- {var _cv_=toclose[1];
- function _cw_(fd)
- {try
- {var _cx_=runtime.unix_close(fd);return _cx_}
- catch(_cy_)
- {_cy_ = caml_wrap_exception(_cy_);
- if(_cy_[1] === Unix_error)return 0;
- throw _cy_}}
- return caml_call2(Stdlib_List[17],_cw_,_cv_)}
- function file_descr_not_standard(fd)
- {var fd$0=fd;
- for(;;)
- {if(3 <= fd$0)return fd$0;
- var fd$1=runtime.unix_dup(_e_,fd$0);
- toclose[1] = [0,fd$1,toclose[1]];
- var fd$0=fd$1;
- continue}}
- var
- _cr_=2 === new_stderr?2:file_descr_not_standard(new_stderr),
- _cs_=1 === new_stdout?1:file_descr_not_standard(new_stdout),
- _ct_=0 === new_stdin?0:file_descr_not_standard(new_stdin),
- redirections=[0,_ct_,_cs_,_cr_];
- function _cu_(param)
- {return runtime.unix_spawn(cmd,args,optenv,1,redirections)}
- return caml_call2(Stdlib_Fun[4],close_after,_cu_)}
- function create_process(cmd,args,new_stdin,new_stdout,new_stderr)
- {return create_process_gen(cmd,args,0,new_stdin,new_stdout,new_stderr)}
- function create_process_env(cmd,args,env,new_stdin,new_stdout,new_stderr)
- {return create_process_gen
- (cmd,args,[0,env],new_stdin,new_stdout,new_stderr)}
- var popen_processes=caml_call2(Stdlib_Hashtbl[1],0,7);
- function open_proc(prog,args,envopt,proc,input,output,error)
- {var pid=create_process_gen(prog,args,envopt,input,output,error);
- return caml_call3(Stdlib_Hashtbl[5],popen_processes,proc,pid)}
- function open_process_args_in(prog,args)
- {var
- match=runtime.unix_pipe(_f_,0),
- in_write=match[2],
- in_read=match[1],
- inchan=runtime.unix_inchannel_of_filedescr(in_read);
- try
- {open_proc(prog,args,0,[1,inchan],stdin,in_write,stderr)}
- catch(e)
- {e = caml_wrap_exception(e);
- caml_call1(Stdlib[93],inchan);
- runtime.unix_close(in_write);
- throw e}
- runtime.unix_close(in_write);
- return inchan}
- function open_process_args_out(prog,args)
- {var
- match=runtime.unix_pipe(_g_,0),
- out_write=match[2],
- out_read=match[1],
- outchan=runtime.unix_outchannel_of_filedescr(out_write);
- try
- {open_proc(prog,args,0,[2,outchan],out_read,stdout,stderr)}
- catch(e)
- {e = caml_wrap_exception(e);
- caml_call1(Stdlib[76],outchan);
- runtime.unix_close(out_read);
- throw e}
- runtime.unix_close(out_read);
- return outchan}
- function open_process_args(prog,args)
- {var match=runtime.unix_pipe(_h_,0),in_write=match[2],in_read=match[1];
- try
- {var match$0=runtime.unix_pipe(_i_,0)}
- catch(e)
- {e = caml_wrap_exception(e);
- runtime.unix_close(in_read);
- runtime.unix_close(in_write);
- throw e}
- var
- out_write=match$0[2],
- out_read=match$0[1],
- inchan=runtime.unix_inchannel_of_filedescr(in_read),
- outchan=runtime.unix_outchannel_of_filedescr(out_write);
- try
- {open_proc(prog,args,0,[0,inchan,outchan],out_read,in_write,stderr)}
- catch(e)
- {e = caml_wrap_exception(e);
- runtime.unix_close(out_read);
- runtime.unix_close(out_write);
- runtime.unix_close(in_read);
- runtime.unix_close(in_write);
- throw e}
- runtime.unix_close(out_read);
- runtime.unix_close(in_write);
- return [0,inchan,outchan]}
- function open_process_args_full(prog,args,env)
- {var match=runtime.unix_pipe(_j_,0),in_write=match[2],in_read=match[1];
- try
- {var match$0=runtime.unix_pipe(_k_,0)}
- catch(e)
- {e = caml_wrap_exception(e);
- runtime.unix_close(in_read);
- runtime.unix_close(in_write);
- throw e}
- var out_write=match$0[2],out_read=match$0[1];
- try
- {var match$1=runtime.unix_pipe(_l_,0)}
- catch(e)
- {e = caml_wrap_exception(e);
- runtime.unix_close(in_read);
- runtime.unix_close(in_write);
- runtime.unix_close(out_read);
- runtime.unix_close(out_write);
- throw e}
- var
- err_write=match$1[2],
- err_read=match$1[1],
- inchan=runtime.unix_inchannel_of_filedescr(in_read),
- outchan=runtime.unix_outchannel_of_filedescr(out_write),
- errchan=runtime.unix_inchannel_of_filedescr(err_read);
- try
- {open_proc
- (prog,
- args,
- [0,env],
- [3,inchan,outchan,errchan],
- out_read,
- in_write,
- err_write)}
- catch(e)
- {e = caml_wrap_exception(e);
- runtime.unix_close(out_read);
- runtime.unix_close(out_write);
- runtime.unix_close(in_read);
- runtime.unix_close(in_write);
- runtime.unix_close(err_read);
- runtime.unix_close(err_write);
- throw e}
- runtime.unix_close(out_read);
- runtime.unix_close(in_write);
- runtime.unix_close(err_write);
- return [0,inchan,outchan,errchan]}
- function open_process_shell(fn,cmd)
- {return caml_call2(fn,shell,[0,shell,cst_c$0,cmd])}
- function open_process_in(cmd)
- {return open_process_shell(open_process_args_in,cmd)}
- function open_process_out(cmd)
- {return open_process_shell(open_process_args_out,cmd)}
- function open_process(cmd)
- {return open_process_shell(open_process_args,cmd)}
- function open_process_full(cmd)
- {return open_process_shell(open_process_args_full,cmd)}
- function find_proc_id(fun_name,proc)
- {try
- {var _cp_=caml_call2(Stdlib_Hashtbl[6],popen_processes,proc);
- return _cp_}
- catch(_cq_)
- {_cq_ = caml_wrap_exception(_cq_);
- if(_cq_ === Stdlib[8])throw [0,Unix_error,3,fun_name,cst$8];
- throw _cq_}}
- function remove_proc_id(proc)
- {return caml_call2(Stdlib_Hashtbl[10],popen_processes,proc)}
- function process_in_pid(inchan)
- {return find_proc_id(cst_process_in_pid,[1,inchan])}
- function process_out_pid(outchan)
- {return find_proc_id(cst_process_out_pid,[2,outchan])}
- function process_pid(param)
- {var outchan=param[2],inchan=param[1];
- return find_proc_id(cst_process_pid,[0,inchan,outchan])}
- function process_full_pid(param)
- {var errchan=param[3],outchan=param[2],inchan=param[1];
- return find_proc_id(cst_process_full_pid,[3,inchan,outchan,errchan])}
- function close_process_in(inchan)
- {var proc=[1,inchan],pid=find_proc_id(cst_close_process_in,proc);
- remove_proc_id(proc);
- caml_call1(Stdlib[93],inchan);
- return waitpid_non_intr(pid)[2]}
- function close_process_out(outchan)
- {var proc=[2,outchan],pid=find_proc_id(cst_close_process_out,proc);
- remove_proc_id(proc);
- try
- {caml_call1(Stdlib[76],outchan)}
- catch(_co_)
- {_co_ = caml_wrap_exception(_co_);if(_co_[1] !== Stdlib[11])throw _co_}
- return waitpid_non_intr(pid)[2]}
- function close_process(param)
- {var
- outchan=param[2],
- inchan=param[1],
- proc=[0,inchan,outchan],
- pid=find_proc_id(cst_close_process,proc);
- remove_proc_id(proc);
- caml_call1(Stdlib[93],inchan);
- try
- {caml_call1(Stdlib[76],outchan)}
- catch(_cn_)
- {_cn_ = caml_wrap_exception(_cn_);if(_cn_[1] !== Stdlib[11])throw _cn_}
- return waitpid_non_intr(pid)[2]}
- function close_process_full(param)
- {var
- errchan=param[3],
- outchan=param[2],
- inchan=param[1],
- proc=[3,inchan,outchan,errchan],
- pid=find_proc_id(cst_close_process_full,proc);
- remove_proc_id(proc);
- caml_call1(Stdlib[93],inchan);
- try
- {caml_call1(Stdlib[76],outchan)}
- catch(_cm_)
- {_cm_ = caml_wrap_exception(_cm_);if(_cm_[1] !== Stdlib[11])throw _cm_}
- caml_call1(Stdlib[93],errchan);
- return waitpid_non_intr(pid)[2]}
- function open_connection(sockaddr)
- {var sock=runtime.unix_socket(_m_,domain_of_sockaddr(sockaddr),0,0);
- try
- {runtime.unix_connect(sock,sockaddr);
- var
- _ck_=runtime.unix_outchannel_of_filedescr(sock),
- _cl_=[0,runtime.unix_inchannel_of_filedescr(sock),_ck_];
- return _cl_}
- catch(exn)
- {exn = caml_wrap_exception(exn);runtime.unix_close(sock);throw exn}}
- function shutdown_connection(inchan)
- {return runtime.unix_shutdown(caml_channel_descriptor(inchan),1)}
- function accept_non_intr(s)
- {for(;;)
- try
- {var _ci_=runtime.unix_accept(_n_,s);return _ci_}
- catch(_cj_)
- {_cj_ = caml_wrap_exception(_cj_);
- if(_cj_[1] === Unix_error)
- {var _ch_=_cj_[2];
- if(typeof _ch_ === "number" && 11 === _ch_)continue}
- throw _cj_}}
- function establish_server(server_fun,sockaddr)
- {var sock=runtime.unix_socket(_o_,domain_of_sockaddr(sockaddr),0,0);
- runtime.unix_setsockopt(0,sock,2,1);
- runtime.unix_bind(sock,sockaddr);
- runtime.unix_listen(sock,5);
- for(;;)
- {var match=accept_non_intr(sock),s=match[1],id=runtime.unix_fork(0);
- if(0 === id)
- {if(0 !== runtime.unix_fork(0))runtime.unix_exit(0);
- runtime.unix_close(sock);
- var
- inchan=runtime.unix_inchannel_of_filedescr(s),
- outchan=runtime.unix_outchannel_of_filedescr(s);
- caml_call2(server_fun,inchan,outchan);
- caml_call1(Stdlib[99],0)}
- else
- {runtime.unix_close(s);waitpid_non_intr(id)}
- continue}}
- function setsid(_cg_){return runtime.unix_setsid(_cg_)}
- function tcflow(_cf_,_ce_){return runtime.unix_tcflow(_cf_,_ce_)}
- function tcflush(_cd_,_cc_){return runtime.unix_tcflush(_cd_,_cc_)}
- function tcdrain(_cb_){return runtime.unix_tcdrain(_cb_)}
- function tcsendbreak(_ca_,_b$_)
- {return runtime.unix_tcsendbreak(_ca_,_b$_)}
- function tcsetattr(_b__,_b9_,_b8_)
- {return runtime.unix_tcsetattr(_b__,_b9_,_b8_)}
- function tcgetattr(_b7_){return runtime.unix_tcgetattr(_b7_)}
- function getservbyport(_b6_,_b5_)
- {return runtime.unix_getservbyport(_b6_,_b5_)}
- function getservbyname(_b4_,_b3_)
- {return runtime.unix_getservbyname(_b4_,_b3_)}
- function getprotobynumber(_b2_)
- {return runtime.unix_getprotobynumber(_b2_)}
- function getprotobyname(_b1_){return runtime.unix_getprotobyname(_b1_)}
- function gethostbyaddr(_b0_){return runtime.unix_gethostbyaddr(_b0_)}
- function gethostbyname(_bZ_){return runtime.unix_gethostbyname(_bZ_)}
- function gethostname(_bY_){return runtime.unix_gethostname(_bY_)}
- function getpeername(_bX_){return runtime.unix_getpeername(_bX_)}
- function getsockname(_bW_){return runtime.unix_getsockname(_bW_)}
- function shutdown(_bV_,_bU_){return runtime.unix_shutdown(_bV_,_bU_)}
- function listen(_bT_,_bS_){return runtime.unix_listen(_bT_,_bS_)}
- function connect(_bR_,_bQ_){return runtime.unix_connect(_bR_,_bQ_)}
- function bind(_bP_,_bO_){return runtime.unix_bind(_bP_,_bO_)}
- function accept(_bN_,_bM_){return runtime.unix_accept(_bN_,_bM_)}
- function socketpair(_bL_,_bK_,_bJ_,_bI_)
- {return runtime.unix_socketpair(_bL_,_bK_,_bJ_,_bI_)}
- function socket(_bH_,_bG_,_bF_,_bE_)
- {return runtime.unix_socket(_bH_,_bG_,_bF_,_bE_)}
- function string_of_inet_addr(_bD_)
- {return runtime.unix_string_of_inet_addr(_bD_)}
- function inet_addr_of_string(_bC_){return unix_inet_addr_of_string(_bC_)}
- function getgrgid(_bB_){return runtime.unix_getgrgid(_bB_)}
- var getpwuid=runtime.unix_getpwuid;
- function getgrnam(_bA_){return runtime.unix_getgrnam(_bA_)}
- function getpwnam(_bz_){return runtime.unix_getpwnam(_bz_)}
- function getlogin(_by_){return runtime.unix_getlogin(_by_)}
- function initgroups(_bx_,_bw_){return runtime.unix_initgroups(_bx_,_bw_)}
- function setgroups(_bv_){return runtime.unix_setgroups(_bv_)}
- function getgroups(_bu_){return runtime.unix_getgroups(_bu_)}
- function setgid(_bt_){return runtime.unix_setgid(_bt_)}
- function getegid(_bs_){return runtime.unix_getegid(_bs_)}
- function getgid(_br_){return runtime.unix_getgid(_br_)}
- function setuid(_bq_){return runtime.unix_setuid(_bq_)}
- function geteuid(_bp_){return runtime.unix_geteuid(_bp_)}
- var getuid=runtime.unix_getuid;
- function setitimer(_bo_,_bn_){return runtime.unix_setitimer(_bo_,_bn_)}
- function getitimer(_bm_){return runtime.unix_getitimer(_bm_)}
- function utimes(_bl_,_bk_,_bj_)
- {return runtime.unix_utimes(_bl_,_bk_,_bj_)}
- function times(_bi_){return runtime.unix_times(_bi_)}
- function sleepf(_bh_){return runtime.unix_sleep(_bh_)}
- function alarm(_bg_){return runtime.unix_alarm(_bg_)}
- var
- mktime=runtime.unix_mktime,
- localtime=runtime.unix_localtime,
- gmtime=runtime.unix_gmtime;
- function gettimeofday(_bf_){return runtime.unix_gettimeofday(_bf_)}
- function time(_be_){return runtime.unix_time(_be_)}
- function sigsuspend(_bd_){return runtime.unix_sigsuspend(_bd_)}
- function sigpending(_bc_){return runtime.unix_sigpending(_bc_)}
- function sigprocmask(_bb_,_ba_)
- {return runtime.unix_sigprocmask(_bb_,_ba_)}
- function kill(_a$_,_a__){return runtime.unix_kill(_a$_,_a__)}
- function lockf(_a9_,_a8_,_a7_){return runtime.unix_lockf(_a9_,_a8_,_a7_)}
- function select(_a6_,_a5_,_a4_,_a3_)
- {return runtime.unix_select(_a6_,_a5_,_a4_,_a3_)}
- var
- readlink=runtime.unix_readlink,
- has_symlink=runtime.unix_has_symlink,
- symlink=runtime.unix_symlink;
- function mkfifo(_a2_,_a1_){return runtime.unix_mkfifo(_a2_,_a1_)}
- function pipe(_a0_,_aZ_){return runtime.unix_pipe(_a0_,_aZ_)}
- function closedir(_aY_){return runtime.unix_closedir(_aY_)}
- function rewinddir(_aX_){return runtime.unix_rewinddir(_aX_)}
- function readdir(_aW_){return runtime.unix_readdir(_aW_)}
- function opendir(_aV_){return runtime.unix_opendir(_aV_)}
- function chroot(_aU_){return runtime.unix_chroot(_aU_)}
- function getcwd(_aT_){return runtime.unix_getcwd(_aT_)}
- function chdir(_aS_){return runtime.unix_chdir(_aS_)}
- var rmdir=runtime.unix_rmdir,mkdir=runtime.unix_mkdir;
- function clear_close_on_exec(_aR_)
- {return runtime.unix_clear_close_on_exec(_aR_)}
- function set_close_on_exec(_aQ_)
- {return runtime.unix_set_close_on_exec(_aQ_)}
- function clear_nonblock(_aP_){return runtime.unix_clear_nonblock(_aP_)}
- function set_nonblock(_aO_){return runtime.unix_set_nonblock(_aO_)}
- function dup2(_aN_,_aM_,_aL_){return runtime.unix_dup2(_aN_,_aM_,_aL_)}
- function dup(_aK_,_aJ_){return runtime.unix_dup(_aK_,_aJ_)}
- function access(_aI_,_aH_){return runtime.unix_access(_aI_,_aH_)}
- function umask(_aG_){return runtime.unix_umask(_aG_)}
- function fchown(_aF_,_aE_,_aD_)
- {return runtime.unix_fchown(_aF_,_aE_,_aD_)}
- function chown(_aC_,_aB_,_aA_){return runtime.unix_chown(_aC_,_aB_,_aA_)}
- function fchmod(_az_,_ay_){return runtime.unix_fchmod(_az_,_ay_)}
- function chmod(_ax_,_aw_){return runtime.unix_chmod(_ax_,_aw_)}
- function realpath(_av_){return runtime.unix_realpath(_av_)}
- function link(_au_,_at_,_as_){return runtime.unix_link(_au_,_at_,_as_)}
- function rename(_ar_,_aq_){return runtime.unix_rename(_ar_,_aq_)}
- var unlink=runtime.unix_unlink;
- function _p_(_ap_){return runtime.unix_fstat_64(_ap_)}
- function _q_(_ao_){return runtime.unix_lstat_64(_ao_)}
- function _r_(_an_){return runtime.unix_stat_64(_an_)}
- function _s_(_am_,_al_){return runtime.unix_ftruncate_64(_am_,_al_)}
- function _t_(_ak_,_aj_){return runtime.unix_truncate_64(_ak_,_aj_)}
- var
- LargeFile=
- [0,
- function(_ai_,_ah_,_ag_){return runtime.unix_lseek_64(_ai_,_ah_,_ag_)},
- _t_,
- _s_,
- _r_,
- _q_,
- _p_],
- isatty=runtime.unix_isatty;
- function fstat(_af_){return runtime.unix_fstat(_af_)}
- var lstat=runtime.unix_lstat,stat=runtime.unix_stat;
- function ftruncate(_ae_,_ad_){return runtime.unix_ftruncate(_ae_,_ad_)}
- function truncate(_ac_,_ab_){return runtime.unix_truncate(_ac_,_ab_)}
- function lseek(_aa_,_$_,___){return runtime.unix_lseek(_aa_,_$_,___)}
- var
- descr_of_out_channel=caml_channel_descriptor,
- descr_of_in_channel=caml_channel_descriptor;
- function out_channel_of_descr(_Z_)
- {return runtime.unix_outchannel_of_filedescr(_Z_)}
- function in_channel_of_descr(_Y_)
- {return runtime.unix_inchannel_of_filedescr(_Y_)}
- function fsync(_X_){return runtime.unix_fsync(_X_)}
- function close(_W_){return runtime.unix_close(_W_)}
- function openfile(_V_,_U_,_T_){return runtime.unix_open(_V_,_U_,_T_)}
- function nice(_S_){return runtime.unix_nice(_S_)}
- function getppid(_R_){return runtime.unix_getppid(_R_)}
- function getpid(_Q_){return runtime.unix_getpid(_Q_)}
- function exit(_P_){return runtime.unix_exit(_P_)}
- function waitpid(_O_,_N_){return runtime.unix_waitpid(_O_,_N_)}
- function wait(_M_){return runtime.unix_wait(_M_)}
- function fork(_L_){return runtime.unix_fork(_L_)}
- function execvpe(_K_,_J_,_I_){return runtime.unix_execvpe(_K_,_J_,_I_)}
- function execvp(_H_,_G_){return runtime.unix_execvp(_H_,_G_)}
- function execve(_F_,_E_,_D_){return runtime.unix_execve(_F_,_E_,_D_)}
- function execv(_C_,_B_){return runtime.unix_execv(_C_,_B_)}
- function putenv(_A_,_z_){return runtime.unix_putenv(_A_,_z_)}
- var
- unsafe_getenv=runtime.caml_sys_unsafe_getenv,
- getenv=runtime.caml_sys_getenv;
- function unsafe_environment(_y_)
- {return runtime.unix_environment_unsafe(_y_)}
- function environment(_x_){return runtime.unix_environment(_x_)}
- function error_message(_w_){return runtime.unix_error_message(_w_)}
- var
- include=
- [0,
- Unix_error,
- error_message,
- handle_unix_error,
- environment,
- unsafe_environment,
- getenv,
- unsafe_getenv,
- putenv,
- execv,
- execve,
- execvp,
- execvpe,
- fork,
- wait,
- waitpid,
- system,
- exit,
- getpid,
- getppid,
- nice,
- stdin,
- stdout,
- stderr,
- openfile,
- close,
- fsync,
- read,
- write,
- single_write,
- write_substring,
- single_write_substring,
- in_channel_of_descr,
- out_channel_of_descr,
- descr_of_in_channel,
- descr_of_out_channel,
- lseek,
- truncate,
- ftruncate,
- stat,
- lstat,
- fstat,
- isatty,
- LargeFile,
- map_file,
- unlink,
- rename,
- link,
- realpath,
- chmod,
- fchmod,
- chown,
- fchown,
- umask,
- access,
- dup,
- dup2,
- set_nonblock,
- clear_nonblock,
- set_close_on_exec,
- clear_close_on_exec,
- mkdir,
- rmdir,
- chdir,
- getcwd,
- chroot,
- opendir,
- readdir,
- rewinddir,
- closedir,
- pipe,
- mkfifo,
- create_process,
- create_process_env,
- open_process_in,
- open_process_out,
- open_process,
- open_process_full,
- open_process_args_in,
- open_process_args_out,
- open_process_args,
- open_process_args_full,
- process_in_pid,
- process_out_pid,
- process_pid,
- process_full_pid,
- close_process_in,
- close_process_out,
- close_process,
- close_process_full,
- symlink,
- has_symlink,
- readlink,
- select,
- lockf,
- kill,
- sigprocmask,
- sigpending,
- sigsuspend,
- pause,
- time,
- gettimeofday,
- gmtime,
- localtime,
- mktime,
- alarm,
- sleep,
- sleepf,
- times,
- utimes,
- getitimer,
- setitimer,
- getuid,
- geteuid,
- setuid,
- getgid,
- getegid,
- setgid,
- getgroups,
- setgroups,
- initgroups,
- getlogin,
- getpwnam,
- getgrnam,
- getpwuid,
- getgrgid,
- inet_addr_of_string,
- string_of_inet_addr,
- inet_addr_any,
- inet_addr_loopback,
- inet_addr_any$0,
- inet6_addr_loopback,
- is_inet6_addr,
- socket,
- domain_of_sockaddr,
- socketpair,
- accept,
- bind,
- connect,
- listen,
- shutdown,
- getsockname,
- getpeername,
- recv,
- recvfrom,
- send,
- send_substring,
- sendto,
- sendto_substring,
- getsockopt,
- setsockopt,
- getsockopt_int,
- setsockopt_int,
- getsockopt_optint,
- setsockopt_optint,
- getsockopt_float,
- setsockopt_float,
- getsockopt_error,
- open_connection,
- shutdown_connection,
- establish_server,
- gethostname,
- gethostbyname,
- gethostbyaddr,
- getprotobyname,
- getprotobynumber,
- getservbyname,
- getservbyport,
- getaddrinfo,
- getnameinfo,
- tcgetattr,
- tcsetattr,
- tcsendbreak,
- tcdrain,
- tcflush,
- tcflow,
- setsid];
- caml_register_global(136,include,"Unix");
- var
- UnixLabels=
- [0,
- Unix_error,
- error_message,
- handle_unix_error,
- environment,
- unsafe_environment,
- getenv,
- unsafe_getenv,
- putenv,
- execv,
- execve,
- execvp,
- execvpe,
- fork,
- wait,
- waitpid,
- system,
- exit,
- getpid,
- getppid,
- nice,
- stdin,
- stdout,
- stderr,
- openfile,
- close,
- fsync,
- read,
- write,
- single_write,
- write_substring,
- single_write_substring,
- in_channel_of_descr,
- out_channel_of_descr,
- descr_of_in_channel,
- descr_of_out_channel,
- lseek,
- truncate,
- ftruncate,
- stat,
- lstat,
- fstat,
- isatty,
- LargeFile,
- map_file,
- unlink,
- rename,
- link,
- realpath,
- chmod,
- fchmod,
- chown,
- fchown,
- umask,
- access,
- dup,
- dup2,
- set_nonblock,
- clear_nonblock,
- set_close_on_exec,
- clear_close_on_exec,
- mkdir,
- rmdir,
- chdir,
- getcwd,
- chroot,
- opendir,
- readdir,
- rewinddir,
- closedir,
- pipe,
- mkfifo,
- create_process,
- create_process_env,
- open_process_in,
- open_process_out,
- open_process,
- open_process_full,
- open_process_args_in,
- open_process_args_out,
- open_process_args,
- open_process_args_full,
- process_in_pid,
- process_out_pid,
- process_pid,
- process_full_pid,
- close_process_in,
- close_process_out,
- close_process,
- close_process_full,
- symlink,
- has_symlink,
- readlink,
- select,
- lockf,
- kill,
- sigprocmask,
- sigpending,
- sigsuspend,
- pause,
- time,
- gettimeofday,
- gmtime,
- localtime,
- mktime,
- alarm,
- sleep,
- sleepf,
- times,
- utimes,
- getitimer,
- setitimer,
- getuid,
- geteuid,
- setuid,
- getgid,
- getegid,
- setgid,
- getgroups,
- setgroups,
- initgroups,
- getlogin,
- getpwnam,
- getgrnam,
- getpwuid,
- getgrgid,
- inet_addr_of_string,
- string_of_inet_addr,
- inet_addr_any,
- inet_addr_loopback,
- inet_addr_any$0,
- inet6_addr_loopback,
- is_inet6_addr,
- socket,
- domain_of_sockaddr,
- socketpair,
- accept,
- bind,
- connect,
- listen,
- shutdown,
- getsockname,
- getpeername,
- recv,
- recvfrom,
- send,
- send_substring,
- sendto,
- sendto_substring,
- getsockopt,
- setsockopt,
- getsockopt_int,
- setsockopt_int,
- getsockopt_optint,
- setsockopt_optint,
- getsockopt_float,
- setsockopt_float,
- getsockopt_error,
- open_connection,
- shutdown_connection,
- establish_server,
- gethostname,
- gethostbyname,
- gethostbyaddr,
- getprotobyname,
- getprotobynumber,
- getservbyname,
- getservbyport,
- getaddrinfo,
- getnameinfo,
- tcgetattr,
- tcsetattr,
- tcsendbreak,
- tcdrain,
- tcflush,
- tcflow,
- setsid];
- caml_register_global(137,UnixLabels,"UnixLabels");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/str/str.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_bytes_get=runtime.caml_bytes_get,
- caml_bytes_set=runtime.caml_bytes_set,
- caml_check_bound=runtime.caml_check_bound,
- caml_create_bytes=runtime.caml_create_bytes,
- caml_make_vect=runtime.caml_make_vect,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_get=runtime.caml_string_get,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_trampoline=runtime.caml_trampoline,
- caml_trampoline_return=runtime.caml_trampoline_return,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- var
- global_data=runtime.caml_get_global_data(),
- cst=caml_string_of_jsbytes(""),
- cst$0=caml_string_of_jsbytes(""),
- cst$5=caml_string_of_jsbytes(""),
- cst$4=caml_string_of_jsbytes(""),
- cst$3=caml_string_of_jsbytes(""),
- cst_Str_matched_group=caml_string_of_jsbytes("Str.matched_group"),
- cst_Str_group_end=caml_string_of_jsbytes("Str.group_end"),
- cst_Str_group_beginning=caml_string_of_jsbytes("Str.group_beginning"),
- cst_group_not_closed_by=
- caml_string_of_jsbytes("\\( group not closed by \\)"),
- cst_class_not_closed_by=caml_string_of_jsbytes("[ class not closed by ]"),
- cst_spurious_in_regular_expres=
- caml_string_of_jsbytes("spurious \\) in regular expression"),
- cst_too_many_r_or_r_where_r_is=
- caml_string_of_jsbytes("too many r* or r+ where r is nullable"),
- cst$1=caml_string_of_jsbytes(""),
- cst$2=caml_string_of_jsbytes(""),
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_String=global_data.Stdlib__String,
- Stdlib=global_data.Stdlib,
- Stdlib_Bytes=global_data.Stdlib__Bytes,
- Assert_failure=global_data.Assert_failure,
- Stdlib_Buffer=global_data.Stdlib__Buffer,
- Stdlib_Char=global_data.Stdlib__Char,
- Stdlib_Int=global_data.Stdlib__Int,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib_Map=global_data.Stdlib__Map,
- _b_=[0,92],
- _c_=[0,caml_string_of_jsbytes("str.ml"),521,10],
- _a_=[0,caml_string_of_jsbytes("str.ml"),214,11];
- function string_before(s,n){return caml_call3(Stdlib_String[15],s,0,n)}
- function string_after(s,n)
- {return caml_call3
- (Stdlib_String[15],s,n,caml_ml_string_length(s) - n | 0)}
- function first_chars(s,n){return caml_call3(Stdlib_String[15],s,0,n)}
- function last_chars(s,n)
- {return caml_call3
- (Stdlib_String[15],s,caml_ml_string_length(s) - n | 0,n)}
- var full=caml_call2(Stdlib_Bytes[1],32,255);
- function make_empty(param){return caml_call2(Stdlib_Bytes[1],32,0)}
- function add(s,i)
- {var _ao_=caml_bytes_get(s,i >>> 3 | 0) | 1 << (i & 7);
- return caml_bytes_set(s,i >>> 3 | 0,caml_call1(Stdlib_Char[1],_ao_))}
- function singleton(c){var s=make_empty(0);add(s,c);return s}
- function complement(s)
- {var r=caml_create_bytes(32),i=0;
- for(;;)
- {var _am_=caml_bytes_get(s,i) ^ 255;
- caml_bytes_set(r,i,caml_call1(Stdlib_Char[1],_am_));
- var _an_=i + 1 | 0;
- if(31 !== i){var i=_an_;continue}
- return r}}
- function union(s1,s2)
- {var r=caml_create_bytes(32),i=0;
- for(;;)
- {var _aj_=caml_bytes_get(s2,i),_ak_=caml_bytes_get(s1,i) | _aj_;
- caml_bytes_set(r,i,caml_call1(Stdlib_Char[1],_ak_));
- var _al_=i + 1 | 0;
- if(31 !== i){var i=_al_;continue}
- return r}}
- function disjoint(s1,s2)
- {try
- {var i=0;
- for(;;)
- {var _ag_=caml_bytes_get(s2,i);
- if(0 !== (caml_bytes_get(s1,i) & _ag_))throw Stdlib[3];
- var _ah_=i + 1 | 0;
- if(31 !== i){var i=_ah_;continue}
- var _af_=1;
- return _af_}}
- catch(_ai_)
- {_ai_ = caml_wrap_exception(_ai_);
- if(_ai_ === Stdlib[3])return 0;
- throw _ai_}}
- function iter(fn,s)
- {var i=0;
- for(;;)
- {var c=caml_bytes_get(s,i);
- if(0 !== c)
- {var j=0;
- for(;;)
- {if(0 !== (c & 1 << j))
- caml_call1(fn,caml_call1(Stdlib_Char[1],(i << 3) + j | 0));
- var _ae_=j + 1 | 0;
- if(7 !== j){var j=_ae_;continue}
- break}}
- var _ad_=i + 1 | 0;
- if(31 !== i){var i=_ad_;continue}
- return 0}}
- function fold_case(s)
- {var r=make_empty(0);
- iter
- (function(c)
- {add(r,caml_call1(Stdlib_Char[3],c));
- return add(r,caml_call1(Stdlib_Char[4],c))},
- s);
- return r}
- var
- op_CHAR=0,
- op_CHARNORM=1,
- op_STRING=2,
- op_STRINGNORM=3,
- op_CHARCLASS=4,
- op_BOL=5,
- op_EOL=6,
- op_WORDBOUNDARY=7,
- op_BEGGROUP=8,
- op_ENDGROUP=9,
- op_REFGROUP=10,
- op_ACCEPT=11,
- op_SIMPLEOPT=12,
- op_SIMPLESTAR=13,
- op_SIMPLEPLUS=14,
- op_GOTO=15,
- op_PUSHBACK=16,
- op_SETMARK=17,
- op_CHECKPROGRESS=18;
- function instr(opc,arg){return opc | arg << 8}
- function displ(dest,from){return (dest - from | 0) - 1 | 0}
- function is_nullable(param)
- {var param$0=param;
- for(;;)
- if(typeof param$0 === "number")
- switch(param$0){case 0:return 1;case 1:return 1;default:return 1}
- else
- switch(param$0[0])
- {case 0:return 0;
- case 1:var s=param$0[1];return caml_string_equal(s,cst);
- case 2:return 0;
- case 3:
- var rl=param$0[1];
- return caml_call2(Stdlib_List[32],is_nullable,rl);
- case 4:
- var r2=param$0[2],r1=param$0[1],_ac_=is_nullable(r1);
- if(_ac_)return _ac_;
- var param$0=r2;
- continue;
- case 5:return 1;
- case 6:var param$1=param$0[1],param$0=param$1;continue;
- case 7:return 1;
- case 8:var param$2=param$0[2],param$0=param$2;continue;
- default:return 1}}
- function first$0(counter,param)
- {var param$0=param;
- for(;;)
- if(typeof param$0 === "number")
- switch(param$0)
- {case 0:return full;case 1:return full;default:return full}
- else
- switch(param$0[0])
- {case 0:var c=param$0[1];return singleton(c);
- case 1:
- var s=param$0[1];
- return caml_string_equal(s,cst$0)
- ?full
- :singleton(caml_string_get(s,0));
- case 2:
- var cmpl=param$0[2],cl=param$0[1];return cmpl?complement(cl):cl;
- case 3:
- var rl=param$0[1];
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return first_seq$0(counter$0,rl)}
- return caml_trampoline_return(first_seq$0,[0,rl]);
- case 4:
- var r2=param$0[2],r1=param$0[1],_ab_=first(r2);
- return union(first(r1),_ab_);
- case 5:return full;
- case 6:var param$1=param$0[1],param$0=param$1;continue;
- case 7:return full;
- case 8:var param$2=param$0[2],param$0=param$2;continue;
- default:return full}}
- function first_seq$0(counter,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var ___=param$0[1];
- if(typeof ___ === "number")
- {var param$1=param$0[2],param$0=param$1;continue}
- else
- switch(___[0])
- {case 5:
- var rl=param$0[2],r=___[1],_$_=first_seq(rl);
- return union(first(r),_$_);
- case 7:
- var rl$0=param$0[2],r$0=___[1],_aa_=first_seq(rl$0);
- return union(first(r$0),_aa_);
- default:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return first$0(counter$0,___)}
- return caml_trampoline_return(first$0,[0,___])}}
- return full}}
- function first(param){return caml_trampoline(first$0(0,param))}
- function first_seq(param){return caml_trampoline(first_seq$0(0,param))}
- function charclass_of_regexp(fold_case$0,re)
- {var switch$0=0;
- if(typeof re !== "number")
- switch(re[0])
- {case 0:var c=re[1],compl=0,cl1=singleton(c);switch$0 = 1;break;
- case 2:
- var compl$0=re[2],cl=re[1],compl=compl$0,cl1=cl;switch$0 = 1;break
- }
- if(switch$0)
- {var cl2=fold_case$0?fold_case(cl1):cl1,_Z_=compl?complement(cl2):cl2;
- return caml_call1(Stdlib_Bytes[6],_Z_)}
- throw [0,Assert_failure,_a_]}
- var t=caml_create_bytes(256),i=0;
- for(;;)
- {var _d_=caml_call1(Stdlib_Char[1],i);
- caml_bytes_set(t,i,caml_call1(Stdlib_Char[3],_d_));
- var _e_=i + 1 | 0;
- if(255 !== i){var i=_e_;continue}
- var
- fold_case_table=caml_call1(Stdlib_Bytes[6],t),
- compare=function(x,y){return runtime.caml_string_compare(x,y)},
- StringMap=caml_call1(Stdlib_Map[1],[0,compare]),
- compile=
- function(fold_case$0,re)
- {var
- prog=[0,caml_make_vect(32,0)],
- progpos=[0,0],
- cpool=[0,StringMap[1]],
- cpoolpos=[0,0],
- numgroups=[0,1],
- numregs=[0,0];
- function emit_instr(opc,arg)
- {if(prog[1].length - 1 <= progpos[1])
- {var newlen=[0,prog[1].length - 1];
- for(;;)
- {if(newlen[1] <= progpos[1])
- {newlen[1] = newlen[1] * 2 | 0;continue}
- var nprog=caml_make_vect(newlen[1],0);
- caml_call5
- (Stdlib_Array[10],prog[1],0,nprog,0,prog[1].length - 1);
- prog[1] = nprog;
- break}}
- var _X_=instr(opc,arg),_Y_=progpos[1];
- caml_check_bound(prog[1],_Y_)[1 + _Y_] = _X_;
- progpos[1]++;
- return 0}
- function emit_hole(param)
- {var p=progpos[1];emit_instr(op_CHAR,0);return p}
- function patch_instr(pos,opc,dest)
- {var _W_=instr(opc,displ(dest,pos));
- caml_check_bound(prog[1],pos)[1 + pos] = _W_;
- return 0}
- function cpool_index(s)
- {try
- {var _U_=caml_call2(StringMap[28],s,cpool[1]);return _U_}
- catch(_V_)
- {_V_ = caml_wrap_exception(_V_);
- if(_V_ === Stdlib[8])
- {var p=cpoolpos[1];
- cpool[1] = caml_call3(StringMap[4],s,p,cpool[1]);
- cpoolpos[1]++;
- return p}
- throw _V_}}
- function allocate_register_if_nullable(r)
- {if(is_nullable(r))
- {var n=numregs[1];
- if(64 <= n)caml_call1(Stdlib[2],cst_too_many_r_or_r_where_r_is);
- numregs[1]++;
- return n}
- return -1}
- function disjoint_modulo_case(c1,c2)
- {if(fold_case$0)
- {var _T_=fold_case(c2);return disjoint(fold_case(c1),_T_)}
- return disjoint(c1,c2)}
- function emit_code(param)
- {if(typeof param === "number")
- switch(param)
- {case 0:return emit_instr(op_BOL,0);
- case 1:return emit_instr(op_EOL,0);
- default:return emit_instr(op_WORDBOUNDARY,0)}
- else
- switch(param[0])
- {case 0:
- var c=param[1];
- return fold_case$0
- ?emit_instr(op_CHARNORM,caml_call1(Stdlib_Char[3],c))
- :emit_instr(op_CHAR,c);
- case 1:
- var s=param[1],match=caml_ml_string_length(s);
- if(0 === match)return 0;
- if(1 === match)
- {if(fold_case$0)
- {var _Q_=caml_string_get(s,0);
- return emit_instr
- (op_CHARNORM,caml_call1(Stdlib_Char[3],_Q_))}
- return emit_instr(op_CHAR,caml_string_get(s,0))}
- try
- {var i=caml_call2(Stdlib_String[35],s,0);
- emit_code([1,string_before(s,i)]);
- emit_instr(op_CHAR,0);
- var _R_=emit_code([1,string_after(s,i + 1 | 0)]);
- return _R_}
- catch(_S_)
- {_S_ = caml_wrap_exception(_S_);
- if(_S_ === Stdlib[8])
- return fold_case$0
- ?emit_instr
- (op_STRINGNORM,cpool_index(caml_call1(Stdlib_String[46],s)))
- :emit_instr(op_STRING,cpool_index(s));
- throw _S_}
- case 2:
- var
- compl=param[2],
- cl=param[1],
- cl1=fold_case$0?fold_case(cl):cl,
- cl2=compl?complement(cl1):cl1;
- return emit_instr
- (op_CHARCLASS,cpool_index(caml_call1(Stdlib_Bytes[6],cl2)));
- case 3:var rl=param[1];return emit_seq_code(rl);
- case 4:
- var r2=param[2],r1=param[1],pos_pushback=emit_hole(0);
- emit_code(r1);
- var pos_goto_end=emit_hole(0),lbl1=progpos[1];
- emit_code(r2);
- var lbl2=progpos[1];
- patch_instr(pos_pushback,op_PUSHBACK,lbl1);
- return patch_instr(pos_goto_end,op_GOTO,lbl2);
- case 5:
- var
- r=param[1],
- regno=allocate_register_if_nullable(r),
- lbl1$0=emit_hole(0);
- if(0 <= regno)emit_instr(op_SETMARK,regno);
- emit_code(r);
- if(0 <= regno)emit_instr(op_CHECKPROGRESS,regno);
- emit_instr(op_GOTO,displ(lbl1$0,progpos[1]));
- var lbl2$0=progpos[1];
- return patch_instr(lbl1$0,op_PUSHBACK,lbl2$0);
- case 6:
- var
- r$0=param[1],
- regno$0=allocate_register_if_nullable(r$0),
- lbl1$1=progpos[1];
- emit_code(r$0);
- if(0 <= regno$0)emit_instr(op_CHECKPROGRESS,regno$0);
- var pos_pushback$0=emit_hole(0);
- if(0 <= regno$0)emit_instr(op_SETMARK,regno$0);
- emit_instr(op_GOTO,displ(lbl1$1,progpos[1]));
- var lbl2$1=progpos[1];
- return patch_instr(pos_pushback$0,op_PUSHBACK,lbl2$1);
- case 7:
- var r$1=param[1],pos_pushback$1=emit_hole(0);
- emit_code(r$1);
- var lbl=progpos[1];
- return patch_instr(pos_pushback$1,op_PUSHBACK,lbl);
- case 8:
- var r$2=param[2],n=param[1];
- emit_instr(op_BEGGROUP,n);
- emit_code(r$2);
- emit_instr(op_ENDGROUP,n);
- numgroups[1]
- =
- caml_call2(Stdlib_Int[11],numgroups[1],n + 1 | 0);
- return 0;
- default:
- var n$0=param[1];
- emit_instr(op_REFGROUP,n$0);
- numgroups[1]
- =
- caml_call2(Stdlib_Int[11],numgroups[1],n$0 + 1 | 0);
- return 0}}
- function emit_seq_code(param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var _J_=param$0[1];
- if(typeof _J_ !== "number")
- switch(_J_[0])
- {case 5:
- var _K_=_J_[1],switch$0=0;
- if(typeof _K_ === "number")
- switch$0 = 1;
- else
- switch(_K_[0])
- {case 0:
- case 2:
- var rl$0=param$0[2],_L_=first_seq(rl$0);
- if(disjoint_modulo_case(first(_K_),_L_))
- {emit_instr
- (op_SIMPLESTAR,
- cpool_index(charclass_of_regexp(fold_case$0,_K_)));
- var param$0=rl$0;
- continue}
- break;
- default:switch$0 = 1}
- break;
- case 6:
- var _M_=_J_[1],switch$1=0;
- if(typeof _M_ === "number")
- switch$1 = 1;
- else
- switch(_M_[0])
- {case 0:
- case 2:
- var rl$1=param$0[2],_N_=first_seq(rl$1);
- if(disjoint_modulo_case(first(_M_),_N_))
- {emit_instr
- (op_SIMPLEPLUS,
- cpool_index(charclass_of_regexp(fold_case$0,_M_)));
- var param$0=rl$1;
- continue}
- break;
- default:switch$1 = 1}
- break;
- case 7:
- var _O_=_J_[1],switch$2=0;
- if(typeof _O_ === "number")
- switch$2 = 1;
- else
- switch(_O_[0])
- {case 0:
- case 2:
- var rl$2=param$0[2],_P_=first_seq(rl$2);
- if(disjoint_modulo_case(first(_O_),_P_))
- {emit_instr
- (op_SIMPLEOPT,
- cpool_index(charclass_of_regexp(fold_case$0,_O_)));
- var param$0=rl$2;
- continue}
- break;
- default:switch$2 = 1}
- break
- }
- var rl=param$0[2];
- emit_code(_J_);
- var param$0=rl;
- continue}
- return 0}}
- emit_code(re);
- emit_instr(op_ACCEPT,0);
- var start=first(re),start$0=fold_case$0?fold_case(start):start;
- if(runtime.caml_bytes_equal(start,full))
- var start_pos=-1;
- else
- {var r=caml_call2(Stdlib_Bytes[1],256,0);
- iter(function(c){return caml_bytes_set(r,c,1)},start$0);
- var start_pos=cpool_index(caml_call1(Stdlib_Bytes[6],r))}
- var constantpool=caml_make_vect(cpoolpos[1],cst$1),_F_=cpool[1];
- function _G_(str,idx)
- {caml_check_bound(constantpool,idx)[1 + idx] = str;return 0}
- caml_call2(StringMap[12],_G_,_F_);
- var
- _H_=numregs[1],
- _I_=numgroups[1],
- fold_case_table$0=fold_case$0?fold_case_table:cst$2;
- return [0,
- caml_call3(Stdlib_Array[7],prog[1],0,progpos[1]),
- constantpool,
- fold_case_table$0,
- _I_,
- _H_,
- start_pos]},
- flush=
- function(buf)
- {var s=caml_call1(Stdlib_Buffer[2],buf[1]);
- caml_call1(Stdlib_Buffer[8],buf[1]);
- var match=caml_ml_string_length(s);
- if(0 === match)return 0;
- if(1 === match)
- {var _E_=buf[2];buf[2] = [0,[0,caml_string_get(s,0)],_E_];return 0}
- buf[2] = [0,[1,s],buf[2]];
- return 0},
- dotclass=complement(singleton(10)),
- parse=
- function(s)
- {var len=caml_ml_string_length(s),group_counter=[0,1];
- function regexpclass1(start)
- {var c=make_empty(0),i$0=start;
- for(;;)
- {if(len <= i$0)caml_call1(Stdlib[2],cst_class_not_closed_by);
- if(93 === caml_string_get(s,i$0) && start < i$0)
- {var j=i$0 + 1 | 0;return [0,c,j]}
- var c1=caml_string_get(s,i$0);
- if
- ((i$0 + 2 | 0)
- <
- len
- &&
- 45
- ===
- caml_string_get(s,i$0 + 1 | 0)
- &&
- 93
- !==
- caml_string_get(s,i$0 + 2 | 0))
- {var c2=caml_string_get(s,i$0 + 2 | 0);
- if(! (c2 < c1))
- {var i=c1;
- for(;;)
- {add(c,caml_call1(Stdlib_Char[1],i));
- var _D_=i + 1 | 0;
- if(c2 !== i){var i=_D_;continue}
- break}}
- var i$2=i$0 + 3 | 0,i$0=i$2;
- continue}
- add(c,c1);
- var i$1=i$0 + 1 | 0,i$0=i$1;
- continue}}
- function regexp1(i)
- {var sb=[0,caml_call1(Stdlib_Buffer[1],16),0],i$0=i;
- a:
- for(;;)
- {if(! (len <= i$0))
- {var switch$0=0;
- if((i$0 + 2 | 0) <= len && 92 === caml_string_get(s,i$0))
- {var
- c$0=caml_string_get(s,i$0 + 1 | 0),
- _A_=124 === c$0?1:0,
- _B_=_A_ || (41 === c$0?1:0);
- if(_B_)switch$0 = 1}
- if(! switch$0)
- {var c$1=caml_string_get(s,i$0);
- if(36 === c$1)
- var match=[0,1,i$0 + 1 | 0];
- else
- {var switch$1=0;
- if(91 <= c$1)
- if(95 <= c$1)
- switch$1 = 1;
- else
- switch(c$1 - 91 | 0)
- {case 0:
- var i$4=i$0 + 1 | 0,switch$2=0;
- if(i$4 < len && 94 === caml_string_get(s,i$4))
- {var
- match$3=regexpclass1(i$4 + 1 | 0),
- j$3=match$3[2],
- c$4=match$3[1],
- match$1=[0,c$4,1,j$3];
- switch$2 = 1}
- if(! switch$2)
- var
- match$4=regexpclass1(i$4),
- j$4=match$4[2],
- c$5=match$4[1],
- match$1=[0,c$5,0,j$4];
- var
- j$1=match$1[3],
- compl=match$1[2],
- c$2=match$1[1],
- match=[0,[2,c$2,compl],j$1];
- break;
- case 1:
- var i$5=i$0 + 1 | 0;
- if(len <= i$5)
- var _C_=[0,_b_,i$5];
- else
- {var c$3=caml_string_get(s,i$5),switch$3=0;
- if(58 <= c$3)
- if(98 === c$3)
- var _C_=[0,2,i$5 + 1 | 0];
- else
- if(124 === c$3)switch$3 = 2;else switch$3 = 1;
- else
- {var switcher$0=c$3 - 40 | 0;
- if(1 < switcher$0 >>> 0)
- if(9 <= switcher$0)
- var _C_=[0,[9,c$3 - 48 | 0],i$5 + 1 | 0];
- else
- switch$3 = 1;
- else
- if(switcher$0)
- switch$3 = 2;
- else
- {var group_no=group_counter[1];
- group_counter[1]++;
- var
- match$2=regexp0(i$5 + 1 | 0),
- j$2=match$2[2],
- r$4=match$2[1],
- switch$4=0;
- if
- ((j$2 + 1 | 0)
- <
- len
- &&
- 92
- ===
- caml_string_get(s,j$2)
- &&
- 41
- ===
- caml_string_get(s,j$2 + 1 | 0))
- {var _C_=[0,[8,group_no,r$4],j$2 + 2 | 0];switch$4 = 1}
- if(! switch$4)
- var _C_=caml_call1(Stdlib[2],cst_group_not_closed_by)}}
- switch(switch$3)
- {case 1:var _C_=[0,[0,c$3],i$5 + 1 | 0];break;
- case 2:throw [0,Assert_failure,_c_]
- }}
- var match=_C_;
- break;
- case 2:switch$1 = 1;break;
- default:var match=[0,0,i$0 + 1 | 0]}
- else
- if(46 === c$1)
- var match=[0,[2,dotclass,0],i$0 + 1 | 0];
- else
- switch$1 = 1;
- if(switch$1)var match=[0,[0,c$1],i$0 + 1 | 0]}
- var j=match[2],r=match[1],r$0=r,j$0=j;
- for(;;)
- {if(! (len <= j$0))
- {var
- match$0=caml_string_get(s,j$0),
- switcher=match$0 - 42 | 0;
- if(! (1 < switcher >>> 0))
- {if(switcher)
- {var i$2=j$0 + 1 | 0,r$2=[6,r$0],r$0=r$2,j$0=i$2;continue}
- var i$3=j$0 + 1 | 0,r$3=[5,r$0],r$0=r$3,j$0=i$3;
- continue}
- if(21 === switcher)
- {var i$1=j$0 + 1 | 0,r$1=[7,r$0],r$0=r$1,j$0=i$1;continue}}
- var switch$5=0;
- if(typeof r$0 !== "number" && 0 === r$0[0])
- {var c=r$0[1];
- caml_call2(Stdlib_Buffer[12],sb[1],c);
- switch$5 = 1}
- if(! switch$5){flush(sb);sb[2] = [0,r$0,sb[2]]}
- var i$0=j$0;
- continue a}}}
- flush(sb);
- return [0,[3,caml_call1(Stdlib_List[9],sb[2])],i$0]}}
- function regexp0(i)
- {var match=regexp1(i),j=match[2],r=match[1],r1=r,i$0=j;
- for(;;)
- {if
- ((i$0 + 2 | 0)
- <=
- len
- &&
- 92
- ===
- caml_string_get(s,i$0)
- &&
- 124
- ===
- caml_string_get(s,i$0 + 1 | 0))
- {var
- match$0=regexp1(i$0 + 2 | 0),
- i$1=match$0[2],
- r2=match$0[1],
- r1$0=[4,r1,r2],
- r1=r1$0,
- i$0=i$1;
- continue}
- return [0,r1,i$0]}}
- var match=regexp0(0),j=match[2],r=match[1];
- return j === len
- ?r
- :caml_call1(Stdlib[2],cst_spurious_in_regular_expres)},
- regexp=function(e){return compile(0,parse(e))},
- regexp_case_fold=function(e){return compile(1,parse(e))},
- quote=
- function(s)
- {var
- len=caml_ml_string_length(s),
- buf=caml_create_bytes(2 * len | 0),
- pos=[0,0],
- _w_=len - 1 | 0,
- _v_=0;
- if(! (_w_ < 0))
- {var i=_v_;
- for(;;)
- {var c=caml_string_get(s,i),_x_=c - 63 | 0,switch$0=0;
- if(31 < _x_ >>> 0)
- {var _y_=_x_ + 27 | 0;
- if(! (10 < _y_ >>> 0))
- switch(_y_){case 0:case 6:case 7:case 10:switch$0 = 1;break}}
- else
- if(26 < _x_ - 1 >>> 0)switch$0 = 1;
- if(switch$0)
- {caml_bytes_set(buf,pos[1],92);
- caml_bytes_set(buf,pos[1] + 1 | 0,c);
- pos[1] = pos[1] + 2 | 0}
- else
- {caml_bytes_set(buf,pos[1],c);pos[1] = pos[1] + 1 | 0}
- var _z_=i + 1 | 0;
- if(_w_ !== i){var i=_z_;continue}
- break}}
- return caml_call3(Stdlib_Bytes[8],buf,0,pos[1])},
- regexp_string=function(s){return compile(0,[1,s])},
- regexp_string_case_fold=function(s){return compile(1,[1,s])},
- last_search_result=[0,[0]],
- string_match=
- function(re,s,pos)
- {var res=runtime.re_string_match(re,s,pos);
- last_search_result[1] = res;
- return 0 < res.length - 1?1:0},
- string_partial_match=
- function(re,s,pos)
- {var res=runtime.re_partial_match(re,s,pos);
- last_search_result[1] = res;
- return 0 < res.length - 1?1:0},
- search_forward=
- function(re,s,pos)
- {var res=runtime.re_search_forward(re,s,pos);
- last_search_result[1] = res;
- if(0 === res.length - 1)throw Stdlib[8];
- return caml_check_bound(res,0)[1]},
- search_backward=
- function(re,s,pos)
- {var res=runtime.re_search_backward(re,s,pos);
- last_search_result[1] = res;
- if(0 === res.length - 1)throw Stdlib[8];
- return caml_check_bound(res,0)[1]},
- group_beginning=
- function(n)
- {var n2=n + n | 0;
- if(0 <= n && ! (last_search_result[1].length - 1 <= n2))
- {var pos=caml_check_bound(last_search_result[1],n2)[1 + n2];
- if(-1 === pos)throw Stdlib[8];
- return pos}
- return caml_call1(Stdlib[1],cst_Str_group_beginning)},
- group_end=
- function(n)
- {var n2=n + n | 0;
- if(0 <= n && ! (last_search_result[1].length - 1 <= n2))
- {var
- _u_=n2 + 1 | 0,
- pos=caml_check_bound(last_search_result[1],_u_)[1 + _u_];
- if(-1 === pos)throw Stdlib[8];
- return pos}
- return caml_call1(Stdlib[1],cst_Str_group_end)},
- matched_group=
- function(n,txt)
- {var n2=n + n | 0;
- if(0 <= n && ! (last_search_result[1].length - 1 <= n2))
- {var
- b=caml_check_bound(last_search_result[1],n2)[1 + n2],
- _t_=n2 + 1 | 0,
- e=caml_check_bound(last_search_result[1],_t_)[1 + _t_];
- if(-1 === b)throw Stdlib[8];
- return caml_call3(Stdlib_String[15],txt,b,e - b | 0)}
- return caml_call1(Stdlib[1],cst_Str_matched_group)},
- match_beginning=function(param){return group_beginning(0)},
- match_end=function(param){return group_end(0)},
- matched_string=function(txt){return matched_group(0,txt)},
- replace_matched=
- function(repl,matched)
- {return runtime.re_replacement_text
- (repl,last_search_result[1],matched)},
- substitute_first=
- function(expr,repl_fun,text)
- {try
- {var
- pos=search_forward(expr,text,0),
- _o_=[0,string_after(text,match_end(0)),0],
- _p_=[0,caml_call1(repl_fun,text),_o_],
- _q_=[0,string_before(text,pos),_p_],
- _r_=caml_call2(Stdlib_String[6],cst$3,_q_);
- return _r_}
- catch(_s_)
- {_s_ = caml_wrap_exception(_s_);
- if(_s_ === Stdlib[8])return text;
- throw _s_}},
- opt_search_forward=
- function(re,s,pos)
- {try
- {var _m_=[0,search_forward(re,s,pos)];return _m_}
- catch(_n_)
- {_n_ = caml_wrap_exception(_n_);
- if(_n_ === Stdlib[8])return 0;
- throw _n_}},
- global_substitute=
- function(expr,repl_fun,text)
- {var accu=0,start=0,last_was_empty=0;
- for(;;)
- {var startpos=last_was_empty?start + 1 | 0:start;
- if(caml_ml_string_length(text) < startpos)
- var _k_=[0,string_after(text,start),accu];
- else
- {var match=opt_search_forward(expr,text,startpos);
- if(match)
- {var
- pos=match[1],
- start$0=match_end(0),
- repl_text=caml_call1(repl_fun,text),
- last_was_empty$0=start$0 === pos?1:0,
- accu$0=
- [0,
- repl_text,
- [0,
- caml_call3(Stdlib_String[15],text,start,pos - start | 0),
- accu]],
- accu=accu$0,
- start=start$0,
- last_was_empty=last_was_empty$0;
- continue}
- var _k_=[0,string_after(text,start),accu]}
- var _l_=caml_call1(Stdlib_List[9],_k_);
- return caml_call2(Stdlib_String[6],cst$4,_l_)}},
- global_replace=
- function(expr,repl,text)
- {return global_substitute
- (expr,function(_j_){return replace_matched(repl,_j_)},text)},
- replace_first=
- function(expr,repl,text)
- {return substitute_first
- (expr,function(_i_){return replace_matched(repl,_i_)},text)},
- opt_search_forward_progress=
- function(expr,text,start)
- {var match=opt_search_forward(expr,text,start);
- if(match)
- {var pos=match[1];
- return start < match_end(0)
- ?[0,pos]
- :start < caml_ml_string_length(text)
- ?opt_search_forward(expr,text,start + 1 | 0)
- :0}
- return 0},
- bounded_split=
- function(expr,text,num)
- {var
- start=string_match(expr,text,0)?match_end(0):0,
- accu=0,
- start$0=start,
- n=num;
- for(;;)
- {if(caml_ml_string_length(text) <= start$0)
- var _h_=accu;
- else
- if(1 === n)
- var _h_=[0,string_after(text,start$0),accu];
- else
- {var match=opt_search_forward_progress(expr,text,start$0);
- if(match)
- {var
- pos=match[1],
- n$0=n - 1 | 0,
- start$1=match_end(0),
- accu$0=
- [0,
- caml_call3(Stdlib_String[15],text,start$0,pos - start$0 | 0),
- accu],
- accu=accu$0,
- start$0=start$1,
- n=n$0;
- continue}
- var _h_=[0,string_after(text,start$0),accu]}
- return caml_call1(Stdlib_List[9],_h_)}},
- split=function(expr,text){return bounded_split(expr,text,0)},
- bounded_split_delim=
- function(expr,text,num)
- {if(caml_string_equal(text,cst$5))return 0;
- var accu=0,start=0,n=num;
- for(;;)
- {if(caml_ml_string_length(text) < start)
- var _g_=accu;
- else
- if(1 === n)
- var _g_=[0,string_after(text,start),accu];
- else
- {var match=opt_search_forward_progress(expr,text,start);
- if(match)
- {var
- pos=match[1],
- n$0=n - 1 | 0,
- start$0=match_end(0),
- accu$0=
- [0,
- caml_call3(Stdlib_String[15],text,start,pos - start | 0),
- accu],
- accu=accu$0,
- start=start$0,
- n=n$0;
- continue}
- var _g_=[0,string_after(text,start),accu]}
- return caml_call1(Stdlib_List[9],_g_)}},
- split_delim=
- function(expr,text){return bounded_split_delim(expr,text,0)},
- bounded_full_split=
- function(expr,text,num)
- {var accu=0,start=0,n=num;
- for(;;)
- {if(caml_ml_string_length(text) <= start)
- var _f_=accu;
- else
- if(1 === n)
- var _f_=[0,[0,string_after(text,start)],accu];
- else
- {var match=opt_search_forward_progress(expr,text,start);
- if(match)
- {var pos=match[1],s=matched_string(text);
- if(start < pos)
- {var
- n$0=n - 1 | 0,
- start$0=match_end(0),
- accu$0=
- [0,
- [1,s],
- [0,
- [0,caml_call3(Stdlib_String[15],text,start,pos - start | 0)],
- accu]],
- accu=accu$0,
- start=start$0,
- n=n$0;
- continue}
- var
- n$1=n - 1 | 0,
- start$1=match_end(0),
- accu$1=[0,[1,s],accu],
- accu=accu$1,
- start=start$1,
- n=n$1;
- continue}
- var _f_=[0,[0,string_after(text,start)],accu]}
- return caml_call1(Stdlib_List[9],_f_)}},
- full_split=function(expr,text){return bounded_full_split(expr,text,0)},
- Str=
- [0,
- regexp,
- regexp_case_fold,
- quote,
- regexp_string,
- regexp_string_case_fold,
- string_match,
- search_forward,
- search_backward,
- string_partial_match,
- matched_string,
- match_beginning,
- match_end,
- matched_group,
- group_beginning,
- group_end,
- global_replace,
- replace_first,
- global_substitute,
- substitute_first,
- replace_matched,
- split,
- bounded_split,
- split_delim,
- bounded_split_delim,
- full_split,
- bounded_full_split,
- string_before,
- string_after,
- first_chars,
- last_chars];
- runtime.caml_register_global(27,Str,"Str");
- return}}
- (globalThis));
-
-
-//# 1 "../../.js/calendar/calendarLib.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_compare=runtime.caml_compare,
- caml_div=runtime.caml_div,
- caml_equal=runtime.caml_equal,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_int_compare=runtime.caml_int_compare,
- caml_lessthan=runtime.caml_lessthan,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_modf_float=runtime.caml_modf_float,
- caml_mul=runtime.caml_mul,
- caml_obj_tag=runtime.caml_obj_tag,
- caml_register_global=runtime.caml_register_global,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_get=runtime.caml_string_get,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_trampoline=runtime.caml_trampoline,
- caml_trampoline_return=runtime.caml_trampoline_return,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- function caml_call6(f,a0,a1,a2,a3,a4,a5)
- {return f.length == 6
- ?f(a0,a1,a2,a3,a4,a5)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_Not_a_valid_time_zone=caml_string_of_jsbytes("Not a valid time zone"),
- cst_Not_a_month=caml_string_of_jsbytes("Not a month"),
- cst_Not_a_day=caml_string_of_jsbytes("Not a day"),
- cst_from_business_bad_week=
- caml_string_of_jsbytes("from_business: bad week"),
- cst_from_business_bad_date=
- caml_string_of_jsbytes("from_business: bad date"),
- cst_Date_Out_of_bounds=caml_string_of_jsbytes("Date.Out_of_bounds"),
- cst_Date_Undefined=caml_string_of_jsbytes("Date.Undefined"),
- _bM_=[0,0,0],
- cst_Date_Period_Not_computable=
- caml_string_of_jsbytes("Date.Period.Not_computable"),
- cst_calendar$2=caml_string_of_jsbytes("calendar"),
- cst_calendar$1=caml_string_of_jsbytes("calendar"),
- cst_calendar$0=caml_string_of_jsbytes("calendar"),
- cst_calendar=caml_string_of_jsbytes("calendar"),
- cst_seconds_since_1970$1=caml_string_of_jsbytes("seconds_since_1970"),
- cst_century$0=caml_string_of_jsbytes("century"),
- cst_year$0=caml_string_of_jsbytes("year"),
- cst_month$0=caml_string_of_jsbytes("month"),
- cst_week$0=caml_string_of_jsbytes("week"),
- cst_day_of_year$0=caml_string_of_jsbytes("day_of_year"),
- cst_day_of_month$0=caml_string_of_jsbytes("day_of_month"),
- cst_day_of_week$0=caml_string_of_jsbytes("day_of_week"),
- cst_from_business$0=caml_string_of_jsbytes("from_business"),
- cst_time$0=caml_string_of_jsbytes("time"),
- cst_seconds_since_1970$0=caml_string_of_jsbytes("seconds_since_1970"),
- cst_century=caml_string_of_jsbytes("century"),
- cst_year=caml_string_of_jsbytes("year"),
- cst_month=caml_string_of_jsbytes("month"),
- cst_week=caml_string_of_jsbytes("week"),
- cst_day_of_year=caml_string_of_jsbytes("day_of_year"),
- cst_day_of_month=caml_string_of_jsbytes("day_of_month"),
- cst_day_of_week=caml_string_of_jsbytes("day_of_week"),
- cst_from_business=caml_string_of_jsbytes("from_business"),
- cst_time=caml_string_of_jsbytes("time"),
- cst_seconds_since_1970=caml_string_of_jsbytes("seconds_since_1970"),
- cst_second=caml_string_of_jsbytes("second"),
- cst_minute=caml_string_of_jsbytes("minute"),
- cst_hour=caml_string_of_jsbytes("hour"),
- cst_date=caml_string_of_jsbytes("date"),
- cst_Cannot_create_the=caml_string_of_jsbytes("Cannot create the "),
- cst_j_year_not_provided=caml_string_of_jsbytes("%j (year not provided)"),
- cst$5=caml_string_of_jsbytes("%:"),
- cst$4=caml_string_of_jsbytes("%::::"),
- cst_z$2=caml_string_of_jsbytes("z"),
- cst_z$3=caml_string_of_jsbytes(":::z"),
- cst_z$4=caml_string_of_jsbytes("::z"),
- cst_z$5=caml_string_of_jsbytes(":z"),
- cst_am=caml_string_of_jsbytes("am"),
- cst_pm=caml_string_of_jsbytes("pm"),
- cst$6=caml_string_of_jsbytes('"'),
- cst$7=caml_string_of_jsbytes('"'),
- cst_P=caml_string_of_jsbytes("%P"),
- cst_V=caml_string_of_jsbytes("%V"),
- cst_W=caml_string_of_jsbytes("%W"),
- cst_j=caml_string_of_jsbytes("%j"),
- cst_w=caml_string_of_jsbytes("%w"),
- cst$3=caml_string_of_jsbytes("%"),
- cst_AM$0=caml_string_of_jsbytes("AM"),
- cst_PM$0=caml_string_of_jsbytes("PM"),
- cst$8=caml_string_of_jsbytes('"'),
- cst$9=caml_string_of_jsbytes('"'),
- cst_p=caml_string_of_jsbytes("%p"),
- cst$0=caml_string_of_jsbytes("[\\+-]"),
- cst$1=caml_string_of_jsbytes("+"),
- cst$2=caml_string_of_jsbytes("-"),
- cst_either_week_or_year_is_not=
- caml_string_of_jsbytes(" (either week or year is not provided)"),
- cst_0_9_0_9_0_9=caml_string_of_jsbytes("[0-9][0-9]\\(\\.[0-9]*\\)?"),
- cst_z_z_z=caml_string_of_jsbytes("z\\|:z\\|::z"),
- cst_z=caml_string_of_jsbytes("::z"),
- cst_z$0=caml_string_of_jsbytes(":z"),
- cst_z$1=caml_string_of_jsbytes("z"),
- cst=caml_string_of_jsbytes("%"),
- cst_AM=caml_string_of_jsbytes("AM"),
- cst_PM=caml_string_of_jsbytes("PM"),
- cst_does_not_match_the_format=
- caml_string_of_jsbytes(" does not match the format "),
- cst_bad_format=caml_string_of_jsbytes("bad format: "),
- cst_January=caml_string_of_jsbytes("January"),
- cst_February=caml_string_of_jsbytes("February"),
- cst_March=caml_string_of_jsbytes("March"),
- cst_April=caml_string_of_jsbytes("April"),
- cst_May=caml_string_of_jsbytes("May"),
- cst_June=caml_string_of_jsbytes("June"),
- cst_July=caml_string_of_jsbytes("July"),
- cst_August=caml_string_of_jsbytes("August"),
- cst_September=caml_string_of_jsbytes("September"),
- cst_October=caml_string_of_jsbytes("October"),
- cst_November=caml_string_of_jsbytes("November"),
- cst_December=caml_string_of_jsbytes("December"),
- cst_Sunday=caml_string_of_jsbytes("Sunday"),
- cst_Monday=caml_string_of_jsbytes("Monday"),
- cst_Tuesday=caml_string_of_jsbytes("Tuesday"),
- cst_Wednesday=caml_string_of_jsbytes("Wednesday"),
- cst_Thursday=caml_string_of_jsbytes("Thursday"),
- cst_Friday=caml_string_of_jsbytes("Friday"),
- cst_Saturday=caml_string_of_jsbytes("Saturday"),
- cst_b=caml_string_of_jsbytes("%b"),
- cst_B=caml_string_of_jsbytes("%B"),
- cst_A=caml_string_of_jsbytes("%A"),
- cst_a_zA_Z=caml_string_of_jsbytes("[a-zA-Z]+"),
- cst_i=caml_string_of_jsbytes("%i"),
- cst_T=caml_string_of_jsbytes("%T"),
- cst_T$0=caml_string_of_jsbytes("%T"),
- cst_i_T=caml_string_of_jsbytes("%i %T"),
- cst_i_T$0=caml_string_of_jsbytes("%i %T"),
- cst_i_T$1=caml_string_of_jsbytes("%i %T"),
- cst_i_T$2=caml_string_of_jsbytes("%i %T"),
- cst_2_04=caml_string_of_jsbytes("2.04"),
- cst_dim_15_mai_2022_16_04_18_C=
- caml_string_of_jsbytes("dim. 15 mai 2022 16:04:18 CEST"),
- Stdlib_Hashtbl=global_data.Stdlib__Hashtbl,
- Unix=global_data.Unix,
- Assert_failure=global_data.Assert_failure,
- Stdlib=global_data.Stdlib,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_String=global_data.Stdlib__String,
- Str=global_data.Str,
- Stdlib_Buffer=global_data.Stdlib__Buffer,
- Stdlib_Format=global_data.Stdlib__Format,
- CamlinternalLazy=global_data.CamlinternalLazy,
- _b_=[0,0.001],
- _o_=[0,caml_string_of_jsbytes("src/time_Zone.ml"),52,4],
- _n_=[0,caml_string_of_jsbytes("src/time_Zone.ml"),58,34],
- _bp_=[0,caml_string_of_jsbytes("src/date.ml"),119,4],
- _bo_=[0,caml_string_of_jsbytes("src/date.ml"),122,4],
- _bg_=[0,-4713,12,31],
- _bh_=[0,3268,1,23],
- _bi_=[0,1582,10,14],
- _bj_=[0,1582,10,5],
- _b__=[0,31,59,90,120,151,181,212,243,273,304,334,365],
- _cH_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),429,6],
- _cG_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),230,4],
- _cF_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),167,6],
- _cE_=[0,caml_string_of_jsbytes("src/calendar_builder.ml"),67,4],
- _c__=[0,caml_string_of_jsbytes("src/printer.ml"),402,6],
- _c9_=[0,caml_string_of_jsbytes("src/printer.ml"),509,12],
- _c$_=[0,caml_string_of_jsbytes("src/printer.ml"),513,6],
- _c8_=[0,caml_string_of_jsbytes("src/printer.ml"),396,8],
- _c6_=[0,caml_string_of_jsbytes("src/printer.ml"),283,6],
- _c5_=[0,caml_string_of_jsbytes("src/printer.ml"),278,13],
- _c7_=[0,caml_string_of_jsbytes("src/printer.ml"),297,6],
- _cX_=[0,caml_string_of_jsbytes("src/printer.ml"),81,2],
- _a_=[0,caml_equal,caml_compare,Stdlib_Hashtbl[28]];
- function _c_(_zq_){_b_[1] = _zq_;return 0}
- function _d_(_zp_,_zo_){return Math.abs(_zp_ - _zo_) < _b_[1]?1:0}
- function _e_(_zn_,_zm_){return _d_(_zn_,_zm_)?0:_zn_ < _zm_?-1:1}
- var
- _f_=Stdlib_Hashtbl[28],
- CalendarLib_Utils=
- [0,
- _a_,
- [0,
- _d_,
- _e_,
- _f_,
- _c_,
- function(_zj_)
- {var _zk_=caml_modf_float(_zj_),_zl_=_zk_[1] < 0.5?0:1;
- return (_zk_[2] | 0) + _zl_ | 0}]];
- caml_register_global(208,CalendarLib_Utils,"CalendarLib.Utils");
- var
- _g_=[0,0],
- _h_=caml_call1(Unix[100],0),
- _i_=caml_call1(Unix[102],_h_)[3],
- _j_=caml_call1(Unix[103],_h_)[3] - _i_ | 0;
- function _k_(_zi_){return _g_[1]}
- function _l_(_zg_)
- {if(typeof _zg_ !== "number")
- {var _zh_=_zg_[1],_ze_=_zh_ < -12?1:0,_zf_=_ze_ || (11 < _zh_?1:0);
- if(_zf_)return caml_call1(Stdlib[1],cst_Not_a_valid_time_zone)}
- _g_[1] = _zg_;
- return 0}
- function _m_(_y__,_y9_)
- {function _y$_(_zd_,_zc_)
- {if(caml_lessthan(_zd_,_zc_))
- {if(typeof _zd_ === "number")
- if(_zd_)
- {if(typeof _zc_ !== "number")return _zc_[1] - _j_ | 0}
- else
- {if(typeof _zc_ !== "number")return _zc_[1];if(_zc_)return _j_}
- else
- if(typeof _zc_ !== "number")return _zc_[1] - _zd_[1] | 0;
- throw [0,Assert_failure,_n_]}
- throw [0,Assert_failure,_o_]}
- var
- _za_=
- caml_equal(_y__,_y9_)
- ?0
- :caml_lessthan(_y__,_y9_)?_y$_(_y__,_y9_):- _y$_(_y9_,_y__) | 0,
- _zb_=_za_ % 24 | 0;
- return -12 <= _zb_?11 < _zb_?_zb_ - 24 | 0:_zb_:_zb_ + 24 | 0}
- function _p_(_y8_){return _m_(0,_k_(0))}
- function _q_(_y7_){return _m_(_k_(0),0)}
- function _r_(_y3_)
- {var _y4_=1 === _k_(0)?1:0;
- if(_y4_)
- var _y5_=caml_call1(Unix[100],0),_y6_=caml_call1(Unix[103],_y5_)[9];
- else
- var _y6_=_y4_;
- return _y6_}
- function _s_(_y0_){var _y1_=_r_(0),_y2_=_y1_?1:_y1_;return _y2_}
- var
- CalendarLib_Time_Zone=
- [0,
- _k_,
- _l_,
- _m_,
- _p_,
- _q_,
- _r_,
- _s_,
- function(_yW_,_yV_,_yU_)
- {var _yX_=_k_(0);
- _l_(_yV_);
- try
- {var _yY_=caml_call1(_yW_,_yU_);_l_(_yX_);return _yY_}
- catch(_yZ_){_yZ_ = caml_wrap_exception(_yZ_);_l_(_yX_);throw _yZ_}}];
- caml_register_global(212,CalendarLib_Time_Zone,"CalendarLib.Time_Zone");
- var _t_=CalendarLib_Utils[1];
- function _u_(_yT_,_yS_,_yR_)
- {return _yT_
- +
- (3600 * caml_call2(CalendarLib_Time_Zone[3],_yS_,_yR_) | 0)
- |
- 0}
- function _v_(_yQ_)
- {return _u_(_yQ_,0,caml_call1(CalendarLib_Time_Zone[1],0))}
- function _w_(_yP_)
- {return _u_(_yP_,caml_call1(CalendarLib_Time_Zone[1],0),0)}
- function _x_(_yL_)
- {var _yM_=_v_(_yL_),_yN_=_yM_ / 86400 | 0,_yO_=_w_(_yM_ % 86400 | 0);
- return 0 <= _yM_?[0,_yO_,_yN_]:[0,_yO_ + 86400 | 0,_yN_ - 1 | 0]}
- function _y_(_yK_,_yJ_,_yI_)
- {return _w_(((_yK_ * 3600 | 0) + (_yJ_ * 60 | 0) | 0) + _yI_ | 0)}
- function _z_(_yE_,_yD_,_yC_,_yB_)
- {var
- _yF_=_yE_?_yE_[1]:_yE_,
- _yG_=_yD_?_yD_[1]:_yD_,
- _yH_=_yC_?_yC_[1]:_yC_;
- return _y_(_yF_,_yG_,_yH_)}
- function _A_(_yA_){return _w_(0)}
- function _B_(_yz_){return _w_(43200)}
- function _C_(_yw_)
- {var _yx_=caml_call1(Unix[100],0),_yy_=caml_call1(Unix[102],_yx_);
- return ((3600 * _yy_[3] | 0) + (60 * _yy_[2] | 0) | 0) + _yy_[1] | 0}
- function _D_(_yv_){return _v_(_yv_) / 3600 | 0}
- function _E_(_yu_){return (_v_(_yu_) % 3600 | 0) / 60 | 0}
- function _F_(_yt_){return _v_(_yt_) % 60 | 0}
- function _G_(_ys_){return _v_(_ys_) / 3600.}
- function _H_(_yr_){return _v_(_yr_) / 60.}
- function _I_(_yq_){return _v_(_yq_)}
- function _J_(_yn_)
- {var _yo_=_x_(_yn_),_yp_=_x_(_B_(0))[1];return _yo_[1] < _yp_?1:0}
- function _K_(_yk_)
- {var _yl_=_x_(_yk_),_ym_=_x_(_B_(0))[1];return _ym_ <= _yl_[1]?1:0}
- function _L_(_yj_){return _w_(_yj_ * 3600. | 0)}
- function _M_(_yi_){return _w_(_yi_ * 60. | 0)}
- function _N_(_yh_){return _w_(_yh_)}
- function _O_(_yg_){return _yg_}
- function _P_(_yf_){return _yf_}
- var _Q_=CalendarLib_Utils[2][5];
- function _R_(_ye_){return _ye_}
- var _S_=CalendarLib_Utils[1];
- function _T_(_yd_,_yc_,_yb_)
- {return ((_yd_ * 3600 | 0) + (_yc_ * 60 | 0) | 0) + _yb_ | 0}
- function _U_(_x9_,_x8_,_x7_,_x6_)
- {var
- _x__=_x9_?_x9_[1]:_x9_,
- _x$_=_x8_?_x8_[1]:_x8_,
- _ya_=_x7_?_x7_[1]:_x7_;
- return _T_(_x__,_x$_,_ya_)}
- function _V_(_x5_){return _x5_}
- function _W_(_x4_){return _x4_ * 3600 | 0}
- function _X_(_x3_){return _x3_ * 60 | 0}
- function _Y_(_x2_){return _x2_}
- var _Z_=0;
- function ___(_x1_,_x0_){return _x1_ + _x0_ | 0}
- function _$_(_xZ_,_xY_){return _xZ_ - _xY_ | 0}
- var _aa_=caml_mul,_ab_=caml_div;
- function _ac_(_xX_){return - _xX_ | 0}
- function _ad_(_xW_){return _xW_}
- function _ae_(_xV_){return _xV_ / 60.}
- function _af_(_xU_){return _xU_ / 3600.}
- var _ag_=_S_[3],_ah_=_S_[2],_ai_=_S_[1];
- function _aj_(_xT_,_xS_){return _xT_ + _xS_ | 0}
- function _ak_(_xR_,_xQ_){return _xR_ - _xQ_ | 0}
- function _al_(_xP_,_xO_){return _xP_ - _xO_ | 0}
- function _am_(_xN_,_xM_)
- {return 417088404 === _xM_
- ?_xN_ + 1 | 0
- :803994948 <= _xM_?_xN_ + 3600 | 0:_xN_ + 60 | 0}
- function _an_(_xL_,_xK_)
- {return 417088404 === _xK_
- ?_xL_ - 1 | 0
- :803994948 <= _xK_?_xL_ - 3600 | 0:_xL_ - 60 | 0}
- var
- CalendarLib_Time=
- [0,
- [0,_O_,_Q_,_P_,_R_],
- _y_,
- _z_,
- _C_,
- _A_,
- _B_,
- _u_,
- _v_,
- _w_,
- _x_,
- _D_,
- _E_,
- _F_,
- _I_,
- _H_,
- _G_,
- _t_[1],
- _t_[2],
- _t_[3],
- _J_,
- _K_,
- _N_,
- _M_,
- _L_,
- [0,
- _Z_,
- ___,
- _$_,
- _ac_,
- _ai_,
- _ah_,
- _ag_,
- _V_,
- _aa_,
- _ab_,
- _T_,
- _U_,
- _W_,
- _X_,
- _Y_,
- _ad_,
- _ae_,
- _af_],
- _aj_,
- _ak_,
- _al_,
- _am_,
- _an_];
- caml_register_global(213,CalendarLib_Time,"CalendarLib.Time");
- var _ao_=CalendarLib_Utils[2];
- function _ap_(_xJ_,_xI_,_xH_)
- {return _xJ_
- +
- (3600 * caml_call2(CalendarLib_Time_Zone[3],_xI_,_xH_) | 0)}
- function _aq_(_xG_)
- {return _ap_(_xG_,0,caml_call1(CalendarLib_Time_Zone[1],0))}
- function _ar_(_xF_)
- {return _ap_(_xF_,caml_call1(CalendarLib_Time_Zone[1],0),0)}
- function _as_(_xB_)
- {var
- _xC_=_aq_(_xB_),
- _xD_=(_xC_ | 0) / 86400 | 0,
- _xE_=_ar_(_xC_ % 86400.);
- return _xC_ < 0.?[0,_xE_ + 86400.,_xD_ - 1 | 0]:[0,_xE_,_xD_]}
- function _at_(_xA_,_xz_,_xy_)
- {return _ar_(((_xA_ * 3600 | 0) + (_xz_ * 60 | 0) | 0) + _xy_)}
- function _au_(_xu_,_xt_,_xs_,_xr_)
- {var _xv_=_xu_?_xu_[1]:_xu_,_xw_=_xt_?_xt_[1]:_xt_,_xx_=_xs_?_xs_[1]:0.;
- return _at_(_xv_,_xw_,_xx_)}
- function _av_(_xq_){return _ar_(0.)}
- function _aw_(_xp_){return _ar_(43200.)}
- function _ax_(_xm_)
- {var _xn_=caml_call1(Unix[101],0),_xo_=caml_call1(Unix[102],_xn_);
- return (((3600 * _xo_[3] | 0) + (60 * _xo_[2] | 0) | 0) + _xo_[1] | 0)
- +
- caml_modf_float(_xn_)[1]}
- function _ay_(_xl_){return (_aq_(_xl_) | 0) / 3600 | 0}
- function _az_(_xk_){return ((_aq_(_xk_) | 0) % 3600 | 0) / 60 | 0}
- function _aA_(_xj_){return _aq_(_xj_) % 60.}
- function _aB_(_xi_){return _aq_(_xi_) / 3600.}
- function _aC_(_xh_){return _aq_(_xh_) / 60.}
- function _aD_(_xg_){return _aq_(_xg_)}
- function _aE_(_xd_)
- {var _xe_=_as_(_xd_),_xf_=_as_(_aw_(0))[1];return _xe_[1] < _xf_?1:0}
- function _aF_(_xa_)
- {var _xb_=_as_(_xa_),_xc_=_as_(_aw_(0))[1];return _xc_ <= _xb_[1]?1:0}
- function _aG_(_w$_){return _ar_(_w$_ * 3600.)}
- function _aH_(_w__){return _ar_(_w__ * 60.)}
- function _aI_(_w9_){return _ar_(_w9_)}
- function _aJ_(_w8_){return _w8_}
- function _aK_(_w7_){return _w7_ | 0}
- function _aL_(_w6_){return _w6_}
- function _aM_(_w5_){return _w5_}
- var _aN_=CalendarLib_Utils[2];
- function _aO_(_w4_,_w3_,_w2_)
- {return ((_w4_ * 3600 | 0) + (_w3_ * 60 | 0) | 0) + _w2_}
- function _aP_(_wY_,_wX_,_wW_,_wV_)
- {var _wZ_=_wY_?_wY_[1]:_wY_,_w0_=_wX_?_wX_[1]:_wX_,_w1_=_wW_?_wW_[1]:0.;
- return _aO_(_wZ_,_w0_,_w1_)}
- function _aQ_(_wU_){return _wU_}
- function _aR_(_wT_){return _wT_ * 3600 | 0}
- function _aS_(_wS_){return _wS_ * 60 | 0}
- function _aT_(_wR_){return _wR_}
- var _aU_=0.;
- function _aV_(_wQ_,_wP_){return _wQ_ + _wP_}
- function _aW_(_wO_,_wN_){return _wO_ - _wN_}
- function _aX_(_wM_,_wL_){return _wM_ * _wL_}
- function _aY_(_wK_,_wJ_){return _wK_ / _wJ_}
- function _aZ_(_wI_){return - _wI_}
- function _a0_(_wH_){return _wH_}
- function _a1_(_wG_){return _wG_ / 60.}
- function _a2_(_wF_){return _wF_ / 3600.}
- var _a3_=_aN_[3],_a4_=_aN_[2],_a5_=_aN_[1];
- function _a6_(_wE_,_wD_){return _wE_ + _wD_}
- function _a7_(_wC_,_wB_){return _wC_ - _wB_}
- function _a8_(_wA_,_wz_){return _wA_ - _wz_}
- function _a9_(_wy_,_wx_)
- {return 417088404 === _wx_
- ?_wy_ + 1.
- :803994948 <= _wx_?_wy_ + 3600.:_wy_ + 60.}
- function _a__(_ww_,_wv_)
- {return 417088404 === _wv_
- ?_ww_ - 1.
- :803994948 <= _wv_?_ww_ - 3600.:_ww_ - 60.}
- var
- CalendarLib_Ftime=
- [0,
- [0,_aJ_,_aL_,_aK_,_aM_],
- _at_,
- _au_,
- _ax_,
- _av_,
- _aw_,
- _ap_,
- _aq_,
- _ar_,
- _as_,
- _ay_,
- _az_,
- _aA_,
- _aD_,
- _aC_,
- _aB_,
- _ao_[1],
- _ao_[2],
- _ao_[3],
- _aE_,
- _aF_,
- _aI_,
- _aH_,
- _aG_,
- [0,
- _aU_,
- _aV_,
- _aW_,
- _aZ_,
- _a5_,
- _a4_,
- _a3_,
- _aQ_,
- _aX_,
- _aY_,
- _aO_,
- _aP_,
- _aR_,
- _aS_,
- _aT_,
- _a0_,
- _a1_,
- _a2_],
- _a6_,
- _a7_,
- _a8_,
- _a9_,
- _a__];
- caml_register_global(214,CalendarLib_Ftime,"CalendarLib.Ftime");
- var
- _a$_=[248,cst_Date_Out_of_bounds,caml_fresh_oo_id(0)],
- _ba_=[248,cst_Date_Undefined,caml_fresh_oo_id(0)],
- _bb_=CalendarLib_Utils[1][2],
- _bc_=CalendarLib_Utils[1][1],
- _bd_=CalendarLib_Utils[1][3];
- function _be_(_wu_,_wt_){return caml_compare(_wu_,_wt_) < 0?1:0}
- function _bf_(_wl_,_wk_,_wj_)
- {if(0 <= _wk_)
- var
- _wm_=_wk_ - 1 | 0,
- _wn_=[0,_wl_ + (_wm_ / 12 | 0) | 0,(_wm_ % 12 | 0) + 1 | 0];
- else
- var _wn_=[0,_wl_,_wk_];
- var _wo_=_wn_[2],_wp_=_wn_[1];
- if(_be_(_bg_,[0,_wp_,_wo_,_wj_]) && _be_([0,_wp_,_wo_,_wj_],_bh_))
- {var
- _wq_=(14 - _wo_ | 0) / 12 | 0,
- _wr_=(_wp_ + 4800 | 0) - _wq_ | 0,
- _ws_=(_wo_ + (12 * _wq_ | 0) | 0) - 3 | 0;
- if(_be_(_bi_,[0,_wp_,_wo_,_wj_]))
- return (((((_wj_ + (((153 * _ws_ | 0) + 2 | 0) / 5 | 0) | 0)
- +
- (_wr_ * 365 | 0)
- |
- 0)
- +
- (_wr_ / 4 | 0)
- |
- 0)
- -
- (_wr_ / 100 | 0)
- |
- 0)
- +
- (_wr_ / 400 | 0)
- |
- 0)
- -
- 32045
- |
- 0;
- if(_be_([0,_wp_,_wo_,_wj_],_bj_))
- return (((_wj_ + (((153 * _ws_ | 0) + 2 | 0) / 5 | 0) | 0)
- +
- (_wr_ * 365 | 0)
- |
- 0)
- +
- (_wr_ / 4 | 0)
- |
- 0)
- -
- 32083
- |
- 0;
- throw _ba_}
- throw _a$_}
- function _bk_(_wg_,_wf_,_we_,_wd_)
- {var _wh_=_wf_?_wf_[1]:1,_wi_=_we_?_we_[1]:1;return _bf_(_wg_,_wh_,_wi_)}
- function _bl_(_wc_){return _bf_(_wc_,1,1)}
- function _bm_(_wb_,_wa_){return _bf_(_wb_,_wa_,1)}
- function _bn_(_v__,_v9_)
- {var _v$_=caml_call1(CalendarLib_Time_Zone[4],0) + _v9_ | 0;
- if(0 <= _v$_)
- {if(24 <= _v$_)
- {if(36 <= _v$_)throw [0,Assert_failure,_bo_];return _v__ + 1 | 0}
- return _v__}
- if(-13 < _v$_)return _v__ - 1 | 0;
- throw [0,Assert_failure,_bp_]}
- function _bq_(_v8_)
- {return _bn_
- ((_v8_ / 86400. | 0) + 2440588 | 0,
- caml_call1(Unix[102],_v8_)[3])}
- function _br_(_v7_,_v6_){return _bf_(_v7_,1,_v6_)}
- function _bs_(_v5_){return _bq_(caml_call1(Unix[100],0))}
- function _bt_(_v4_){return _v4_}
- function _bu_(_v3_){return _v3_}
- function _bv_(_v2_){return _v2_ + 2400001 | 0}
- function _bw_(_v1_){return _v1_ - 2400001 | 0}
- function _bx_(_vU_)
- {if(1582 < _vU_)
- {var _vV_=0 === (_vU_ % 4 | 0)?1:0;
- if(_vV_)
- var
- _vW_=0 !== (_vU_ % 100 | 0)?1:0,
- _vX_=_vW_ || (0 === (_vU_ % 400 | 0)?1:0);
- else
- var _vX_=_vV_;
- return _vX_}
- if(-45 < _vU_ && ! (-8 < _vU_))return 0 === (_vU_ % 3 | 0)?1:0;
- var
- _vY_=_vU_ <= -45?1:0,
- _vZ_=_vY_ || (8 <= _vU_?1:0),
- _v0_=_vZ_?0 === (_vU_ % 4 | 0)?1:0:_vZ_;
- return _v0_}
- function _by_(_vT_){return _vT_ < 2299161?1:0}
- function _bz_(_vS_){return 2299161 <= _vS_?1:0}
- function _bA_(_vP_)
- {if(_vP_ < 2299161)
- var _vQ_=_vP_ + 32082 | 0;
- else
- var
- _vR_=_vP_ + 32044 | 0,
- _vQ_=
- _vR_
- -
- (((((4 * _vR_ | 0) + 3 | 0) / 146097 | 0) * 146097 | 0) / 4 | 0)
- |
- 0;
- return _vQ_
- -
- ((1461 * (((4 * _vQ_ | 0) + 3 | 0) / 1461 | 0) | 0) / 4 | 0)
- |
- 0}
- function _bB_(_vN_)
- {var _vO_=_bA_(_vN_);
- return (_vO_
- -
- (((153 * (((5 * _vO_ | 0) + 2 | 0) / 153 | 0) | 0) + 2 | 0)
- /
- 5
- |
- 0)
- |
- 0)
- +
- 1
- |
- 0}
- function _bC_(_vL_)
- {var _vM_=((5 * _bA_(_vL_) | 0) + 2 | 0) / 153 | 0;
- return (_vM_ + 3 | 0) - (12 * (_vM_ / 10 | 0) | 0) | 0}
- function _bD_(_vK_){return _bC_(_vK_) - 1 | 0}
- function _bE_(_vE_)
- {if(_vE_ < 2299161)
- var _vG_=_vE_ + 32082 | 0,_vF_=0;
- else
- var
- _vI_=_vE_ + 32044 | 0,
- _vJ_=((4 * _vI_ | 0) + 3 | 0) / 146097 | 0,
- _vG_=_vI_ - ((_vJ_ * 146097 | 0) / 4 | 0) | 0,
- _vF_=_vJ_;
- var _vH_=((4 * _vG_ | 0) + 3 | 0) / 1461 | 0;
- return (((_vF_ * 100 | 0) + _vH_ | 0) - 4800 | 0)
- +
- ((((5 * (_vG_ - ((1461 * _vH_ | 0) / 4 | 0) | 0) | 0) + 2 | 0)
- /
- 153
- |
- 0)
- /
- 10
- |
- 0)
- |
- 0}
- function _bF_(_vD_){return (_vD_ + 1 | 0) % 7 | 0}
- function _bG_(_vC_){return _bF_(_vC_)}
- function _bH_(_vB_){return _vB_ - _bf_(_bE_(_vB_) - 1 | 0,12,31) | 0}
- function _bI_(_vy_)
- {var
- _vz_=
- ((((_vy_ + 31741 | 0) - (_vy_ % 7 | 0) | 0) % 146097 | 0) % 36524 | 0)
- %
- 1461
- |
- 0,
- _vA_=_vz_ / 1460 | 0;
- return ((((_vz_ - _vA_ | 0) % 365 | 0) + _vA_ | 0) / 7 | 0) + 1 | 0}
- function _bJ_(_vx_)
- {switch(_bD_(_vx_))
- {case 1:return _bx_(_bE_(_vx_))?29:28;
- case 3:
- case 5:
- case 8:
- case 10:return 30;
- default:return 31}}
- function _bK_(_vt_)
- {var _vu_=_bx_(_bE_(_vt_));
- if(_vu_)
- var _vv_=1 === _bD_(_vt_)?1:0,_vw_=_vv_?24 === _bB_(_vt_)?1:0:_vv_;
- else
- var _vw_=_vu_;
- return _vw_}
- function _bL_(_vn_,_vm_,_vl_)
- {try
- {var _vo_=_bf_(_vn_,_vm_,_vl_),_vp_=_bE_(_vo_) === _vn_?1:0;
- if(_vp_)
- var
- _vq_=_bC_(_vo_) === _vm_?1:0,
- _vr_=_vq_?_bB_(_vo_) === _vl_?1:0:_vq_;
- else
- var _vr_=_vp_;
- return _vr_}
- catch(_vs_)
- {_vs_ = caml_wrap_exception(_vs_);
- if(_vs_ !== _a$_ && _vs_ !== _ba_)throw _vs_;
- return 0}}
- function _bN_(_vk_,_vj_,_vi_){return [0,(12 * _vk_ | 0) + _vj_ | 0,_vi_]}
- function _bO_(_ve_,_vd_,_vc_,_vb_)
- {var
- _vf_=_ve_?_ve_[1]:_ve_,
- _vg_=_vd_?_vd_[1]:_vd_,
- _vh_=_vc_?_vc_[1]:_vc_;
- return _bN_(_vf_,_vg_,_vh_)}
- function _bP_(_va_){return [0,_bM_[1],_va_]}
- function _bQ_(_u$_){return [0,_bM_[1],7 * _u$_ | 0]}
- function _bR_(_u__){return [0,_u__,_bM_[2]]}
- function _bS_(_u9_){return [0,12 * _u9_ | 0,_bM_[2]]}
- function _bT_(_u8_,_u7_)
- {return [0,_u8_[1] + _u7_[1] | 0,_u8_[2] + _u7_[2] | 0]}
- function _bU_(_u6_,_u5_)
- {return [0,_u6_[1] - _u5_[1] | 0,_u6_[2] - _u5_[2] | 0]}
- function _bV_(_u4_){return [0,- _u4_[1] | 0,- _u4_[2] | 0]}
- function _bW_(_u2_,_u1_)
- {var _u3_=caml_int_compare(_u2_[1],_u1_[1]);
- return 0 === _u3_?caml_int_compare(_u2_[2],_u1_[2]):_u3_}
- function _bX_(_u0_,_uZ_){return 0 === _bW_(_u0_,_uZ_)?1:0}
- var
- _bZ_=[248,cst_Date_Period_Not_computable,caml_fresh_oo_id(0)],
- _bY_=Stdlib_Hashtbl[28];
- function _b0_(_uY_){if(0 === _uY_[1])return _uY_[2];throw _bZ_}
- function _b1_(_uX_){return _uX_[2]}
- function _b2_(_uW_){return [0,_uW_[1] / 12 | 0,_uW_[1] % 12 | 0,_uW_[2]]}
- function _b3_(_uP_,_uO_)
- {var
- _uQ_=_b2_(_uO_),
- _uR_=_uQ_[3],
- _uS_=_bB_(_uP_) + _uR_ | 0,
- _uT_=_uQ_[2],
- _uU_=_bC_(_uP_) + _uT_ | 0,
- _uV_=_uQ_[1];
- return _bf_(_bE_(_uP_) + _uV_ | 0,_uU_,_uS_)}
- function _b4_(_uN_,_uM_){return [0,_bM_[1],_uN_ - _uM_ | 0]}
- function _b5_(_uG_,_uF_)
- {var _uH_=(_uG_ - _uF_ | 0) / 31 | 0;
- for(;;)
- {if((_uF_ + (31 * _uH_ | 0) | 0) < _uG_)
- {var _uH_=_uH_ + 1 | 0;continue}
- var _uI_=_b3_(_uF_,_bR_(_uH_)),_uJ_=_uG_ - _uI_ | 0;
- if(0 <= _uJ_)
- {if(_bJ_(_uI_) <= _uJ_){var _uH_=_uH_ + 1 | 0;continue}
- var _uL_=[0,_uH_,_uJ_]}
- else
- var
- _uK_=_uH_ - 1 | 0,
- _uL_=[0,_uK_,_uJ_ + _bJ_(_b3_(_uF_,_bR_(_uK_))) | 0];
- return [0,_uL_[1],_uL_[2]]}}
- function _b6_(_uE_,_uD_){return _b3_(_uE_,_bV_(_uD_))}
- function _b7_(_uC_,_uB_)
- {return 969837588 <= _uB_
- ?992015837 <= _uB_?_b3_(_uC_,_bS_(1)):_b3_(_uC_,_bP_(7))
- :529348384 <= _uB_?_b3_(_uC_,_bR_(1)):_b3_(_uC_,_bP_(1))}
- function _b8_(_uA_,_uz_)
- {return 969837588 <= _uz_
- ?992015837 <= _uz_?_b3_(_uA_,_bS_(-1)):_b3_(_uA_,_bP_(-7))
- :529348384 <= _uz_?_b3_(_uA_,_bR_(-1)):_b3_(_uA_,_bP_(-1))}
- function _b9_(_ur_,_uq_)
- {var _us_=_ur_ - _uq_ | 0;
- if(_bx_(_ur_))
- var _ut_=1;
- else
- if(_bx_(_ur_ - 1 | 0))
- var
- _uw_=0 === (_us_ % 6 | 0)?1:0,
- _ut_=_uw_ || (0 === (_us_ % 17 | 0)?1:0);
- else
- if(_bx_(_ur_ - 2 | 0))
- var
- _ux_=0 === (_us_ % 11 | 0)?1:0,
- _ut_=_ux_ || (0 === (_us_ % 17 | 0)?1:0);
- else
- var _uy_=_bx_(_ur_ - 3 | 0),_ut_=_uy_?0 === (_us_ % 11 | 0)?1:0:_uy_;
- var _uu_=0 === (_us_ % 28 | 0)?1:0,_uv_=_uu_ || _ut_;
- return _uv_}
- var _b$_=_b__.slice();
- function _ca_(_un_,_um_)
- {var
- _uo_=_un_?_un_[1]:11,
- _up_=runtime.caml_check_bound(_b$_,_uo_)[1 + _uo_];
- if(_bx_(_um_) && 0 < _uo_)return _up_ + 1 | 0;
- return _up_}
- function _cb_(_uk_)
- {var _ul_=_bG_(_bf_(_uk_,1,1));
- return 3 === _ul_?_bx_(_uk_)?53:52:4 === _ul_?53:52}
- function _cc_(_uh_,_ug_)
- {var
- _ui_=_bf_(_ug_,1,1),
- _uj_=(_ui_ - (_ui_ % 7 | 0) | 0) + (7 * (_uh_ - 1 | 0) | 0) | 0;
- return [0,_uj_,6 + _uj_ | 0]}
- function _cd_(_uc_,_ub_,_ua_,_t$_)
- {var
- _ud_=_bf_(_uc_,_ub_ + 1 | 0,1),
- _ue_=_ua_ - _bF_(_ud_) | 0,
- _uf_=0 <= _ue_?_ue_ - 7 | 0:_ue_;
- return (_ud_ + (7 * _t$_ | 0) | 0) + _uf_ | 0}
- function _ce_(_t__)
- {return 0 === (_t__ % 100 | 0)?_t__ / 100 | 0:(_t__ / 100 | 0) + 1 | 0}
- function _cf_(_t9_)
- {return 0 === (_t9_ % 1000 | 0)?_t9_ / 1000 | 0:(_t9_ / 1000 | 0) + 1 | 0}
- function _cg_(_t8_){return ((_t8_ + 8 | 0) % 28 | 0) + 1 | 0}
- function _ch_(_t7_){return ((_t7_ + 2 | 0) % 15 | 0) + 1 | 0}
- function _ci_(_t6_){return (_t6_ % 19 | 0) + 1 | 0}
- function _cj_(_t3_)
- {var _t4_=(11 * (_ci_(_t3_) - 1 | 0) | 0) % 30 | 0;
- if(1582 < _t3_)
- {var _t5_=(_t3_ / 100 | 0) + 1 | 0;
- return caml_call1
- (Stdlib[18],
- (((_t4_ - ((3 * _t5_ | 0) / 4 | 0) | 0)
- +
- (((8 * _t5_ | 0) + 5 | 0) / 25 | 0)
- |
- 0)
- +
- 8
- |
- 0)
- %
- 30
- |
- 0)}
- return _t4_}
- function _ck_(_tT_)
- {var _tU_=_tT_ % 19 | 0;
- if(1582 < _tT_)
- var
- _tV_=_tT_ / 100 | 0,
- _tW_=
- ((((_tV_ - (_tV_ / 4 | 0) | 0)
- -
- (((8 * _tV_ | 0) + 13 | 0) / 25 | 0)
- |
- 0)
- +
- (19 * _tU_ | 0)
- |
- 0)
- +
- 15
- |
- 0)
- %
- 30
- |
- 0,
- _tX_=
- _tW_
- -
- caml_mul
- (_tW_ / 28 | 0,
- 1
- -
- caml_mul
- (caml_mul(_tW_ / 28 | 0,caml_div(29,_tW_ + 1 | 0)),
- (21 - _tU_ | 0) / 11 | 0)
- |
- 0)
- |
- 0,
- _tZ_=
- (((((_tT_ + (_tT_ / 4 | 0) | 0) + _tX_ | 0) + 2 | 0) - _tV_ | 0)
- +
- (_tV_ / 4 | 0)
- |
- 0)
- %
- 7
- |
- 0,
- _tY_=_tX_;
- else
- var
- _t2_=((19 * _tU_ | 0) + 15 | 0) % 30 | 0,
- _tZ_=((_tT_ + (_tT_ / 4 | 0) | 0) + _t2_ | 0) % 7 | 0,
- _tY_=_t2_;
- var _t0_=_tY_ - _tZ_ | 0,_t1_=3 + ((_t0_ + 40 | 0) / 44 | 0) | 0;
- return _bf_(_tT_,_t1_,(_t0_ + 28 | 0) - (31 * (_t1_ / 4 | 0) | 0) | 0)}
- function _cl_(_tS_){return _ck_(_tS_) - 48 | 0}
- function _cm_(_tR_){return _ck_(_tR_) - 47 | 0}
- function _cn_(_tQ_){return _ck_(_tQ_) - 46 | 0}
- function _co_(_tP_){return _ck_(_tP_) - 7 | 0}
- function _cp_(_tO_){return _ck_(_tO_) - 2 | 0}
- function _cq_(_tN_){return _ck_(_tN_) - 1 | 0}
- function _cr_(_tM_){return _ck_(_tM_) + 1 | 0}
- function _cs_(_tL_){return _ck_(_tL_) + 39 | 0}
- function _ct_(_tK_){return _ck_(_tK_) + 49 | 0}
- function _cu_(_tJ_){return _ck_(_tJ_) + 50 | 0}
- function _cv_(_tI_){return _ck_(_tI_) + 60 | 0}
- function _cw_(_tG_)
- {var _tH_=_bf_(_tG_[6] + 1900 | 0,_tG_[5] + 1 | 0,_tG_[4]);
- return _bn_(_tH_,_tG_[3])}
- function _cx_(_tB_)
- {var
- _tC_=_bH_(_tB_) - 1 | 0,
- _tD_=_bF_(_tB_),
- _tE_=_bE_(_tB_) - 1900 | 0,
- _tF_=_bC_(_tB_) - 1 | 0;
- return [0,0,0,0,_bB_(_tB_),_tF_,_tE_,_tD_,_tC_,0]}
- function _cy_(_tA_){return (_tA_ - 2440588 | 0) * 86400.}
- function _cz_(_tt_)
- {var _tu_=_bI_(_tt_),_tv_=_bE_(_tt_),_tw_=_bC_(_tt_);
- if(1 === _tw_)
- var _tx_=_tv_ - 1 | 0,_ty_=_tu_ === _cb_(_tx_)?_tx_:_tv_,_tz_=_ty_;
- else
- var _tz_=12 === _tw_?1 === _tu_?_tv_ + 1 | 0:_tv_:_tv_;
- return [0,_tz_,_tu_,_bG_(_tt_)]}
- function _cA_(_ts_){return 0 === _ts_?7:_ts_}
- function _cB_(_tk_,_tj_,_ti_)
- {var _tl_=_tj_ < 1?1:0,_tm_=_tl_ || (_cb_(_tk_) < _tj_?1:0);
- if(_tm_)caml_call1(Stdlib[1],cst_from_business_bad_week);
- try
- {var _tq_=_bf_(_tk_,1,1),_tn_=_tq_}
- catch(_tr_)
- {_tr_ = caml_wrap_exception(_tr_);
- if(_tr_ !== _a$_ && _tr_ !== _ba_)throw _tr_;
- var _tn_=caml_call1(Stdlib[1],cst_from_business_bad_date)}
- var _to_=_bF_(_tn_),_tp_=4 < _to_?_tj_:_tj_ - 1 | 0;
- return ((_tn_ + (_tp_ * 7 | 0) | 0) + _cA_(_ti_) | 0) - _to_ | 0}
- function _cC_(_th_)
- {if(0 < _th_ && ! (7 <= _th_))return _th_;
- return 7 === _th_?0:caml_call1(Stdlib[1],cst_Not_a_day)}
- function _cD_(_tg_){return _tg_ + 1 | 0}
- var
- CalendarLib_Date=
- [0,
- _a$_,
- _ba_,
- _bf_,
- _bk_,
- _bl_,
- _bm_,
- _bs_,
- _bt_,
- _bv_,
- _br_,
- _bJ_,
- _bG_,
- _bB_,
- _bH_,
- _bI_,
- _bD_,
- _bE_,
- _bu_,
- _bw_,
- _bc_,
- _bb_,
- _bd_,
- _bL_,
- _bK_,
- _bz_,
- _by_,
- _cx_,
- _cw_,
- _cy_,
- _bq_,
- _cz_,
- _cB_,
- _cA_,
- _cC_,
- _cD_,
- function(_tf_)
- {if(0 < _tf_ && ! (13 <= _tf_))return _tf_ - 1 | 0;
- return caml_call1(Stdlib[1],cst_Not_a_month)},
- [0,
- _bM_,
- _bT_,
- _bU_,
- _bV_,
- _bX_,
- _bW_,
- _bY_,
- _bN_,
- _bO_,
- _bS_,
- _bR_,
- _bQ_,
- _bP_,
- _bZ_,
- _b0_,
- _b1_,
- _b2_],
- _b3_,
- _b4_,
- _b5_,
- _b6_,
- _b7_,
- _b8_,
- _bx_,
- _b9_,
- _ca_,
- _cb_,
- _cc_,
- _cd_,
- _ce_,
- _cf_,
- _cg_,
- _ch_,
- _ci_,
- _cj_,
- _ck_,
- _cl_,
- _cm_,
- _cn_,
- _co_,
- _cp_,
- _cq_,
- _cr_,
- _cs_,
- _ct_,
- _cu_,
- _cv_];
- caml_register_global(215,CalendarLib_Date,"CalendarLib.Date");
- function _cI_(_p4_,_p3_)
- {function _oW_(_td_,_tc_)
- {var _te_=caml_call2(_p4_[20],_td_[1],_tc_[1]);
- return _te_?caml_call2(_p3_[17],_td_[2],_tc_[2]):_te_}
- function _oX_(_ta_,_s$_)
- {var _tb_=caml_call2(_p4_[21],_ta_[1],_s$_[1]);
- return 0 === _tb_?caml_call2(_p3_[18],_ta_[2],_s$_[2]):_tb_}
- var _oY_=Stdlib_Hashtbl[28];
- function _oZ_(_s7_,_s6_)
- {var
- _s8_=caml_call1(_p3_[10],_s6_),
- _s9_=_s8_[1],
- _s__=caml_call1(_p4_[37][13],_s8_[2]);
- return [0,caml_call2(_p4_[38],_s7_,_s__),_s9_]}
- function _o0_(_s2_,_s1_,_s0_)
- {var
- _s3_=caml_call2(CalendarLib_Time_Zone[3],_s1_,_s0_),
- _s4_=caml_call1(_p3_[25][13],_s3_),
- _s5_=caml_call2(_p3_[26],_s2_[2],_s4_);
- return _oZ_(_s2_[1],_s5_)}
- function _o1_(_sZ_)
- {return _o0_(_sZ_,caml_call1(CalendarLib_Time_Zone[1],0),0)}
- function _o2_(_sY_)
- {return _o0_(_sY_,0,caml_call1(CalendarLib_Time_Zone[1],0))}
- function _o3_(_sW_)
- {var _sX_=caml_call1(_p3_[1][1],0);
- return _o1_([0,_sW_,caml_call3(_p3_[2],0,0,_sX_)])}
- function _o4_(_sV_){return _o2_(_sV_)[1]}
- function _o5_(_sU_){return _o2_(_sU_)[2]}
- function _o6_(_sT_,_sS_){return _o1_([0,_sT_,_sS_])}
- function _o7_(_sP_)
- {var
- _sQ_=caml_call1(_p3_[6],0),
- _sR_=_o6_(caml_call3(_p4_[3],3268,1,22),_sQ_);
- return [0,_o6_(caml_call3(_p4_[3],-4712,1,1),_sQ_),_sR_]}
- var
- _o8_=caml_call3(CalendarLib_Time_Zone[8],_o7_,0,0),
- _o9_=_o8_[2],
- _o__=_o8_[1];
- function _o$_(_sM_,_sL_,_sK_,_sJ_,_sI_,_sH_)
- {var
- _sN_=caml_call3(_p3_[2],_sJ_,_sI_,_sH_),
- _sO_=_o6_(caml_call3(_p4_[3],_sM_,_sL_,_sK_),_sN_),
- _sF_=0 <= _oX_(_sO_,_o__)?1:0,
- _sG_=_sF_?_oX_(_sO_,_o9_) <= 0?1:0:_sF_;
- if(_sG_)return _sO_;
- throw _p4_[1]}
- function _pa_(_sz_,_sy_,_sx_,_sw_,_sv_,_su_,_st_)
- {var
- _sA_=_sy_?_sy_[1]:1,
- _sB_=_sx_?_sx_[1]:1,
- _sC_=_sw_?_sw_[1]:_sw_,
- _sD_=_sv_?_sv_[1]:_sv_,
- _sE_=_su_?_su_[1]:caml_call1(_p3_[1][1],0);
- return _o$_(_sz_,_sA_,_sB_,_sC_,_sD_,_sE_)}
- function _pb_(_sp_)
- {var
- _sq_=caml_call1(Unix[101],0),
- _sr_=caml_call1(Unix[102],_sq_),
- _ss_=caml_call1(_p3_[1][2],_sr_[1] + caml_modf_float(_sq_)[1]);
- return _o2_
- (_o$_
- (_sr_[6] + 1900 | 0,
- _sr_[5] + 1 | 0,
- _sr_[4],
- _sr_[3],
- _sr_[2],
- _ss_))}
- function _pc_(_sl_)
- {var
- _sm_=caml_modf_float(_sl_),
- _sn_=caml_call1(_p3_[1][2],_sm_[1] * 86400. + 43200.),
- _so_=caml_call1(_p3_[22],_sn_);
- return _o1_([0,caml_call1(_p4_[8],_sm_[2] | 0),_so_])}
- function _pd_(_sk_){return _pc_(_sk_ + 2400000.5)}
- function _pe_(_sg_)
- {var
- _sh_=_o2_(_sg_),
- _si_=caml_call1(_p3_[14],_sh_[2]),
- _sj_=caml_call1(_p3_[1][4],_si_) / 86400.;
- return caml_call1(_p4_[18],_sh_[1]) + _sj_ - 0.5}
- function _pf_(_sf_){return _pe_(_sf_) - 2400000.5}
- function _pg_(_sd_)
- {var _se_=_o4_(_sd_);return caml_call1(_p4_[11],_se_)}
- function _ph_(_sb_)
- {var _sc_=_o4_(_sb_);return caml_call1(_p4_[12],_sc_)}
- function _pi_(_r$_)
- {var _sa_=_o4_(_r$_);return caml_call1(_p4_[13],_sa_)}
- function _pj_(_r9_)
- {var _r__=_o4_(_r9_);return caml_call1(_p4_[14],_r__)}
- function _pk_(_r7_)
- {var _r8_=_o4_(_r7_);return caml_call1(_p4_[15],_r8_)}
- function _pl_(_r5_)
- {var _r6_=_o4_(_r5_);return caml_call1(_p4_[16],_r6_)}
- function _pm_(_r3_)
- {var _r4_=_o4_(_r3_);return caml_call1(_p4_[17],_r4_)}
- function _pn_(_r1_)
- {var _r2_=_o5_(_r1_);return caml_call1(_p3_[11],_r2_)}
- function _po_(_rZ_)
- {var _r0_=_o5_(_rZ_);return caml_call1(_p3_[12],_r0_)}
- function _pp_(_rX_)
- {var _rY_=_o5_(_rX_);return caml_call1(_p3_[13],_rY_)}
- function _pq_(_rV_)
- {var _rW_=caml_call1(_p3_[1][1],_rV_[1]);
- return _o$_
- (_rV_[6] + 1900 | 0,
- _rV_[5] + 1 | 0,
- _rV_[4],
- _rV_[3],
- _rV_[2],
- _rW_)}
- function _pr_(_rI_)
- {var
- _rJ_=_o4_(_rI_),
- _rK_=caml_call1(_p4_[27],_rJ_),
- _rL_=_o5_(_rI_),
- _rM_=_rK_[9],
- _rN_=_rK_[8],
- _rO_=_rK_[7],
- _rP_=_rK_[6],
- _rQ_=_rK_[5],
- _rR_=_rK_[4],
- _rS_=caml_call1(_p3_[11],_rL_),
- _rT_=caml_call1(_p3_[12],_rL_),
- _rU_=caml_call1(_p3_[13],_rL_);
- return [0,
- caml_call1(_p3_[1][3],_rU_),
- _rT_,
- _rS_,
- _rR_,
- _rQ_,
- _rP_,
- _rO_,
- _rN_,
- _rM_]}
- function _ps_(_rH_){return _pc_(_rH_ / 86400. + 2440587.5)}
- function _pt_(_rG_){return (_pe_(_rG_) - 2440587.5) * 86400.}
- function _pu_(_rE_)
- {var _rF_=_o4_(_rE_);return caml_call1(_p4_[24],_rF_)}
- function _pv_(_rC_)
- {var _rD_=_o4_(_rC_);return caml_call1(_p4_[25],_rD_)}
- function _pw_(_rA_)
- {var _rB_=_o4_(_rA_);return caml_call1(_p4_[26],_rB_)}
- function _px_(_ry_)
- {var _rz_=_o5_(_ry_);return caml_call1(_p3_[20],_rz_)}
- function _py_(_rw_)
- {var _rx_=_o5_(_rw_);return caml_call1(_p3_[21],_rx_)}
- function _pz_(_rt_)
- {function _rj_(_ru_)
- {if(_ru_ < 86400.)return [0,0,_ru_];
- var _rv_=_rj_(_ru_ - 86400.);
- return [0,_rv_[1] + 1 | 0,_rv_[2]]}
- var
- _rk_=caml_call1(_p3_[25][8],_rt_[2]),
- _rl_=caml_call1(_p3_[1][4],_rk_);
- if(0. <= _rl_)
- var _rm_=_rj_(_rl_),_ro_=_rm_[2],_rn_=_rm_[1];
- else
- var
- _rs_=_rj_(- _rl_),
- _ro_=- _rs_[2] + 86400.,
- _rn_=- (_rs_[1] + 1 | 0) | 0;
- if(0. <= _ro_ && _ro_ < 86400.)
- {var
- _rp_=caml_call1(_p3_[1][2],_ro_),
- _rq_=caml_call1(_p3_[25][15],_rp_),
- _rr_=caml_call1(_p4_[37][13],_rn_);
- return [0,caml_call2(_p4_[37][2],_rt_[1],_rr_),_rq_]}
- throw [0,Assert_failure,_cH_]}
- var _pA_=[0,_p4_[37][1],_p3_[25][1]];
- function _pB_(_rh_,_rg_,_rf_,_re_,_rd_,_rc_)
- {var _ri_=caml_call3(_p3_[25][11],_re_,_rd_,_rc_);
- return _pz_([0,caml_call3(_p4_[37][8],_rh_,_rg_,_rf_),_ri_])}
- function _pC_(_q7_,_q6_,_q5_,_q4_,_q3_,_q2_,_q1_)
- {var
- _q8_=_q7_?_q7_[1]:_q7_,
- _q9_=_q6_?_q6_[1]:_q6_,
- _q__=_q5_?_q5_[1]:_q5_,
- _q$_=_q4_?_q4_[1]:_q4_,
- _ra_=_q3_?_q3_[1]:_q3_,
- _rb_=_q2_?_q2_[1]:caml_call1(_p3_[1][1],0);
- return _pB_(_q8_,_q9_,_q__,_q$_,_ra_,_rb_)}
- function _pD_(_qZ_)
- {var _q0_=_pA_[2];return [0,caml_call1(_p4_[37][10],_qZ_),_q0_]}
- function _pE_(_qX_)
- {var _qY_=_pA_[2];return [0,caml_call1(_p4_[37][11],_qX_),_qY_]}
- function _pF_(_qV_)
- {var _qW_=_pA_[2];return [0,caml_call1(_p4_[37][12],_qV_),_qW_]}
- function _pG_(_qT_)
- {var _qU_=_pA_[2];return [0,caml_call1(_p4_[37][13],_qT_),_qU_]}
- function _pH_(_qR_)
- {var _qS_=caml_call1(_p3_[25][13],_qR_);return _pz_([0,_pA_[1],_qS_])}
- function _pI_(_qP_)
- {var _qQ_=caml_call1(_p3_[25][14],_qP_);return _pz_([0,_pA_[1],_qQ_])}
- function _pJ_(_qN_)
- {var _qO_=caml_call1(_p3_[25][15],_qN_);return _pz_([0,_pA_[1],_qO_])}
- function _pK_(_qL_,_qK_)
- {var _qM_=caml_call2(_p3_[25][2],_qL_[2],_qK_[2]);
- return _pz_([0,caml_call2(_p4_[37][2],_qL_[1],_qK_[1]),_qM_])}
- function _pL_(_qI_,_qH_)
- {var _qJ_=caml_call2(_p3_[25][3],_qI_[2],_qH_[2]);
- return _pz_([0,caml_call2(_p4_[37][3],_qI_[1],_qH_[1]),_qJ_])}
- function _pM_(_qF_)
- {var _qG_=caml_call1(_p3_[25][4],_qF_[2]);
- return _pz_([0,caml_call1(_p4_[37][4],_qF_[1]),_qG_])}
- function _pN_(_qD_,_qC_)
- {var _qE_=caml_call2(_p4_[37][6],_qD_[1],_qC_[1]);
- return 0 === _qE_?caml_call2(_p3_[25][6],_qD_[2],_qC_[2]):_qE_}
- function _pO_(_qA_,_qz_)
- {var _qB_=caml_call2(_p4_[37][5],_qA_[1],_qz_[1]);
- return _qB_?caml_call2(_p3_[25][5],_qA_[2],_qz_[2]):_qB_}
- var _pP_=Stdlib_Hashtbl[28];
- function _pQ_(_qy_){return _qy_[1]}
- function _pR_(_qx_){return [0,_qx_,_pA_[2]]}
- function _pS_(_qw_){return [0,_pA_[1],_qw_]}
- var _pT_=_p4_[37][14];
- function _pU_(_qs_,_qr_)
- {var
- _qt_=_qr_[2],
- _qu_=caml_call1(_qs_,_qr_[1]) * 24 | 0,
- _qv_=caml_call1(_p3_[25][13],_qu_);
- return caml_call2(_p3_[25][2],_qv_,_qt_)}
- function _pV_(_qq_){return _pU_(_p4_[37][15],_qq_)}
- function _pW_(_qp_){return _pU_(_p4_[37][16],_qp_)}
- function _pX_(_qm_)
- {var
- _qn_=caml_call1(_p4_[37][17],_qm_[1]),
- _qo_=caml_call1(_p3_[25][16],_qm_[2]);
- return [0,_qn_[1],_qn_[2],_qn_[3],_qo_]}
- function _pY_(_qk_,_qj_)
- {var _ql_=caml_call2(_p3_[26],_qk_[2],_qj_[2]);
- return _oZ_(caml_call2(_p4_[38],_qk_[1],_qj_[1]),_ql_)}
- function _pZ_(_qi_,_qh_){return _pY_(_qi_,_pM_(_qh_))}
- function _p0_(_qf_,_qe_)
- {var _qg_=caml_call2(_p3_[27],_qf_[2],_qe_[2]);
- return _pz_([0,caml_call2(_p4_[39],_qf_[1],_qe_[1]),_qg_])}
- function _p1_(_qc_,_qb_)
- {var _qd_=caml_call2(_p3_[27],_qc_[2],_qb_[2]);
- return _pz_([0,caml_call2(_p4_[40],_qc_[1],_qb_[1]),_qd_])}
- function _p2_(_p__,_p9_)
- {var switch$0=0;
- if(529348384 <= _p9_)
- {if(803994948 === _p9_)switch$0 = 1}
- else
- if(127686388 <= _p9_)switch$0 = 1;
- if(switch$0)
- {var _p$_=caml_call2(_p3_[29],_p__[2],_p9_);
- return _oZ_(_p__[1],_p$_)}
- var _qa_=_p__[2];
- return _oZ_(caml_call2(_p4_[42],_p__[1],_p9_),_qa_)}
- return [0,
- _p4_,
- _p3_,
- _o$_,
- _pa_,
- _o6_,
- _pb_,
- _pc_,
- _pd_,
- _o0_,
- _o1_,
- _o2_,
- _pg_,
- _ph_,
- _pi_,
- _pj_,
- _pk_,
- _pl_,
- _pm_,
- _pe_,
- _pf_,
- _pn_,
- _po_,
- _pp_,
- _oW_,
- _oX_,
- _oY_,
- _pu_,
- _pv_,
- _pw_,
- _px_,
- _py_,
- _pr_,
- _pq_,
- _pt_,
- _ps_,
- _o3_,
- _o4_,
- _o5_,
- [0,
- _pA_,
- _pK_,
- _pL_,
- _pM_,
- _pO_,
- _pN_,
- _pP_,
- _pB_,
- _pC_,
- _pD_,
- _pE_,
- _pF_,
- _pG_,
- _pH_,
- _pI_,
- _pJ_,
- _pR_,
- _pS_,
- _pQ_,
- _pT_,
- _pV_,
- _pW_,
- _pX_],
- _pY_,
- _p0_,
- _p1_,
- _pZ_,
- _p2_,
- function(_p6_,_p5_)
- {var switch$0=0;
- if(529348384 <= _p5_)
- {if(803994948 === _p5_)switch$0 = 1}
- else
- if(127686388 <= _p5_)switch$0 = 1;
- if(switch$0)
- {var _p7_=caml_call2(_p3_[30],_p6_[2],_p5_);
- return _oZ_(_p6_[1],_p7_)}
- var _p8_=_p6_[2];
- return _oZ_(caml_call2(_p4_[43],_p6_[1],_p5_),_p8_)}]}
- var
- CalendarLib_Calendar_builder=
- [0,
- function(_lJ_,_lI_)
- {var _kF_=CalendarLib_Utils[2];
- function _kG_(_oV_,_oU_,_oT_)
- {return _oV_ + caml_call2(CalendarLib_Time_Zone[3],_oU_,_oT_) / 24.}
- function _kH_(_oS_)
- {return _kG_(_oS_,caml_call1(CalendarLib_Time_Zone[1],0),0)}
- function _kI_(_oR_)
- {return _kG_(_oR_,0,caml_call1(CalendarLib_Time_Zone[1],0))}
- function _kJ_(_oQ_){return _kH_(caml_call1(_lJ_[18],_oQ_)) - 0.5}
- function _kK_(_oO_)
- {var _oP_=_kI_(_oO_) + 0.5 | 0;return caml_call1(_lJ_[8],_oP_)}
- function _kL_(_oL_)
- {var _oM_=caml_modf_float(_kI_(_oL_) + 0.5)[1] * 86400.;
- if(_oM_ < 86400.)
- {var _oN_=caml_call1(_lI_[1][2],_oM_);
- return caml_call1(_lI_[22],_oN_)}
- throw [0,Assert_failure,_cE_]}
- function _kM_(_oI_,_oH_)
- {var
- _oJ_=caml_call1(_lI_[14],_oH_),
- _oK_=caml_call1(_lI_[1][4],_oJ_) / 86400.;
- return _kH_(caml_call1(_lJ_[18],_oI_) + _oK_) - 0.5}
- function _kN_(_oE_,_oD_,_oC_,_oB_,_oA_,_oz_)
- {var
- _oF_=caml_call3(_lI_[2],_oB_,_oA_,_oz_),
- _oG_=_kM_(caml_call3(_lJ_[3],_oE_,_oD_,_oC_),_oF_),
- _ox_=0. <= _oG_?1:0,
- _oy_=_ox_?_oG_ < 2914695.?1:0:_ox_;
- if(_oy_)return _oG_;
- throw _lJ_[1]}
- function _kO_(_or_,_oq_,_op_,_oo_,_on_,_om_,_ol_)
- {var
- _os_=_oq_?_oq_[1]:1,
- _ot_=_op_?_op_[1]:1,
- _ou_=_oo_?_oo_[1]:_oo_,
- _ov_=_on_?_on_[1]:_on_,
- _ow_=_om_?_om_[1]:caml_call1(_lI_[1][1],0);
- return _kN_(_or_,_os_,_ot_,_ou_,_ov_,_ow_)}
- function _kP_(_oh_)
- {var
- _oi_=caml_call1(Unix[101],0),
- _oj_=caml_call1(Unix[102],_oi_),
- _ok_=caml_call1(_lI_[1][2],_oj_[1] + caml_modf_float(_oi_)[1]);
- return _kI_
- (_kN_
- (_oj_[6] + 1900 | 0,
- _oj_[5] + 1 | 0,
- _oj_[4],
- _oj_[3],
- _oj_[2],
- _ok_))}
- function _kQ_(_og_){return _kH_(_og_)}
- function _kR_(_of_){return _kH_(_of_) + 2400000.5}
- function _kS_(_oe_){return _kI_(_oe_)}
- function _kT_(_od_){return _kI_(_od_) - 2400000.5}
- function _kU_(_ob_)
- {var _oc_=_kK_(_ob_);return caml_call1(_lJ_[11],_oc_)}
- function _kV_(_n$_)
- {var _oa_=_kK_(_n$_);return caml_call1(_lJ_[12],_oa_)}
- function _kW_(_n9_)
- {var _n__=_kK_(_n9_);return caml_call1(_lJ_[13],_n__)}
- function _kX_(_n7_)
- {var _n8_=_kK_(_n7_);return caml_call1(_lJ_[14],_n8_)}
- function _kY_(_n5_)
- {var _n6_=_kK_(_n5_);return caml_call1(_lJ_[15],_n6_)}
- function _kZ_(_n3_)
- {var _n4_=_kK_(_n3_);return caml_call1(_lJ_[16],_n4_)}
- function _k0_(_n1_)
- {var _n2_=_kK_(_n1_);return caml_call1(_lJ_[17],_n2_)}
- function _k1_(_nZ_)
- {var _n0_=_kL_(_nZ_);return caml_call1(_lI_[11],_n0_)}
- function _k2_(_nX_)
- {var _nY_=_kL_(_nX_);return caml_call1(_lI_[12],_nY_)}
- function _k3_(_nV_)
- {var _nW_=_kL_(_nV_);return caml_call1(_lI_[13],_nW_)}
- function _k4_(_nT_)
- {var _nU_=caml_call1(_lI_[1][1],_nT_[1]);
- return _kN_
- (_nT_[6] + 1900 | 0,
- _nT_[5] + 1 | 0,
- _nT_[4],
- _nT_[3],
- _nT_[2],
- _nU_)}
- function _k5_(_nG_)
- {var
- _nH_=_kK_(_nG_),
- _nI_=caml_call1(_lJ_[27],_nH_),
- _nJ_=_kL_(_nG_),
- _nK_=_nI_[9],
- _nL_=_nI_[8],
- _nM_=_nI_[7],
- _nN_=_nI_[6],
- _nO_=_nI_[5],
- _nP_=_nI_[4],
- _nQ_=caml_call1(_lI_[11],_nJ_),
- _nR_=caml_call1(_lI_[12],_nJ_),
- _nS_=caml_call1(_lI_[13],_nJ_);
- return [0,
- caml_call1(_lI_[1][3],_nS_),
- _nR_,
- _nQ_,
- _nP_,
- _nO_,
- _nN_,
- _nM_,
- _nL_,
- _nK_]}
- function _k6_(_nF_){return _kH_(_nF_ / 86400. + 2440587.5)}
- function _k7_(_nE_){return (_kI_(_nE_) - 2440587.5) * 86400.}
- function _k8_(_nC_)
- {var _nD_=_kK_(_nC_);return caml_call1(_lJ_[24],_nD_)}
- function _k9_(_nA_)
- {var _nB_=_kK_(_nA_);return caml_call1(_lJ_[25],_nB_)}
- function _k__(_ny_)
- {var _nz_=_kK_(_ny_);return caml_call1(_lJ_[26],_nz_)}
- function _k$_(_nw_)
- {var _nx_=_kL_(_nw_);return caml_call1(_lI_[20],_nx_)}
- function _la_(_nu_)
- {var _nv_=_kL_(_nu_);return caml_call1(_lI_[21],_nv_)}
- function _lb_(_nr_)
- {function _nh_(_ns_)
- {if(_ns_ < 86400.)return [0,0,_ns_];
- var _nt_=_nh_(_ns_ - 86400.);
- return [0,_nt_[1] + 1 | 0,_nt_[2]]}
- var
- _ni_=caml_call1(_lI_[25][8],_nr_[2]),
- _nj_=caml_call1(_lI_[1][4],_ni_);
- if(0. <= _nj_)
- var _nk_=_nh_(_nj_),_nm_=_nk_[2],_nl_=_nk_[1];
- else
- var
- _nq_=_nh_(- _nj_),
- _nm_=- _nq_[2] + 86400.,
- _nl_=- (_nq_[1] + 1 | 0) | 0;
- if(0. <= _nm_ && _nm_ < 86400.)
- {var
- _nn_=caml_call1(_lI_[1][2],_nm_),
- _no_=caml_call1(_lI_[25][15],_nn_),
- _np_=caml_call1(_lJ_[37][13],_nl_);
- return [0,caml_call2(_lJ_[37][2],_nr_[1],_np_),_no_]}
- throw [0,Assert_failure,_cF_]}
- var _lc_=[0,_lJ_[37][1],_lI_[25][1]];
- function _ld_(_nf_,_ne_,_nd_,_nc_,_nb_,_na_)
- {var _ng_=caml_call3(_lI_[25][11],_nc_,_nb_,_na_);
- return _lb_([0,caml_call3(_lJ_[37][8],_nf_,_ne_,_nd_),_ng_])}
- function _le_(_m5_,_m4_,_m3_,_m2_,_m1_,_m0_,_mZ_)
- {var
- _m6_=_m5_?_m5_[1]:_m5_,
- _m7_=_m4_?_m4_[1]:_m4_,
- _m8_=_m3_?_m3_[1]:_m3_,
- _m9_=_m2_?_m2_[1]:_m2_,
- _m__=_m1_?_m1_[1]:_m1_,
- _m$_=_m0_?_m0_[1]:caml_call1(_lI_[1][1],0);
- return _ld_(_m6_,_m7_,_m8_,_m9_,_m__,_m$_)}
- function _lf_(_mX_)
- {var _mY_=_lc_[2];return [0,caml_call1(_lJ_[37][10],_mX_),_mY_]}
- function _lg_(_mV_)
- {var _mW_=_lc_[2];return [0,caml_call1(_lJ_[37][11],_mV_),_mW_]}
- function _lh_(_mT_)
- {var _mU_=_lc_[2];return [0,caml_call1(_lJ_[37][12],_mT_),_mU_]}
- function _li_(_mR_)
- {var _mS_=_lc_[2];return [0,caml_call1(_lJ_[37][13],_mR_),_mS_]}
- function _lj_(_mP_)
- {var _mQ_=caml_call1(_lI_[25][13],_mP_);
- return _lb_([0,_lc_[1],_mQ_])}
- function _lk_(_mN_)
- {var _mO_=caml_call1(_lI_[25][14],_mN_);
- return _lb_([0,_lc_[1],_mO_])}
- function _ll_(_mL_)
- {var _mM_=caml_call1(_lI_[25][15],_mL_);
- return _lb_([0,_lc_[1],_mM_])}
- function _lm_(_mJ_,_mI_)
- {var _mK_=caml_call2(_lI_[25][2],_mJ_[2],_mI_[2]);
- return _lb_([0,caml_call2(_lJ_[37][2],_mJ_[1],_mI_[1]),_mK_])}
- function _ln_(_mG_,_mF_)
- {var _mH_=caml_call2(_lI_[25][3],_mG_[2],_mF_[2]);
- return _lb_([0,caml_call2(_lJ_[37][3],_mG_[1],_mF_[1]),_mH_])}
- function _lo_(_mD_)
- {var _mE_=caml_call1(_lI_[25][4],_mD_[2]);
- return _lb_([0,caml_call1(_lJ_[37][4],_mD_[1]),_mE_])}
- function _lp_(_mB_,_mA_)
- {var _mC_=caml_call2(_lJ_[37][6],_mB_[1],_mA_[1]);
- return 0 === _mC_?caml_call2(_lI_[25][6],_mB_[2],_mA_[2]):_mC_}
- function _lq_(_my_,_mx_)
- {var _mz_=caml_call2(_lJ_[37][5],_my_[1],_mx_[1]);
- return _mz_?caml_call2(_lI_[25][5],_my_[2],_mx_[2]):_mz_}
- var _lr_=Stdlib_Hashtbl[28];
- function _ls_(_mw_){return _mw_[1]}
- function _lt_(_mv_){return [0,_mv_,_lc_[2]]}
- function _lu_(_mu_){return [0,_lc_[1],_mu_]}
- var _lv_=_lJ_[37][14];
- function _lw_(_mq_,_mp_)
- {var
- _mr_=_mp_[2],
- _ms_=caml_call1(_mq_,_mp_[1]) * 24 | 0,
- _mt_=caml_call1(_lI_[25][13],_ms_);
- return caml_call2(_lI_[25][2],_mt_,_mr_)}
- function _lx_(_mo_){return _lw_(_lJ_[37][15],_mo_)}
- function _ly_(_mn_){return _lw_(_lJ_[37][16],_mn_)}
- function _lz_(_mk_)
- {var
- _ml_=caml_call1(_lJ_[37][17],_mk_[1]),
- _mm_=caml_call1(_lI_[25][16],_mk_[2]);
- return [0,_ml_[1],_ml_[2],_ml_[3],_mm_]}
- function _lA_(_mc_)
- {var
- _md_=caml_modf_float(_kI_(_mc_ + 0.5)),
- _me_=_md_[2] | 0,
- _mf_=_md_[1] * 86400.;
- if(_mf_ < 0.)
- var _mh_=_me_ - 1 | 0,_mg_=_mf_ + 86400.;
- else
- var _mh_=_me_,_mg_=_mf_;
- if(0. <= _mg_ && _mg_ < 86400.)
- {var
- _mi_=caml_call1(_lI_[1][2],_mg_),
- _mj_=caml_call1(_lI_[22],_mi_);
- return [0,caml_call1(_lJ_[8],_mh_),_mj_]}
- throw [0,Assert_failure,_cG_]}
- function _lB_(_l$_,_l__)
- {var
- _ma_=caml_call1(_lI_[14],_l__),
- _mb_=caml_call1(_lI_[1][4],_ma_) / 86400.;
- return _kH_(caml_call1(_lJ_[18],_l$_) + _mb_) - 0.5}
- function _lC_(_l7_,_l6_)
- {var _l8_=_lA_(_l7_),_l9_=caml_call2(_lI_[26],_l8_[2],_l6_[2]);
- return _lB_(caml_call2(_lJ_[38],_l8_[1],_l6_[1]),_l9_)}
- function _lD_(_l5_,_l4_){return _lC_(_l5_,_lo_(_l4_))}
- function _lE_(_l0_,_lZ_)
- {var
- _l1_=_lA_(_l0_),
- _l2_=_lA_(_lZ_),
- _l3_=caml_call2(_lI_[27],_l1_[2],_l2_[2]);
- return _lb_([0,caml_call2(_lJ_[39],_l1_[1],_l2_[1]),_l3_])}
- function _lF_(_lV_,_lU_)
- {var
- _lW_=_lA_(_lV_),
- _lX_=_lA_(_lU_),
- _lY_=caml_call2(_lI_[27],_lW_[2],_lX_[2]);
- return _lb_([0,caml_call2(_lJ_[40],_lW_[1],_lX_[1]),_lY_])}
- function _lG_(_lQ_,_lP_)
- {var _lR_=_lA_(_lQ_),_lS_=_lR_[2],_lT_=_lR_[1],switch$0=0;
- if(529348384 <= _lP_)
- {if(803994948 === _lP_)switch$0 = 1}
- else
- if(127686388 <= _lP_)switch$0 = 1;
- return switch$0
- ?_lB_(_lT_,caml_call2(_lI_[29],_lS_,_lP_))
- :_lB_(caml_call2(_lJ_[42],_lT_,_lP_),_lS_)}
- function _lH_(_lL_,_lK_)
- {var _lM_=_lA_(_lL_),_lN_=_lM_[2],_lO_=_lM_[1],switch$0=0;
- if(529348384 <= _lK_)
- {if(803994948 === _lK_)switch$0 = 1}
- else
- if(127686388 <= _lK_)switch$0 = 1;
- return switch$0
- ?_lB_(_lO_,caml_call2(_lI_[30],_lN_,_lK_))
- :_lB_(caml_call2(_lJ_[43],_lO_,_lK_),_lN_)}
- return [0,
- _lJ_,
- _lI_,
- _kN_,
- _kO_,
- _kM_,
- _kP_,
- _kQ_,
- _kR_,
- _kG_,
- _kH_,
- _kI_,
- _kU_,
- _kV_,
- _kW_,
- _kX_,
- _kY_,
- _kZ_,
- _k0_,
- _kS_,
- _kT_,
- _k1_,
- _k2_,
- _k3_,
- _kF_[1],
- _kF_[2],
- _kF_[3],
- _k8_,
- _k9_,
- _k__,
- _k$_,
- _la_,
- _k5_,
- _k4_,
- _k7_,
- _k6_,
- _kJ_,
- _kK_,
- _kL_,
- [0,
- _lc_,
- _lm_,
- _ln_,
- _lo_,
- _lq_,
- _lp_,
- _lr_,
- _ld_,
- _le_,
- _lf_,
- _lg_,
- _lh_,
- _li_,
- _lj_,
- _lk_,
- _ll_,
- _lt_,
- _lu_,
- _ls_,
- _lv_,
- _lx_,
- _ly_,
- _lz_],
- _lC_,
- _lE_,
- _lF_,
- _lD_,
- _lG_,
- _lH_]},
- _cI_];
- caml_register_global
- (216,CalendarLib_Calendar_builder,"CalendarLib.Calendar_builder");
- var
- _cJ_=
- caml_call1
- (caml_call1(CalendarLib_Calendar_builder[1],CalendarLib_Date),
- CalendarLib_Time),
- _cK_=_cJ_[1],
- _cL_=_cJ_[2],
- _cM_=caml_call1(caml_call1(CalendarLib_Calendar_builder[2],_cK_),_cL_),
- CalendarLib_Calendar=
- [0,
- _cK_,
- _cL_,
- _cJ_[3],
- _cJ_[4],
- _cJ_[5],
- _cJ_[6],
- _cJ_[7],
- _cJ_[8],
- _cJ_[9],
- _cJ_[10],
- _cJ_[11],
- _cJ_[12],
- _cJ_[13],
- _cJ_[14],
- _cJ_[15],
- _cJ_[16],
- _cJ_[17],
- _cJ_[18],
- _cJ_[19],
- _cJ_[20],
- _cJ_[21],
- _cJ_[22],
- _cJ_[23],
- _cJ_[24],
- _cJ_[25],
- _cJ_[26],
- _cJ_[27],
- _cJ_[28],
- _cJ_[29],
- _cJ_[30],
- _cJ_[31],
- _cJ_[32],
- _cJ_[33],
- _cJ_[34],
- _cJ_[35],
- _cJ_[36],
- _cJ_[37],
- _cJ_[38],
- _cJ_[39],
- _cJ_[40],
- _cJ_[41],
- _cJ_[42],
- _cJ_[43],
- _cJ_[44],
- _cJ_[45],
- _cM_];
- caml_register_global(217,CalendarLib_Calendar,"CalendarLib.Calendar");
- var
- _cN_=
- caml_call1
- (caml_call1(CalendarLib_Calendar_builder[1],CalendarLib_Date),
- CalendarLib_Ftime),
- _cO_=_cN_[1],
- _cP_=
- caml_call1
- (caml_call1(CalendarLib_Calendar_builder[2],_cO_),CalendarLib_Ftime),
- CalendarLib_Fcalendar=
- [0,
- _cO_,
- _cN_[2],
- _cN_[3],
- _cN_[4],
- _cN_[5],
- _cN_[6],
- _cN_[7],
- _cN_[8],
- _cN_[9],
- _cN_[10],
- _cN_[11],
- _cN_[12],
- _cN_[13],
- _cN_[14],
- _cN_[15],
- _cN_[16],
- _cN_[17],
- _cN_[18],
- _cN_[19],
- _cN_[20],
- _cN_[21],
- _cN_[22],
- _cN_[23],
- _cN_[24],
- _cN_[25],
- _cN_[26],
- _cN_[27],
- _cN_[28],
- _cN_[29],
- _cN_[30],
- _cN_[31],
- _cN_[32],
- _cN_[33],
- _cN_[34],
- _cN_[35],
- _cN_[36],
- _cN_[37],
- _cN_[38],
- _cN_[39],
- _cN_[40],
- _cN_[41],
- _cN_[42],
- _cN_[43],
- _cN_[44],
- _cN_[45],
- _cP_];
- caml_register_global(218,CalendarLib_Fcalendar,"CalendarLib.Fcalendar");
- var
- _cQ_=
- [0,
- function(_kE_)
- {switch(_kE_)
- {case 0:return cst_Sunday;
- case 1:return cst_Monday;
- case 2:return cst_Tuesday;
- case 3:return cst_Wednesday;
- case 4:return cst_Thursday;
- case 5:return cst_Friday;
- default:return cst_Saturday}}];
- function _cR_(_kD_){return caml_call1(_cQ_[1],_kD_)}
- function _cS_(_kz_)
- {var _kA_=_cR_(_kz_);
- try
- {var _kB_=caml_call3(Stdlib_String[15],_kA_,0,3);return _kB_}
- catch(_kC_)
- {_kC_ = caml_wrap_exception(_kC_);
- if(_kC_[1] === Stdlib[6])return _kA_;
- throw _kC_}}
- var
- _cT_=
- [0,
- function(_ky_)
- {switch(_ky_)
- {case 0:return cst_January;
- case 1:return cst_February;
- case 2:return cst_March;
- case 3:return cst_April;
- case 4:return cst_May;
- case 5:return cst_June;
- case 6:return cst_July;
- case 7:return cst_August;
- case 8:return cst_September;
- case 9:return cst_October;
- case 10:return cst_November;
- default:return cst_December}}];
- function _cU_(_kx_){return caml_call1(_cT_[1],_kx_)}
- function _cV_(_kt_)
- {var _ku_=_cU_(_kt_);
- try
- {var _kv_=caml_call3(Stdlib_String[15],_ku_,0,3);return _kv_}
- catch(_kw_)
- {_kw_ = caml_wrap_exception(_kw_);
- if(_kw_[1] === Stdlib[6])return _ku_;
- throw _kw_}}
- function _cW_(_kq_,_kp_,_ko_,_kn_)
- {if(0 < _ko_)
- {if(_kn_ < 0)caml_call2(Stdlib_Format[23],_kq_,45);
- var _ks_=caml_call1(Stdlib[18],_kn_),_kr_=_ko_;
- for(;;)
- {if(1 === _kr_)return caml_call2(Stdlib_Format[19],_kq_,_ks_);
- if(_ks_ < _kr_)
- if(1 === _kp_)
- caml_call2(Stdlib_Format[23],_kq_,32);
- else
- if(! _kp_)caml_call2(Stdlib_Format[19],_kq_,0);
- var _kr_=_kr_ / 10 | 0;
- continue}}
- throw [0,Assert_failure,_cX_]}
- function _cY_(_kl_)
- {var _km_=caml_call2(Stdlib[28],cst_bad_format,_kl_);
- throw [0,Stdlib[6],_km_]}
- function _cZ_(_ki_,_kh_)
- {var
- _kj_=caml_call2(Stdlib[28],cst_does_not_match_the_format,_ki_),
- _kk_=caml_call2(Stdlib[28],_kh_,_kj_);
- throw [0,Stdlib[6],_kk_]}
- function _c0_(_kf_,_ke_,_kd_)
- {var _kg_=12;
- for(;;)
- {if(0 === _kg_)return _cZ_(_ke_,_kd_);
- if
- (caml_string_equal
- (caml_call1(_kf_,caml_call1(CalendarLib_Date[36],_kg_)),_kd_))
- return _kg_;
- var _kg_=_kg_ - 1 | 0;
- continue}}
- function _c1_(_kc_)
- {var _kb_=7;
- for(;;)
- {if(0 === _kb_)return _cZ_(cst_A,_kc_);
- if
- (caml_string_equal(_cS_(caml_call1(CalendarLib_Date[34],_kb_)),_kc_))
- return _kb_;
- var _kb_=_kb_ - 1 | 0;
- continue}}
- var _c2_=[0,caml_call1(Str[1],cst_a_zA_Z)];
- function _c3_(_ka_){_c2_[1] = _ka_;return 0}
- function _c4_(_gs_)
- {function _gt_(_j8_)
- {var
- _j9_=caml_obj_tag(_j8_),
- _j__=
- 250 === _j9_
- ?_j8_[1]
- :246 === _j9_?caml_call1(CamlinternalLazy[2],_j8_):_j8_,
- _j$_=_j__ % 12 | 0;
- return 0 === _j$_?12:_j$_}
- function _gu_(_iC_,_iB_,_iA_)
- {var
- _iD_=caml_ml_string_length(_iC_),
- _iE_=[246,function(_j7_){return _cR_(caml_call1(_gs_[7],_iA_))}],
- _iF_=[246,function(_j6_){return _cS_(caml_call1(_gs_[7],_iA_))}],
- _iG_=
- [246,
- function(_j4_)
- {var _j5_=caml_call1(_gs_[7],_iA_);
- return caml_call1(CalendarLib_Date[33],_j5_)}],
- _iH_=[246,function(_j3_){return _cU_(caml_call1(_gs_[11],_iA_))}],
- _iI_=[246,function(_j2_){return _cV_(caml_call1(_gs_[11],_iA_))}],
- _iJ_=
- [246,
- function(_j0_)
- {var _j1_=caml_call1(_gs_[11],_iA_);
- return caml_call1(CalendarLib_Date[35],_j1_)}],
- _iK_=[246,function(_jZ_){return caml_call1(_gs_[8],_iA_)}],
- _iL_=[246,function(_jY_){return caml_call1(_gs_[9],_iA_)}],
- _iM_=[246,function(_jX_){return caml_call1(_gs_[10],_iA_)}],
- _iN_=[246,function(_jW_){return caml_call1(_gs_[12],_iA_)}],
- _iO_=
- [246,
- function(_jT_)
- {var
- _jU_=caml_obj_tag(_iN_),
- _jV_=
- 250 === _jU_
- ?_iN_[1]
- :246 === _jU_?caml_call1(CamlinternalLazy[2],_iN_):_iN_;
- return _jV_ % 100 | 0}],
- _iP_=[246,function(_jS_){return caml_call1(_gs_[13],_iA_)}],
- _iQ_=[246,function(_jR_){return caml_call1(_gs_[4],_iA_)}],
- _iR_=[246,function(_jQ_){return _gt_(_iQ_)}],
- _iS_=[246,function(_jP_){return caml_call1(_gs_[5],_iA_)}],
- _iT_=[246,function(_jO_){return caml_call1(_gs_[6],_iA_)}],
- _iU_=
- [246,
- function(_jL_)
- {var
- _jM_=caml_obj_tag(_iQ_),
- _jN_=
- 250 === _jM_
- ?_iQ_[1]
- :246 === _jM_?caml_call1(CamlinternalLazy[2],_iQ_):_iQ_;
- return 12 <= (_jN_ % 24 | 0)?cst_PM:cst_AM}],
- _iV_=
- [246,function(_jK_){return caml_call1(CalendarLib_Time_Zone[4],0)}],
- _iW_=[246,function(_jJ_){return caml_call1(_gs_[14],_iA_)}];
- function _iX_(_jI_){return caml_call2(Stdlib_Format[23],_iB_,_jI_)}
- function _iY_(_jF_,_jE_,_jD_)
- {var
- _jG_=caml_obj_tag(_jD_),
- _jH_=
- 250 === _jG_
- ?_jD_[1]
- :246 === _jG_?caml_call1(CamlinternalLazy[2],_jD_):_jD_;
- return _cW_(_iB_,_jF_,_jE_,_jH_)}
- function _iZ_(_jz_,_jy_)
- {var
- _jA_=caml_obj_tag(_jy_),
- _jB_=
- 250 === _jA_
- ?_jy_[1]
- :246 === _jA_?caml_call1(CamlinternalLazy[2],_jy_):_jy_,
- _jC_=3 <= _jz_?caml_call1(Stdlib_String[45],_jB_):_jB_;
- return caml_call2(Stdlib_Format[13],_iB_,_jC_)}
- function _i0_(_jx_,_jw_)
- {_iY_(_jx_,10,_jw_);
- _iX_(58);
- _iY_(_jx_,10,_iS_);
- _iX_(58);
- return _iY_(_jx_,10,_iT_)}
- function _i2_(counter,_i__,_i9_)
- {var _ja_=_i__,_i$_=_i9_;
- for(;;)
- {if(_ja_ <= _iD_)
- {if(_ja_ === _iD_)_cY_(_iC_);
- var _jb_=caml_string_get(_iC_,_ja_),switch$0=0;
- if(49 <= _jb_)
- if(94 === _jb_)
- var _jc_=3;
- else
- if(95 === _jb_)var _jc_=1;else switch$0 = 1;
- else
- if(45 === _jb_)
- var _jc_=2;
- else
- if(48 <= _jb_)var _jc_=0;else switch$0 = 1;
- if(switch$0)
- {var switch$1=0,_jd_=0;
- if(123 <= _jb_)
- switch$1 = 1;
- else
- switch(_jb_)
- {case 37:_iX_(37);var _jf_=_jd_;break;
- case 58:
- try
- {var
- _jn_=caml_call1(Str[1],cst_z_z_z),
- _jo_=caml_call3(Str[7],_jn_,_iC_,_ja_ + 1 | 0),
- _jh_=_jo_}
- catch(_jv_)
- {_jv_ = caml_wrap_exception(_jv_);
- if(_jv_ !== Stdlib[8])throw _jv_;
- var _jh_=_cY_(_iC_)}
- var _ji_=caml_call1(Str[10],_iC_);
- if(_jh_ !== (_ja_ + 1 | 0))_cY_(_iC_);
- var
- _jj_=caml_obj_tag(_iV_),
- _jk_=
- 250 === _jj_
- ?_iV_[1]
- :246 === _jj_?caml_call1(CamlinternalLazy[2],_iV_):_iV_;
- if(0 <= _jk_)_iX_(43);
- _iY_(_i$_,10,_iV_);
- var
- _jl_=function(_ju_){_iX_(58);return _cW_(_iB_,0,10,0)},
- _jm_=caml_ml_string_length(_ji_);
- if(caml_string_notequal(_ji_,cst_z))
- if(caml_string_notequal(_ji_,cst_z$0))
- {if(caml_string_notequal(_ji_,cst_z$1))
- throw [0,Assert_failure,_c5_];
- _jl_(0)}
- else
- {_jl_(0);_jl_(0)}
- var _jf_=_jm_;
- break;
- case 65:_iZ_(_i$_,_iE_);var _jf_=_jd_;break;
- case 66:_iZ_(_i$_,_iH_);var _jf_=_jd_;break;
- case 67:_iY_(_i$_,10,_iP_);var _jf_=_jd_;break;
- case 68:
- _iY_(_i$_,10,_iJ_);
- _iX_(47);
- _iY_(_i$_,10,_iK_);
- _iX_(47);
- _iY_(_i$_,10,_iO_);
- var _jf_=_jd_;
- break;
- case 72:_iY_(_i$_,10,_iQ_);var _jf_=_jd_;break;
- case 73:_cW_(_iB_,_i$_,10,_gt_(_iQ_));var _jf_=_jd_;break;
- case 77:_iY_(_i$_,10,_iS_);var _jf_=_jd_;break;
- case 80:
- var
- _jp_=caml_obj_tag(_iU_),
- _jq_=
- 250 === _jp_
- ?_iU_[1]
- :246 === _jp_?caml_call1(CamlinternalLazy[2],_iU_):_iU_,
- _jr_=caml_call1(Stdlib_String[46],_jq_);
- caml_call2(Stdlib_Format[13],_iB_,_jr_);
- var _jf_=_jd_;
- break;
- case 82:
- _iY_(_i$_,10,_iQ_);
- _iX_(58);
- _iY_(_i$_,10,_iS_);
- var _jf_=_jd_;
- break;
- case 83:_iY_(_i$_,10,_iT_);var _jf_=_jd_;break;
- case 84:_i0_(_i$_,_iQ_);var _jf_=_jd_;break;
- case 89:_iY_(_i$_,1000,_iN_);var _jf_=_jd_;break;
- case 97:_iZ_(_i$_,_iF_);var _jf_=_jd_;break;
- case 99:
- _iZ_(_i$_,_iF_);
- _iX_(32);
- _iZ_(_i$_,_iI_);
- _iX_(32);
- _iY_(_i$_,10,_iK_);
- _iX_(32);
- _i0_(_i$_,_iQ_);
- _iX_(32);
- _iY_(_i$_,1000,_iN_);
- var _jf_=_jd_;
- break;
- case 100:_iY_(_i$_,10,_iK_);var _jf_=_jd_;break;
- case 101:_iY_(1,10,_iK_);var _jf_=_jd_;break;
- case 106:_iY_(_i$_,100,_iL_);var _jf_=_jd_;break;
- case 107:_iY_(1,10,_iQ_);var _jf_=_jd_;break;
- case 108:_cW_(_iB_,1,10,_gt_(_iQ_));var _jf_=_jd_;break;
- case 109:_iY_(_i$_,10,_iJ_);var _jf_=_jd_;break;
- case 110:_iX_(10);var _jf_=_jd_;break;
- case 112:_iZ_(_i$_,_iU_);var _jf_=_jd_;break;
- case 114:
- _i0_(_i$_,_iR_);
- _iX_(32);
- _iZ_(_i$_,_iU_);
- var _jf_=_jd_;
- break;
- case 115:_iY_(_i$_,1,_iW_);var _jf_=_jd_;break;
- case 116:_iX_(9);var _jf_=_jd_;break;
- case 119:_iY_(2,1,_iG_);var _jf_=_jd_;break;
- case 121:_iY_(_i$_,10,_iO_);var _jf_=_jd_;break;
- case 122:
- var
- _js_=caml_obj_tag(_iV_),
- _jt_=
- 250 === _js_
- ?_iV_[1]
- :246 === _js_?caml_call1(CamlinternalLazy[2],_iV_):_iV_;
- if(0 <= _jt_)_iX_(43);
- _iY_(_i$_,10,_iV_);
- _cW_(_iB_,0,10,0);
- var _jf_=_jd_;
- break;
- case 98:
- case 104:_iZ_(_i$_,_iI_);var _jf_=_jd_;break;
- case 70:
- case 105:
- _iY_(_i$_,1000,_iN_);
- _iX_(45);
- _iY_(_i$_,10,_iJ_);
- _iX_(45);
- _iY_(_i$_,10,_iK_);
- var _jf_=_jd_;
- break;
- case 86:
- case 87:_iY_(_i$_,10,_iM_);var _jf_=_jd_;break;
- default:switch$1 = 1}
- if(switch$1)
- {var _je_=caml_call2(Stdlib_String[1],1,_jb_);
- _cY_(caml_call2(Stdlib[28],cst,_je_));
- var _jf_=_jd_}
- var _jg_=(_ja_ + 1 | 0) + _jf_ | 0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return _i1_(counter$0,_jg_)}
- return caml_trampoline_return(_i1_,[0,_jg_])}
- if(0 !== _i$_)_cY_(_iC_);
- var _ja_=_ja_ + 1 | 0,_i$_=_jc_;
- continue}
- throw [0,Assert_failure,_c6_]}}
- function _i1_(counter,_i4_)
- {var _i5_=_i4_;
- for(;;)
- {if(_i5_ <= _iD_)
- {if(_i5_ === _iD_)return 0;
- var _i6_=caml_string_get(_iC_,_i5_);
- if(37 === _i6_)
- {var _i8_=_i5_ + 1 | 0,_i7_=0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return _i2_(counter$0,_i8_,_i7_)}
- return caml_trampoline_return(_i2_,[0,_i8_,_i7_])}
- caml_call2(Stdlib_Format[23],_iB_,_i6_);
- var _i5_=_i5_ + 1 | 0;
- continue}
- throw [0,Assert_failure,_c7_]}}
- (function(_i3_){return caml_trampoline(_i1_(0,_i3_))}(0));
- return caml_call2(Stdlib_Format[38],_iB_,0)}
- function _gv_(_ix_)
- {var _iy_=Stdlib_Format[109];
- return function(_iz_){return _gu_(_ix_,_iy_,_iz_)}}
- var _gw_=_gv_(_gs_[3]);
- function _gx_(_iv_,_iu_)
- {var _iw_=caml_call1(Stdlib_Buffer[1],15);
- _gu_(_iv_,caml_call1(Stdlib_Format[111],_iw_),_iu_);
- return caml_call1(Stdlib_Buffer[2],_iw_)}
- var _gy_=_gs_[3];
- function _gz_(_it_){return _gx_(_gy_,_it_)}
- function _gA_(_gE_,_gD_)
- {var
- _gF_=[0,0],
- _gG_=[0,Stdlib[20]],
- _gH_=[0,Stdlib[20]],
- _gI_=[0,Stdlib[20]],
- _gJ_=[0,Stdlib[20]],
- _gK_=[0,Stdlib[20]],
- _gL_=[0,0],
- _gM_=[0,Stdlib[20]],
- _gN_=[0,Stdlib[20]],
- _gO_=[0,Stdlib[20]],
- _gP_=[0,0],
- _gR_=[0,0],
- _gS_=caml_ml_string_length(_gE_),
- _gT_=caml_ml_string_length(_gD_);
- function _gQ_(_in_)
- {var _io_=-1 === _gG_[1]?1:0,_ip_=_io_ || (-1 === _gK_[1]?1:0);
- if(_ip_)
- _cY_(caml_call2(Stdlib[28],_gE_,cst_either_week_or_year_is_not));
- var
- _iq_=caml_call1(CalendarLib_Date[34],_gH_[1]),
- _ir_=caml_call3(_gs_[2],_gK_[1],_gG_[1],_iq_);
- _gK_[1] = caml_call1(_gs_[12],_ir_);
- var _is_=caml_call1(_gs_[11],_ir_);
- _gJ_[1] = caml_call1(CalendarLib_Date[35],_is_);
- _gI_[1] = caml_call1(_gs_[8],_ir_);
- return 0}
- function _gU_(_ik_)
- {var
- _il_=_gT_ <= _gR_[1]?1:0,
- _im_=_il_ || (caml_string_get(_gD_,_gR_[1]) !== _ik_?1:0);
- if(_im_)_cZ_(_gE_,_gD_);
- _gR_[1]++;
- return 0}
- function _gV_(_if_)
- {var _ig_=_gR_[1] + _if_ | 0;
- if(_gT_ < _ig_)_cZ_(_gE_,_gD_);
- try
- {var
- _ii_=
- runtime.caml_int_of_string
- (caml_call3(Stdlib_String[15],_gD_,_gR_[1],_if_)),
- _ih_=_ii_}
- catch(_ij_)
- {_ij_ = caml_wrap_exception(_ij_);
- if(_ij_[1] !== Stdlib[7])throw _ij_;
- var _ih_=_cZ_(_gE_,_gD_)}
- _gR_[1] = _ig_;
- return _ih_}
- function _gW_(_h$_,_h__)
- {var _ia_=_h$_?_h$_[1]:_c2_[1];
- try
- {var _id_=caml_call3(Str[7],_ia_,_gD_,_gR_[1]),_ib_=_id_}
- catch(_ie_)
- {_ie_ = caml_wrap_exception(_ie_);
- if(_ie_ !== Stdlib[8])throw _ie_;
- var _ib_=_cZ_(_gE_,_gD_)}
- if(_ib_ !== _gR_[1])_cZ_(_gE_,_gD_);
- var _ic_=caml_call1(Str[10],_gD_);
- _gR_[1] = _ib_ + caml_ml_string_length(_ic_) | 0;
- return _ic_}
- var _gX_=caml_call1(Str[1],cst_0_9_0_9_0_9);
- function _gY_(_h7_)
- {try
- {var _h8_=runtime.caml_float_of_string(_gW_([0,_gX_],0));
- return _h8_}
- catch(_h9_)
- {_h9_ = caml_wrap_exception(_h9_);
- if(_h9_[1] === Stdlib[7])return _cZ_(_gE_,_gD_);
- throw _h9_}}
- function _gZ_(_h6_){_c1_(_gW_(0,0));return 0}
- function _g0_(_h5_){_gJ_[1] = _c0_(_cV_,cst_B,_gW_(0,0));return 0}
- function _g1_(_h4_){_gI_[1] = _gV_(2);return 0}
- function _g2_(_h3_){_gO_[1] = _gV_(2);return 0}
- function _g3_(_h2_){_gO_[1] = _gV_(2);return 0}
- function _g4_(_h1_){_gJ_[1] = _gV_(2);return 0}
- function _g5_(_h0_){_gN_[1] = _gV_(2);return 0}
- function _g6_(_hZ_)
- {return 0 === _gs_[1][0]?(_gM_[1] = _gV_(2),0):(_gM_[1] = _gY_(0),0)}
- function _g7_(_hY_){_gK_[1] = _gV_(4);return 0}
- function _g8_(_hV_)
- {var _hW_=_gW_([0,caml_call1(Str[1],cst$0)],0);
- if(caml_string_notequal(_hW_,cst$1))
- {if(caml_string_notequal(_hW_,cst$2))throw [0,Assert_failure,_c8_];
- var _hX_=1}
- else
- var _hX_=-1;
- _gP_[1] = caml_mul(_hX_,_gV_(2));
- return 0}
- function _he_(counter,_hn_)
- {if(_hn_ <= _gS_)
- {if(_hn_ === _gS_)_cY_(_gE_);
- var _hp_=caml_string_get(_gE_,_hn_),switch$0=0,_ho_=0;
- if(123 <= _hp_)
- switch$0 = 2;
- else
- {var switch$1=0;
- switch(_hp_)
- {case 37:_gU_(37);var _hr_=_ho_;switch$1 = 3;break;
- case 58:
- var _hv_=1,_hu_=_hn_ + 1 | 0;
- for(;;)
- {var _hw_=caml_string_get(_gE_,_hu_);
- if(58 === _hw_)
- {if(3 !== _hv_)
- {var _hv_=_hv_ + 1 | 0,_hu_=_hu_ + 1 | 0;continue}
- var _hy_=_cY_(cst$4)}
- else
- if(122 === _hw_)
- var _hy_=_hv_;
- else
- var
- _hx_=caml_call2(Stdlib_String[1],1,_hw_),
- _hy_=_cY_(caml_call2(Stdlib[28],cst$5,_hx_));
- var
- _hz_=caml_call2(Stdlib_String[1],_hy_,58),
- _hA_=caml_call2(Stdlib[28],_hz_,cst_z$2);
- _g8_(0);
- var _hB_=function(_hU_){_gU_(58);_gV_(2);return 0};
- if(caml_string_notequal(_hA_,cst_z$3))
- if(caml_string_notequal(_hA_,cst_z$4))
- {if(caml_string_notequal(_hA_,cst_z$5))
- throw [0,Assert_failure,_c9_];
- _hB_(0)}
- else
- {_hB_(0);_hB_(0)}
- var _hr_=_hy_;
- switch$1 = 3;
- break}
- break;
- case 65:_c1_(_gW_(0,0));var _hr_=_ho_;switch$1 = 3;break;
- case 66:
- _gJ_[1] = _c0_(_cU_,cst_b,_gW_(0,0));
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 67:_gV_(2);var _hr_=_ho_;switch$1 = 3;break;
- case 68:_g4_(0);_gU_(47);_g1_(0);_gU_(47);break;
- case 72:_g2_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 73:_g3_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 77:_g5_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 80:
- var _hC_=_gW_(0,0);
- if(caml_string_notequal(_hC_,cst_am))
- if(caml_string_notequal(_hC_,cst_pm))
- {var _hD_=caml_call2(Stdlib[28],_hC_,cst$6);
- _cZ_(cst_P,caml_call2(Stdlib[28],cst$7,_hD_))}
- else
- _gL_[1] = 12;
- else
- _gL_[1] = 0;
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 82:
- _g2_(0);_gU_(58);_g5_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 83:_g6_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 84:
- _g2_(0);
- _gU_(58);
- _g5_(0);
- _gU_(58);
- _g6_(0);
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 86:var _hE_=cst_V;switch$1 = 1;break;
- case 87:var _hE_=cst_W;switch$1 = 1;break;
- case 89:_g7_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 97:_gZ_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 99:
- _gZ_(0);
- _gU_(32);
- _g0_(0);
- _gU_(32);
- _g1_(0);
- _gU_(32);
- _g2_(0);
- _gU_(58);
- _g5_(0);
- _gU_(58);
- _g6_(0);
- _gU_(32);
- _g7_(0);
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 100:_g1_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 106:
- var
- _hI_=_gV_(3),
- _hJ_=_hI_ < 1?1:0,
- _hK_=_hJ_ || (366 < _hI_?1:0);
- if(_hK_)_cZ_(cst_j,caml_call1(Stdlib[33],_hI_));
- var _hL_=_gF_[1];
- _gF_[1]
- =
- [0,
- function(_hR_)
- {if(-1 === _gK_[1])_cY_(cst_j_year_not_provided);
- var
- _hS_=caml_call2(CalendarLib_Date[10],_gK_[1],_hI_),
- _hT_=caml_call1(CalendarLib_Date[16],_hS_);
- _gJ_[1] = caml_call1(CalendarLib_Date[35],_hT_);
- _gI_[1] = caml_call1(CalendarLib_Date[13],_hS_);
- return 0},
- _hL_];
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 109:_g4_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 110:_gU_(10);var _hr_=_ho_;switch$1 = 3;break;
- case 112:switch$1 = 2;break;
- case 114:
- _g3_(0);
- _gU_(58);
- _g5_(0);
- _gU_(58);
- _g6_(0);
- _gU_(32);
- switch$1 = 2;
- break;
- case 116:_gU_(9);var _hr_=_ho_;switch$1 = 3;break;
- case 119:
- var
- _hO_=_gV_(1),
- _hP_=_hO_ < 1?1:0,
- _hQ_=_hP_ || (7 < _hO_?1:0);
- if(_hQ_)_cZ_(cst_w,caml_call1(Stdlib[33],_hO_));
- _gH_[1] = _hO_;
- _gF_[1] = [0,_gQ_,_gF_[1]];
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- case 121:break;
- case 122:_g8_(0);_gV_(2);var _hr_=_ho_;switch$1 = 3;break;
- case 98:
- case 104:_g0_(0);var _hr_=_ho_;switch$1 = 3;break;
- case 70:
- case 105:
- _g7_(0);
- _gU_(45);
- _g4_(0);
- _gU_(45);
- _g1_(0);
- var _hr_=_ho_;
- switch$1 = 3;
- break;
- default:switch$0 = 2;switch$1 = 3}
- switch(switch$1)
- {case 3:break;
- case 0:
- _gK_[1] = _gV_(2) + 1900 | 0;
- var _hs_=_ho_;
- switch$0 = 1;
- break;
- case 1:
- var
- _hF_=_gV_(2),
- _hG_=_hF_ < 1?1:0,
- _hH_=_hG_ || (53 < _hF_?1:0);
- if(_hH_)_cZ_(_hE_,caml_call1(Stdlib[33],_hF_));
- _gG_[1] = _hF_;
- var _hs_=_ho_;
- switch$0 = 1;
- break;
- default:
- var _hM_=_gW_(0,0);
- if(caml_string_notequal(_hM_,cst_AM$0))
- if(caml_string_notequal(_hM_,cst_PM$0))
- {var _hN_=caml_call2(Stdlib[28],_hM_,cst$8);
- _cZ_(cst_p,caml_call2(Stdlib[28],cst$9,_hN_))}
- else
- _gL_[1] = 12;
- else
- _gL_[1] = 0;
- var _hs_=_ho_;
- switch$0 = 1}}
- var switch$2=0;
- switch(switch$0)
- {case 2:
- var _hq_=caml_call2(Stdlib_String[1],1,_hp_);
- _cY_(caml_call2(Stdlib[28],cst$3,_hq_));
- var _hr_=_ho_;
- break;
- case 0:break;
- default:switch$2 = 1}
- if(! switch$2)var _hs_=_hr_;
- var _ht_=(_hn_ + 1 | 0) + _hs_ | 0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return _hd_(counter$0,_ht_)}
- return caml_trampoline_return(_hd_,[0,_ht_])}
- throw [0,Assert_failure,_c__]}
- function _hd_(counter,_hi_)
- {var _hj_=_hi_;
- for(;;)
- {if(_hj_ <= _gS_)
- {if(_hj_ === _gS_)
- {var _hk_=_gR_[1] !== _gT_?1:0;
- return _hk_?_cZ_(_gE_,_gD_):_hk_}
- var _hl_=caml_string_get(_gE_,_hj_);
- if(37 === _hl_)
- {var _hm_=_hj_ + 1 | 0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;return _he_(counter$0,_hm_)}
- return caml_trampoline_return(_he_,[0,_hm_])}
- _gU_(_hl_);
- var _hj_=_hj_ + 1 | 0;
- continue}
- throw [0,Assert_failure,_c$_]}}
- (function(_hh_){return caml_trampoline(_hd_(0,_hh_))}(0));
- var _g9_=_gF_[1];
- function _g__(_hg_){return caml_call1(_hg_,0)}
- caml_call2(Stdlib_List[17],_g__,_g9_);
- function _g$_(_hf_)
- {return caml_call5
- (_hf_,
- _gK_[1],
- _gJ_[1],
- _gI_[1],
- (_gO_[1] + _gL_[1] | 0) + _gP_[1] | 0,
- _gN_[1])}
- var _ha_=_gs_[1];
- if(0 === _ha_[0])
- {var _hb_=caml_call1(CalendarLib_Utils[2][5],_gM_[1]);
- return caml_call1(_g$_(_ha_[1]),_hb_)}
- var _hc_=_gM_[1];
- return caml_call1(_g$_(_ha_[1]),_hc_)}
- var _gB_=_gs_[3];
- return [0,
- _gt_,
- _gu_,
- _gv_,
- _gw_,
- _gx_,
- _gz_,
- _gA_,
- function(_gC_){return _gA_(_gB_,_gC_)}]}
- function _da_(_gm_,_gl_)
- {var _gn_=Stdlib[20];
- function _go_(_gr_){return _gn_ === _gr_?1:0}
- var _gp_=caml_call2(Stdlib_List[33],_go_,_gl_);
- if(_gp_)
- {var _gq_=caml_call2(Stdlib[28],cst_Cannot_create_the,_gm_);
- throw [0,Stdlib[6],_gq_]}
- return _gp_}
- var
- _dc_=CalendarLib_Date[17],
- _db_=CalendarLib_Date[3],
- _dd_=CalendarLib_Date[50],
- _de_=
- [0,
- function(_gk_,_gj_,_gi_,_gh_,_gg_,_gf_)
- {_da_(cst_date,[0,_gk_,[0,_gj_,[0,_gi_,0]]]);
- return caml_call3(_db_,_gk_,_gj_,_gi_)}];
- function _df_(_ge_){return _cY_(cst_hour)}
- function _dg_(_gd_){return _cY_(cst_minute)}
- function _dh_(_gc_){return _cY_(cst_second)}
- function _di_(_gb_){return caml_call1(_dd_,caml_call1(_dc_,_gb_))}
- function _dj_(_ga_){return _cY_(cst_seconds_since_1970)}
- var
- _dk_=
- _c4_
- ([0,
- _de_,
- CalendarLib_Date[32],
- cst_i,
- _df_,
- _dg_,
- _dh_,
- CalendarLib_Date[12],
- CalendarLib_Date[13],
- CalendarLib_Date[14],
- CalendarLib_Date[15],
- CalendarLib_Date[16],
- _dc_,
- _di_,
- _dj_]),
- _dl_=CalendarLib_Time[2],
- _dm_=
- [0,
- function(_f$_,_f__,_f9_,_f8_,_f7_,_f6_)
- {_da_(cst_time,[0,_f8_,[0,_f7_,[0,_f6_,0]]]);
- return caml_call3(_dl_,_f8_,_f7_,_f6_)}];
- function _dn_(_f5_,_f4_,_f3_){return _cY_(cst_from_business)}
- function _do_(_f2_){return _cY_(cst_day_of_week)}
- function _dp_(_f1_){return _cY_(cst_day_of_month)}
- function _dq_(_f0_){return _cY_(cst_day_of_year)}
- function _dr_(_fZ_){return _cY_(cst_week)}
- function _ds_(_fY_){return _cY_(cst_month)}
- function _dt_(_fX_){return _cY_(cst_year)}
- function _du_(_fW_){return _cY_(cst_century)}
- function _dv_(_fV_){return _cY_(cst_seconds_since_1970$0)}
- var
- _dw_=
- _c4_
- ([0,
- _dm_,
- _dn_,
- cst_T,
- CalendarLib_Time[11],
- CalendarLib_Time[12],
- CalendarLib_Time[13],
- _do_,
- _dp_,
- _dq_,
- _dr_,
- _ds_,
- _dt_,
- _du_,
- _dv_]),
- _dx_=CalendarLib_Ftime[1],
- _dy_=CalendarLib_Ftime[2],
- _dz_=CalendarLib_Ftime[13],
- _dA_=
- [1,
- function(_fU_,_fT_,_fS_,_fR_,_fQ_,_fP_)
- {_da_
- (cst_time$0,
- [0,_fR_,[0,_fQ_,[0,caml_call1(CalendarLib_Utils[2][5],_fP_),0]]]);
- return caml_call3(_dy_,_fR_,_fQ_,_fP_)}];
- function _dB_(_fN_)
- {var _fO_=caml_call1(_dz_,_fN_);return caml_call1(_dx_[3],_fO_)}
- function _dC_(_fM_,_fL_,_fK_){return _cY_(cst_from_business$0)}
- function _dD_(_fJ_){return _cY_(cst_day_of_week$0)}
- function _dE_(_fI_){return _cY_(cst_day_of_month$0)}
- function _dF_(_fH_){return _cY_(cst_day_of_year$0)}
- function _dG_(_fG_){return _cY_(cst_week$0)}
- function _dH_(_fF_){return _cY_(cst_month$0)}
- function _dI_(_fE_){return _cY_(cst_year$0)}
- function _dJ_(_fD_){return _cY_(cst_century$0)}
- function _dK_(_fC_){return _cY_(cst_seconds_since_1970$1)}
- var
- _dL_=
- _c4_
- ([0,
- _dA_,
- _dC_,
- cst_T$0,
- CalendarLib_Ftime[11],
- CalendarLib_Ftime[12],
- _dB_,
- _dD_,
- _dE_,
- _dF_,
- _dG_,
- _dH_,
- _dI_,
- _dJ_,
- _dK_]),
- _dM_=CalendarLib_Calendar[46],
- _dN_=_dM_[1],
- _dO_=_dM_[2],
- _dQ_=_dM_[18],
- _dP_=_dM_[3],
- _dR_=_dM_[36],
- _dS_=_dM_[39],
- _dT_=_dM_[41];
- function _dU_(_fB_,_fA_,_fz_,_fy_,_fx_,_fw_)
- {_da_
- (cst_calendar,[0,_fB_,[0,_fA_,[0,_fz_,[0,_fy_,[0,_fx_,[0,_fw_,0]]]]]]);
- return caml_call6(_dP_,_fB_,_fA_,_fz_,_fy_,_fx_,_fw_)}
- function _dV_(_fv_,_fu_,_ft_)
- {return caml_call1(_dR_,caml_call3(_dN_[32],_fv_,_fu_,_ft_))}
- function _dW_(_fr_)
- {var _fs_=caml_call1(_dQ_,_fr_);return caml_call1(_dN_[50],_fs_)}
- function _dX_(_fn_)
- {var
- _fo_=caml_call2(_dT_,_fn_,_dU_(1970,1,1,0,0,0)),
- _fp_=caml_call1(_dS_[21],_fo_),
- _fq_=caml_call1(_dO_[25][16],_fp_);
- return caml_call1(_dO_[1][3],_fq_)}
- var
- _dY_=
- _c4_
- ([0,
- [0,_dU_],
- _dV_,
- cst_i_T,
- _dM_[21],
- _dM_[22],
- _dM_[23],
- _dM_[13],
- _dM_[14],
- _dM_[15],
- _dM_[16],
- _dM_[17],
- _dQ_,
- _dW_,
- _dX_]),
- _dZ_=CalendarLib_Calendar[1],
- _d0_=CalendarLib_Calendar[2],
- _d2_=CalendarLib_Calendar[18],
- _d1_=CalendarLib_Calendar[3],
- _d3_=CalendarLib_Calendar[36],
- _d4_=CalendarLib_Calendar[39],
- _d5_=CalendarLib_Calendar[41];
- function _d6_(_fm_,_fl_,_fk_,_fj_,_fi_,_fh_)
- {_da_
- (cst_calendar$0,
- [0,_fm_,[0,_fl_,[0,_fk_,[0,_fj_,[0,_fi_,[0,_fh_,0]]]]]]);
- return caml_call6(_d1_,_fm_,_fl_,_fk_,_fj_,_fi_,_fh_)}
- function _d7_(_fg_,_ff_,_fe_)
- {return caml_call1(_d3_,caml_call3(_dZ_[32],_fg_,_ff_,_fe_))}
- function _d8_(_fc_)
- {var _fd_=caml_call1(_d2_,_fc_);return caml_call1(_dZ_[50],_fd_)}
- function _d9_(_e__)
- {var
- _e$_=caml_call2(_d5_,_e__,_d6_(1970,1,1,0,0,0)),
- _fa_=caml_call1(_d4_[21],_e$_),
- _fb_=caml_call1(_d0_[25][16],_fa_);
- return caml_call1(_d0_[1][3],_fb_)}
- var
- _d__=
- _c4_
- ([0,
- [0,_d6_],
- _d7_,
- cst_i_T$0,
- CalendarLib_Calendar[21],
- CalendarLib_Calendar[22],
- CalendarLib_Calendar[23],
- CalendarLib_Calendar[13],
- CalendarLib_Calendar[14],
- CalendarLib_Calendar[15],
- CalendarLib_Calendar[16],
- CalendarLib_Calendar[17],
- _d2_,
- _d8_,
- _d9_]),
- _d$_=CalendarLib_Fcalendar[46],
- _ea_=_d$_[1],
- _eb_=_d$_[2],
- _ed_=_d$_[18],
- _ec_=_d$_[3],
- _ee_=_d$_[23],
- _ef_=_d$_[36],
- _eg_=_d$_[39],
- _eh_=_d$_[41];
- function _ei_(_e9_,_e8_,_e7_,_e6_,_e5_,_e4_)
- {_da_
- (cst_calendar$1,
- [0,
- _e9_,
- [0,
- _e8_,
- [0,
- _e7_,
- [0,_e6_,[0,_e5_,[0,caml_call1(CalendarLib_Utils[2][5],_e4_),0]]]]]]);
- return caml_call6(_ec_,_e9_,_e8_,_e7_,_e6_,_e5_,_e4_)}
- function _ej_(_e3_,_e2_,_e1_)
- {return caml_call1(_ef_,caml_call3(_ea_[32],_e3_,_e2_,_e1_))}
- function _ek_(_eZ_)
- {var _e0_=caml_call1(_ee_,_eZ_);return caml_call1(_eb_[1][3],_e0_)}
- function _el_(_eX_)
- {var _eY_=caml_call1(_ed_,_eX_);return caml_call1(_ea_[50],_eY_)}
- function _em_(_eT_)
- {var
- _eU_=caml_call2(_eh_,_eT_,_ei_(1970,1,1,0,0,0.)),
- _eV_=caml_call1(_eg_[21],_eU_),
- _eW_=caml_call1(_eb_[25][16],_eV_);
- return caml_call1(_eb_[1][3],_eW_)}
- var
- _en_=
- _c4_
- ([0,
- [1,_ei_],
- _ej_,
- cst_i_T$1,
- _d$_[21],
- _d$_[22],
- _ek_,
- _d$_[13],
- _d$_[14],
- _d$_[15],
- _d$_[16],
- _d$_[17],
- _ed_,
- _el_,
- _em_]),
- _eo_=CalendarLib_Fcalendar[1],
- _ep_=CalendarLib_Fcalendar[2],
- _er_=CalendarLib_Fcalendar[18],
- _eq_=CalendarLib_Fcalendar[3],
- _es_=CalendarLib_Fcalendar[23],
- _et_=CalendarLib_Fcalendar[36],
- _eu_=CalendarLib_Fcalendar[39],
- _ev_=CalendarLib_Fcalendar[41];
- function _ew_(_eS_,_eR_,_eQ_,_eP_,_eO_,_eN_)
- {_da_
- (cst_calendar$2,
- [0,
- _eS_,
- [0,
- _eR_,
- [0,
- _eQ_,
- [0,_eP_,[0,_eO_,[0,caml_call1(CalendarLib_Utils[2][5],_eN_),0]]]]]]);
- return caml_call6(_eq_,_eS_,_eR_,_eQ_,_eP_,_eO_,_eN_)}
- function _ex_(_eM_,_eL_,_eK_)
- {return caml_call1(_et_,caml_call3(_eo_[32],_eM_,_eL_,_eK_))}
- function _ey_(_eI_)
- {var _eJ_=caml_call1(_es_,_eI_);return caml_call1(_ep_[1][3],_eJ_)}
- function _ez_(_eG_)
- {var _eH_=caml_call1(_er_,_eG_);return caml_call1(_eo_[50],_eH_)}
- function _eA_(_eC_)
- {var
- _eD_=caml_call2(_ev_,_eC_,_ew_(1970,1,1,0,0,0.)),
- _eE_=caml_call1(_eu_[21],_eD_),
- _eF_=caml_call1(_ep_[25][16],_eE_);
- return caml_call1(_ep_[1][3],_eF_)}
- var
- _eB_=
- _c4_
- ([0,
- [1,_ew_],
- _ex_,
- cst_i_T$2,
- CalendarLib_Fcalendar[21],
- CalendarLib_Fcalendar[22],
- _ey_,
- CalendarLib_Fcalendar[13],
- CalendarLib_Fcalendar[14],
- CalendarLib_Fcalendar[15],
- CalendarLib_Fcalendar[16],
- CalendarLib_Fcalendar[17],
- _er_,
- _ez_,
- _eA_]),
- CalendarLib_Printer=
- [0,
- _cQ_,
- _cR_,
- _cS_,
- _cT_,
- _cU_,
- _cV_,
- _c3_,
- [0,_dk_[2],_dk_[3],_dk_[4],_dk_[5],_dk_[6],_dk_[7],_dk_[8]],
- [0,_dk_[2],_dk_[3],_dk_[4],_dk_[5],_dk_[6],_dk_[7],_dk_[8]],
- [0,_dw_[2],_dw_[3],_dw_[4],_dw_[5],_dw_[6],_dw_[7],_dw_[8]],
- [0,_dw_[2],_dw_[3],_dw_[4],_dw_[5],_dw_[6],_dw_[7],_dw_[8]],
- [0,_dL_[2],_dL_[3],_dL_[4],_dL_[5],_dL_[6],_dL_[7],_dL_[8]],
- [0,_dY_[2],_dY_[3],_dY_[4],_dY_[5],_dY_[6],_dY_[7],_dY_[8]],
- [0,_d__[2],_d__[3],_d__[4],_d__[5],_d__[6],_d__[7],_d__[8]],
- [0,_d__[2],_d__[3],_d__[4],_d__[5],_d__[6],_d__[7],_d__[8]],
- [0,_en_[2],_en_[3],_en_[4],_en_[5],_en_[6],_en_[7],_en_[8]],
- [0,_eB_[2],_eB_[3],_eB_[4],_eB_[5],_eB_[6],_eB_[7],_eB_[8]]];
- caml_register_global(225,CalendarLib_Printer,"CalendarLib.Printer");
- var CalendarLib_Version=[0,cst_2_04,cst_dim_15_mai_2022_16_04_18_C];
- caml_register_global(226,CalendarLib_Version,"CalendarLib.Version");
- var
- CalendarLib=
- [0,
- 0,
- 0,
- 0,
- 0,
- CalendarLib_Utils,
- CalendarLib_Time_Zone,
- CalendarLib_Time,
- CalendarLib_Ftime,
- CalendarLib_Date,
- CalendarLib_Calendar_builder,
- CalendarLib_Calendar,
- CalendarLib_Fcalendar,
- CalendarLib_Printer,
- CalendarLib_Version];
- caml_register_global(227,CalendarLib,"CalendarLib");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/zarith/zarith.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_div=runtime.caml_div,
- caml_equal=runtime.caml_equal,
- caml_int64_to_float=runtime.caml_int64_to_float,
- caml_ldexp_float=runtime.caml_ldexp_float,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_mul=runtime.caml_mul,
- caml_register_global=runtime.caml_register_global,
- caml_string_get=runtime.caml_string_get,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_1_12=caml_string_of_jsbytes("1.12"),
- cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"),
- cst_Z_log2=caml_string_of_jsbytes("Z.log2"),
- cst_Z_signed_extract_negative_=
- caml_string_of_jsbytes("Z.signed_extract: negative bit offset"),
- cst_Z_signed_extract_nonpositi=
- caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"),
- cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"),
- cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"),
- cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"),
- cst_d=caml_string_of_jsbytes("%d"),
- cst$0=caml_string_of_jsbytes(""),
- cst_inf$1=caml_string_of_jsbytes("+inf"),
- cst_inf$2=caml_string_of_jsbytes("-inf"),
- cst_inf$3=caml_string_of_jsbytes("inf"),
- cst_undef$0=caml_string_of_jsbytes("undef"),
- cst_Q_of_string_invalid_digit=
- caml_string_of_jsbytes("Q.of_string: invalid digit"),
- cst_impossible_case$0=caml_string_of_jsbytes("impossible case"),
- cst_impossible_case=caml_string_of_jsbytes("impossible case"),
- cst_0=caml_string_of_jsbytes("0"),
- cst_inf=caml_string_of_jsbytes("+inf"),
- cst_inf$0=caml_string_of_jsbytes("-inf"),
- cst_undef=caml_string_of_jsbytes("undef"),
- cst=caml_string_of_jsbytes("/"),
- cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"),
- cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"),
- cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"),
- cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"),
- cst_power_big_int_positive_big=
- caml_string_of_jsbytes("power_big_int_positive_big_int"),
- cst_power_int_positive_big_int=
- caml_string_of_jsbytes("power_int_positive_big_int"),
- cst_power_big_int_positive_int=
- caml_string_of_jsbytes("power_big_int_positive_int"),
- cst_power_int_positive_int=
- caml_string_of_jsbytes("power_int_positive_int"),
- Stdlib_Format=global_data.Stdlib__Format,
- Stdlib_Buffer=global_data.Stdlib__Buffer,
- Stdlib=global_data.Stdlib,
- Stdlib_Sys=global_data.Stdlib__Sys,
- Stdlib_Callback=global_data.Stdlib__Callback,
- Stdlib_String=global_data.Stdlib__String,
- Assert_failure=global_data.Assert_failure,
- Zarith_version=[0,cst_1_12];
- caml_register_global(33,Zarith_version,"Zarith_version");
- var _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)];
- runtime.ml_z_init(0);
- caml_call2(Stdlib_Callback[2],cst_ml_z_overflow,_a_);
- var
- _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- _aV_=[0,caml_string_of_jsbytes("q.ml"),486,25];
- function _b_(_gZ_)
- {if(typeof _gZ_ === "number" && _gZ_ !== Stdlib[20])return - _gZ_ | 0;
- return runtime.ml_z_neg(_gZ_)}
- function _c_(_gX_,_gW_)
- {if(typeof _gX_ === "number" && typeof _gW_ === "number")
- {var _gY_=_gX_ + _gW_ | 0;
- return 0 <= ((_gY_ ^ _gX_) & (_gY_ ^ _gW_))
- ?_gY_
- :runtime.ml_z_add(_gX_,_gW_)}
- return runtime.ml_z_add(_gX_,_gW_)}
- function _d_(_gU_,_gT_)
- {if(typeof _gU_ === "number" && typeof _gT_ === "number")
- {var _gV_=_gU_ - _gT_ | 0;
- return 0 <= ((_gU_ ^ _gT_) & (_gV_ ^ _gU_))
- ?_gV_
- :runtime.ml_z_sub(_gU_,_gT_)}
- return runtime.ml_z_sub(_gU_,_gT_)}
- function _e_(_gS_,_gR_)
- {if
- (typeof _gS_
- ===
- "number"
- &&
- typeof _gR_
- ===
- "number"
- &&
- !
- runtime.ml_z_mul_overflows(_gS_,_gR_))
- return caml_mul(_gS_,_gR_);
- return runtime.ml_z_mul(_gS_,_gR_)}
- function _f_(_gQ_,_gP_)
- {return typeof _gP_ === "number"
- ?-1 === _gP_
- ?_b_(_gQ_)
- :typeof _gQ_ === "number"
- ?caml_div(_gQ_,_gP_)
- :runtime.ml_z_div(_gQ_,_gP_)
- :runtime.ml_z_div(_gQ_,_gP_)}
- function _g_(_gO_,_gN_)
- {return typeof _gN_ === "number"
- ?-1 === _gN_
- ?0
- :typeof _gO_ === "number"
- ?runtime.caml_mod(_gO_,_gN_)
- :runtime.ml_z_rem(_gO_,_gN_)
- :runtime.ml_z_rem(_gO_,_gN_)}
- function _h_(_gM_,_gL_)
- {return typeof _gL_ === "number"
- ?-1 === _gL_
- ?_b_(_gM_)
- :typeof _gM_ === "number"
- ?caml_div(_gM_,_gL_)
- :runtime.ml_z_divexact(_gM_,_gL_)
- :runtime.ml_z_divexact(_gM_,_gL_)}
- function _i_(_gK_)
- {if(typeof _gK_ === "number" && _gK_ !== Stdlib[19])return _gK_ + 1 | 0;
- return runtime.ml_z_succ(_gK_)}
- function _j_(_gJ_)
- {if(typeof _gJ_ === "number" && _gJ_ !== Stdlib[20])return _gJ_ - 1 | 0;
- return runtime.ml_z_pred(_gJ_)}
- function _k_(_gI_)
- {return typeof _gI_ === "number"
- ?0 <= _gI_
- ?_gI_
- :_gI_ !== Stdlib[20]?- _gI_ | 0:runtime.ml_z_abs(_gI_)
- :runtime.ml_z_abs(_gI_)}
- function _l_(_gH_,_gG_)
- {if(typeof _gH_ === "number" && typeof _gG_ === "number")
- return _gH_ & _gG_;
- return runtime.ml_z_logand(_gH_,_gG_)}
- function _m_(_gF_,_gE_)
- {if(typeof _gF_ === "number" && typeof _gE_ === "number")
- return _gF_ | _gE_;
- return runtime.ml_z_logor(_gF_,_gE_)}
- function _n_(_gD_,_gC_)
- {if(typeof _gD_ === "number" && typeof _gC_ === "number")
- return _gD_ ^ _gC_;
- return runtime.ml_z_logxor(_gD_,_gC_)}
- function _o_(_gB_)
- {return typeof _gB_ === "number"?_gB_ ^ -1:runtime.ml_z_lognot(_gB_)}
- function _p_(_gz_,_gy_)
- {if(typeof _gz_ === "number" && 0 <= _gy_ && _gy_ < Stdlib_Sys[9])
- {var _gA_=_gz_ << _gy_;
- return _gA_ >> _gy_ === _gz_?_gA_:runtime.ml_z_shift_left(_gz_,_gy_)}
- return runtime.ml_z_shift_left(_gz_,_gy_)}
- function _q_(_gw_,_gv_)
- {if(typeof _gw_ === "number" && 0 <= _gv_)
- {var _gx_=_gv_ < Stdlib_Sys[9]?_gv_:Stdlib_Sys[9] - 1 | 0;
- return _gw_ >> _gx_}
- return runtime.ml_z_shift_right(_gw_,_gv_)}
- function _r_(_gu_,_gt_)
- {if(typeof _gu_ === "number" && 0 <= _gt_)
- return Stdlib_Sys[9] <= _gt_
- ?0
- :0 <= _gu_?_gu_ >>> _gt_ | 0:- ((- _gu_ | 0) >>> _gt_ | 0) | 0;
- return runtime.ml_z_shift_right_trunc(_gu_,_gt_)}
- function _s_(_gs_)
- {return typeof _gs_ === "number"?_gs_:runtime.ml_z_to_int(_gs_)}
- var _t_=0,_u_=1,_v_=-1;
- function _w_(_gr_,_gq_)
- {return 0 < runtime.ml_z_compare(_gr_,_gq_)?_gq_:_gr_}
- function _x_(_gp_,_go_)
- {return 0 <= runtime.ml_z_compare(_gp_,_go_)?_gp_:_go_}
- function _y_(_gn_,_gm_){return runtime.ml_z_compare(_gn_,_gm_) <= 0?1:0}
- function _z_(_gl_,_gk_){return 0 <= runtime.ml_z_compare(_gl_,_gk_)?1:0}
- function _A_(_gj_,_gi_){return runtime.ml_z_compare(_gj_,_gi_) < 0?1:0}
- function _B_(_gh_,_gg_){return 0 < runtime.ml_z_compare(_gh_,_gg_)?1:0}
- function _C_(_gf_){return runtime.ml_z_format(cst_d,_gf_)}
- function _D_(_ge_)
- {return runtime.ml_z_of_substring_base
- (0,_ge_,0,caml_ml_string_length(_ge_))}
- function _E_(_gb_,_gc_,_gd_)
- {return runtime.ml_z_of_substring_base(0,_gb_,_gc_,_gd_)}
- function _F_(_ga_,_f$_)
- {return runtime.ml_z_of_substring_base
- (_ga_,_f$_,0,caml_ml_string_length(_f$_))}
- function _G_(_f5_,_f4_)
- {var _f6_=runtime.ml_z_div_rem(_f5_,_f4_),_f7_=_f6_[2],_f8_=_f6_[1];
- if(0 <= runtime.ml_z_sign(_f7_))return [0,_f8_,_f7_];
- if(0 <= runtime.ml_z_sign(_f4_))
- {var _f9_=_c_(_f7_,_f4_);return [0,_j_(_f8_),_f9_]}
- var _f__=_d_(_f7_,_f4_);
- return [0,_i_(_f8_),_f__]}
- function _H_(_f3_,_f2_)
- {return 0 <= runtime.ml_z_sign(_f2_)
- ?runtime.ml_z_fdiv(_f3_,_f2_)
- :runtime.ml_z_cdiv(_f3_,_f2_)}
- function _I_(_f0_,_fZ_)
- {var _f1_=_g_(_f0_,_fZ_);
- return 0 <= runtime.ml_z_sign(_f1_)?_f1_:_c_(_f1_,_k_(_fZ_))}
- function _J_(_fR_,_fQ_)
- {var
- _fS_=runtime.ml_z_sign(_fR_),
- _fT_=runtime.ml_z_sign(_fQ_),
- _fU_=_fS_ + 1 | 0;
- if(! (2 < _fU_ >>> 0))
- switch(_fU_)
- {case 0:if(0 === _fT_)return [0,_b_(_fR_),_v_,_t_];break;
- case 1:
- var _fY_=_fT_ + 1 | 0;
- if(! (2 < _fY_ >>> 0))
- switch(_fY_)
- {case 0:return [0,_b_(_fQ_),_t_,_v_];
- case 1:return [0,_t_,_t_,_t_];
- default:return [0,_fQ_,_t_,_u_]}
- break;
- default:if(0 === _fT_)return [0,_fR_,_u_,_t_]}
- var
- _fV_=runtime.ml_z_gcdext_intern(_fR_,_fQ_),
- _fW_=_fV_[2],
- _fX_=_fV_[1];
- return _fV_[3]
- ?[0,_fX_,_fW_,_f_(_d_(_fX_,_e_(_fR_,_fW_)),_fQ_)]
- :[0,_fX_,_f_(_d_(_fX_,_e_(_fQ_,_fW_)),_fR_),_fW_]}
- function _K_(_fP_,_fO_)
- {if(! caml_equal(_fP_,_t_) && ! caml_equal(_fO_,_t_))
- return _k_(_e_(_h_(_fP_,runtime.ml_z_gcd(_fP_,_fO_)),_fO_));
- return _t_}
- function _L_(_fN_,_fM_)
- {return 0 <= _fM_
- ?runtime.ml_z_testbit(_fN_,_fM_)
- :caml_call1(Stdlib[1],cst_Z_testbit)}
- function _M_(_fL_){return runtime.ml_z_testbit(_fL_,0)}
- function _N_(_fK_){return 1 - runtime.ml_z_testbit(_fK_,0)}
- function _O_(_fJ_,_fI_,_fH_)
- {if(_fI_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_);
- if(_fH_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi);
- return _L_(_fJ_,(_fI_ + _fH_ | 0) - 1 | 0)
- ?_o_(runtime.ml_z_extract(_o_(_fJ_),_fI_,_fH_))
- :runtime.ml_z_extract(_fJ_,_fI_,_fH_)}
- function _P_(_fG_)
- {return 0 < runtime.ml_z_sign(_fG_)
- ?runtime.ml_z_numbits(_fG_) - 1 | 0
- :caml_call1(Stdlib[1],cst_Z_log2)}
- function _Q_(_fF_)
- {return 0 < runtime.ml_z_sign(_fF_)
- ?runtime.ml_z_numbits(_j_(_fF_))
- :caml_call1(Stdlib[1],cst_Z_log2up)}
- function _R_(_fC_,_fB_)
- {var
- _fD_=runtime.ml_z_to_int64(_fC_),
- _fE_=_fB_?_fD_:runtime.caml_int64_or(_fD_,_S_);
- return caml_int64_to_float(_fE_)}
- function _T_(_fx_)
- {if(typeof _fx_ === "number")return _fx_;
- var _fy_=runtime.ml_z_numbits(_fx_);
- if(63 < _fy_)
- {var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_);
- return caml_ldexp_float
- (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)}
- return caml_int64_to_float(runtime.ml_z_to_int64(_fx_))}
- function _U_(_fv_){var _fw_=_C_(_fv_);return caml_call1(Stdlib[42],_fw_)}
- function _V_(_ft_,_fs_)
- {var _fu_=_C_(_fs_);return caml_call2(Stdlib[66],_ft_,_fu_)}
- function _W_(_fr_,_fq_){return _C_(_fq_)}
- function _X_(_fo_,_fn_)
- {var _fp_=_C_(_fn_);return caml_call2(Stdlib_Buffer[16],_fo_,_fp_)}
- function _Y_(_fl_,_fk_)
- {var _fm_=_C_(_fk_);return caml_call2(Stdlib_Format[13],_fl_,_fm_)}
- function _Z_(_fj_){return _fj_}
- function ___(_fi_,_fh_){return runtime.ml_z_equal(_fi_,_fh_)}
- var
- Z=
- [0,
- _a_,
- _t_,
- _u_,
- _v_,
- _D_,
- _E_,
- _F_,
- _i_,
- _j_,
- _k_,
- _b_,
- _c_,
- _d_,
- _e_,
- _f_,
- _g_,
- _G_,
- _H_,
- _I_,
- _h_,
- _l_,
- _m_,
- _n_,
- _o_,
- _p_,
- _q_,
- _r_,
- _L_,
- _s_,
- _T_,
- _C_,
- _U_,
- _V_,
- _W_,
- _X_,
- _Y_,
- _y_,
- _z_,
- _A_,
- _B_,
- _w_,
- _x_,
- _N_,
- _M_,
- _J_,
- _K_,
- _P_,
- _Q_,
- _O_,
- _b_,
- _Z_,
- _c_,
- _d_,
- _e_,
- _f_,
- _h_,
- _g_,
- _l_,
- _m_,
- _n_,
- _o_,
- _p_,
- _q_,
- [0,
- ___,
- _A_,
- _B_,
- _y_,
- _z_,
- function(_fg_,_ff_){return 1 - runtime.ml_z_equal(_fg_,_ff_)}],
- cst_1_12,
- _R_];
- caml_register_global(39,Z,"Z");
- function _$_(_fc_,_fb_)
- {if(_fc_ !== 0 && _fb_ !== 1)
- {var _fd_=runtime.ml_z_gcd(_fc_,_fb_);
- if(_fd_ === 1)return [0,_fc_,_fb_];
- var _fe_=_h_(_fb_,_fd_);
- return [0,_h_(_fc_,_fd_),_fe_]}
- return [0,_fc_,_u_]}
- function _aa_(_e__,_e9_)
- {var _e$_=runtime.ml_z_sign(_e9_);
- if(0 === _e$_)return [0,runtime.ml_z_sign(_e__),_t_];
- if(0 < _e$_)return _$_(_e__,_e9_);
- var _fa_=_b_(_e9_);
- return _$_(_b_(_e__),_fa_)}
- function _ab_(_e8_){return [0,_e8_,_u_]}
- function _ac_(_e7_){return _ab_(_e7_)}
- function _ad_(_e6_){return _ab_(runtime.ml_z_of_int32(_e6_))}
- function _ae_(_e5_){return _ab_(runtime.ml_z_of_int64(_e5_))}
- function _af_(_e4_){return _ab_(runtime.ml_z_of_nativeint(_e4_))}
- function _ag_(_e3_,_e2_){return _aa_(_e3_,_e2_)}
- var
- _ah_=_ab_(_t_),
- _ai_=_ab_(_u_),
- _ak_=[0,_u_,_t_],
- _al_=[0,_v_,_t_],
- _am_=[0,_t_,_t_],
- _aj_=_ab_(_v_);
- function _an_(_eY_)
- {if(_eY_ == Stdlib[22])return _ak_;
- if(_eY_ == Stdlib[23])return _al_;
- if(4 === runtime.caml_classify_float(_eY_))return _am_;
- var
- _eZ_=runtime.caml_frexp_float(_eY_),
- _e0_=_eZ_[2] - 53 | 0,
- _e1_=runtime.ml_z_of_float(caml_ldexp_float(_eZ_[1],53));
- return 0 <= _e0_?_ab_(_p_(_e1_,_e0_)):_$_(_e1_,_p_(_u_,- _e0_ | 0))}
- function _ao_(_eW_)
- {if(_eW_[2] === 0)
- {var _eX_=runtime.ml_z_sign(_eW_[1]) + 1 | 0;
- if(! (2 < _eX_ >>> 0))
- switch(_eX_){case 0:return 2;case 1:break;default:return 1}
- return 3}
- return _eW_[1] === 0?0:4}
- function _ap_(_eV_){return _eV_[2] !== 0?1:0}
- function _aq_(_eU_){return _eU_[1]}
- function _ar_(_eT_){return _eT_[2]}
- function _as_(_eS_){return runtime.ml_z_sign(_eS_[1])}
- function _at_(_eO_,_eN_)
- {var _eP_=runtime.ml_z_equal(_eO_[1],_eN_[1]);
- if(_eP_)
- var
- _eQ_=runtime.ml_z_equal(_eO_[2],_eN_[2]),
- _eR_=_eQ_?3 !== _ao_(_eO_)?1:0:_eQ_;
- else
- var _eR_=_eP_;
- return _eR_}
- function _au_(_eH_,_eG_)
- {var _eI_=_ao_(_eH_),_eJ_=_ao_(_eG_),switch$0=0;
- switch(_eI_)
- {case 1:
- var _eM_=_eJ_ - 1 | 0;
- if(! (2 < _eM_ >>> 0))
- switch(_eM_)
- {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1}
- break;
- case 2:
- if(1 === _eJ_)
- switch$0 = 1;
- else
- if(_eJ_)
- switch(_eJ_ - 2 | 0)
- {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2}
- break;
- case 3:if(3 !== _eJ_)return -1;switch$0 = 2;break;
- default:switch$0 = 1}
- var switch$1=0;
- switch(switch$0)
- {case 1:
- var _eK_=_eJ_ - 1 | 0;
- if(! (2 < _eK_ >>> 0))
- switch(_eK_)
- {case 0:switch$1 = 1;break;case 1:break;default:return 1}
- break;
- case 0:break;
- default:return 0}
- if(! switch$1)
- {var switch$2=0;
- if(! (4 <= _eI_))
- switch(_eI_)
- {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2}
- var switch$3=0;
- switch(switch$2)
- {case 0:
- if(2 !== _eJ_)
- {if(caml_equal(_eH_[2],_eG_[2]))
- return runtime.ml_z_compare(_eH_[1],_eG_[1]);
- var _eL_=_e_(_eG_[1],_eH_[2]);
- return runtime.ml_z_compare(_e_(_eH_[1],_eG_[2]),_eL_)}
- switch$3 = 1;
- break;
- case 1:break;
- default:switch$3 = 1}
- if(switch$3)return 1}
- return -1}
- function _av_(_eF_,_eE_){return 0 < _au_(_eF_,_eE_)?_eE_:_eF_}
- function _aw_(_eD_,_eC_){return 0 <= _au_(_eD_,_eC_)?_eD_:_eC_}
- function _ax_(_ex_,_ew_)
- {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_);
- if(3 !== _ey_)
- {var _eA_=_ez_ - 1 | 0,switch$0=0;
- if(! (2 < _eA_ >>> 0))
- switch(_eA_)
- {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1}
- var switch$1=0;
- switch(switch$0)
- {case 0:
- var switch$2=0;
- if(! (4 <= _ey_))
- switch(_ey_)
- {case 0:break;
- case 2:switch$1 = 1;switch$2 = 2;break;
- default:switch$2 = 1}
- var switch$3=0;
- switch(switch$2)
- {case 2:switch$3 = 1;break;
- case 0:
- if(2 !== _ez_)
- {if(caml_equal(_ex_[2],_ew_[2]))return _y_(_ex_[1],_ew_[1]);
- var _eB_=_e_(_ew_[1],_ex_[2]);
- return _y_(_e_(_ex_[1],_ew_[2]),_eB_)}
- break
- }
- if(! switch$3)return 0;
- break;
- case 1:break;
- default:switch$1 = 1}
- if(switch$1)return 1}
- return 0}
- function _ay_(_es_,_er_)
- {var _et_=_ao_(_es_),_eu_=_ao_(_er_);
- if(3 !== _et_)
- {var switch$0=0;
- if(2 <= _eu_)
- switch(_eu_ - 2 | 0)
- {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2}
- var switch$1=0;
- switch(switch$0)
- {case 0:
- var switch$2=0;
- if(! (4 <= _et_))
- switch(_et_)
- {case 0:break;
- case 1:switch$1 = 1;switch$2 = 2;break;
- default:switch$2 = 1}
- var switch$3=0;
- switch(switch$2)
- {case 2:switch$3 = 1;break;
- case 0:
- if(1 !== _eu_)
- {if(caml_equal(_es_[2],_er_[2]))return _A_(_es_[1],_er_[1]);
- var _ev_=_e_(_er_[1],_es_[2]);
- return _A_(_e_(_es_[1],_er_[2]),_ev_)}
- break
- }
- if(! switch$3)return 1;
- break;
- case 1:break;
- default:switch$1 = 1}
- if(switch$1)return 0}
- return 0}
- function _az_(_eq_,_ep_){return _ax_(_ep_,_eq_)}
- function _aA_(_eo_,_en_){return _ay_(_en_,_eo_)}
- function _aB_(_ej_)
- {switch(_ao_(_ej_))
- {case 0:return cst_0;
- case 1:return cst_inf;
- case 2:return cst_inf$0;
- case 3:return cst_undef;
- default:
- if(runtime.ml_z_equal(_ej_[2],1))return _C_(_ej_[1]);
- var
- _ek_=_C_(_ej_[2]),
- _el_=caml_call2(Stdlib[28],cst,_ek_),
- _em_=_C_(_ej_[1]);
- return caml_call2(Stdlib[28],_em_,_el_)}}
- function _aC_(_ei_){return _f_(_ei_[1],_ei_[2])}
- function _aD_(_eh_){return _s_(_aC_(_eh_))}
- function _aE_(_eg_){return runtime.ml_z_to_int32(_aC_(_eg_))}
- function _aF_(_ef_){return runtime.ml_z_to_int64(_aC_(_ef_))}
- function _aG_(_ee_){return runtime.ml_z_to_nativeint(_aC_(_ee_))}
- function _aH_(_dZ_)
- {switch(_ao_(_dZ_))
- {case 0:return 0.;
- case 1:return Stdlib[22];
- case 2:return Stdlib[23];
- case 3:return Stdlib[24];
- default:
- var
- _d0_=_dZ_[1],
- _d1_=_dZ_[2],
- _d2_=runtime.ml_z_numbits(_d0_),
- _d3_=runtime.ml_z_numbits(_d1_);
- if(! (53 < _d2_) && ! (53 < _d3_))
- {var _ed_=caml_int64_to_float(runtime.ml_z_to_int64(_d1_));
- return caml_int64_to_float(runtime.ml_z_to_int64(_d0_)) / _ed_}
- var _d4_=0 <= runtime.ml_z_sign(_d0_)?1:-1,_d5_=_d2_ - _d3_ | 0;
- if(0 <= _d5_)
- var _d7_=_p_(_d1_,_d5_),_d6_=_d0_;
- else
- var _d7_=_d1_,_d6_=_p_(_d0_,- _d5_ | 0);
- if(_z_(_k_(_d6_),_d7_))
- var _d9_=_d5_,_d8_=_d6_;
- else
- var _d9_=_d5_ - 1 | 0,_d8_=_p_(_d6_,1);
- var _d__=_G_(_p_(_d8_,54),_d7_);
- if(-1080 < _d9_)
- {var
- _d$_=-1023 < _d9_?_t_:_p_(_d4_,55 + (-1023 - _d9_ | 0) | 0),
- _ea_=_c_(_d$_,_d__[1]),
- _eb_=0 === runtime.ml_z_sign(_d__[2])?_ea_:_m_(_u_,_ea_),
- _ec_=_T_(_eb_);
- return caml_ldexp_float(_ec_ - _T_(_d$_),_d9_ - 54 | 0)}
- return caml_ldexp_float(_d4_,-1080)}}
- function _aI_(_dX_){var _dY_=_dX_[2];return [0,_b_(_dX_[1]),_dY_]}
- function _aJ_(_dV_){var _dW_=_dV_[2];return [0,_k_(_dV_[1]),_dW_]}
- function _aK_(_dR_,_dQ_,_dP_)
- {if(_dQ_[2] === _dP_[2])
- {var _dS_=_dQ_[2];return _$_(caml_call2(_dR_,_dQ_[1],_dP_[1]),_dS_)}
- var _dT_=_e_(_dQ_[2],_dP_[2]),_dU_=_e_(_dP_[1],_dQ_[2]);
- return _$_(caml_call2(_dR_,_e_(_dQ_[1],_dP_[2]),_dU_),_dT_)}
- function _aL_(_dM_,_dL_)
- {if(_dM_[2] !== 0 && _dL_[2] !== 0)return _aK_(_c_,_dM_,_dL_);
- var _dN_=_ao_(_dM_),_dO_=_ao_(_dL_),switch$0=0;
- switch(_dN_)
- {case 0:return _dL_;
- case 1:
- switch(_dO_)
- {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1}
- break;
- case 2:
- switch(_dO_)
- {case 2:switch$0 = 2;break;
- case 1:switch$0 = 3;break;
- case 4:switch$0 = 4;break
- }
- break;
- case 4:
- switch(_dO_)
- {case 4:return caml_call1(Stdlib[2],cst_impossible_case);
- case 0:
- case 3:break;
- default:switch$0 = 2}
- break
- }
- var switch$1=0;
- switch(switch$0)
- {case 0:if(3 === _dO_)switch$1 = 1;else if(! _dO_)return _dM_;break;
- case 1:break;
- case 2:switch$1 = 2 <= _dO_?3:2;break;
- case 3:return _am_;
- default:switch$1 = 3}
- var switch$2=0;
- switch(switch$1)
- {case 0:if(! (3 <= _dN_))switch$2 = 1;break;
- case 1:break;
- case 2:switch$2 = 1;break;
- default:return _al_}
- return switch$2?_ak_:_am_}
- function _aM_(_dI_,_dH_)
- {if(_dI_[2] !== 0 && _dH_[2] !== 0)return _aK_(_d_,_dI_,_dH_);
- var _dJ_=_ao_(_dI_),_dK_=_ao_(_dH_),switch$0=0;
- switch(_dJ_)
- {case 0:return _aI_(_dH_);
- case 1:
- switch(_dK_)
- {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1}
- break;
- case 2:
- switch(_dK_)
- {case 1:switch$0 = 2;break;
- case 2:switch$0 = 3;break;
- case 4:switch$0 = 4;break
- }
- break;
- case 4:
- switch(_dK_)
- {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0);
- case 0:
- case 3:break;
- default:switch$0 = 2}
- break
- }
- var switch$1=0;
- switch(switch$0)
- {case 0:if(3 === _dK_)switch$1 = 1;else if(! _dK_)return _dI_;break;
- case 1:break;
- case 2:switch$1 = 2 <= _dK_?2:3;break;
- case 3:return _am_;
- default:switch$1 = 3}
- var switch$2=0;
- switch(switch$1)
- {case 0:if(! (3 <= _dJ_))switch$2 = 1;break;
- case 1:break;
- case 2:switch$2 = 1;break;
- default:return _al_}
- return switch$2?_ak_:_am_}
- function _aN_(_dE_,_dD_)
- {if(_dE_[2] !== 0 && _dD_[2] !== 0)
- {var _dG_=_e_(_dE_[2],_dD_[2]);return _$_(_e_(_dE_[1],_dD_[1]),_dG_)}
- var _dF_=runtime.ml_z_sign(_dD_[1]);
- return [0,caml_mul(runtime.ml_z_sign(_dE_[1]),_dF_),_t_]}
- function _aO_(_dA_)
- {var _dB_=runtime.ml_z_sign(_dA_[1]) + 1 | 0;
- if(! (2 < _dB_ >>> 0))
- switch(_dB_)
- {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_];
- case 1:break;
- default:return [0,_dA_[2],_dA_[1]]}
- return _dA_[2] === 0?_am_:_ak_}
- function _aP_(_dy_,_dx_)
- {if(0 <= runtime.ml_z_sign(_dx_[1]))
- return _aN_(_dy_,[0,_dx_[2],_dx_[1]]);
- var _dz_=_b_(_dx_[1]);
- return _aN_(_dy_,[0,_b_(_dx_[2]),_dz_])}
- function _aQ_(_dv_,_du_)
- {if(_dv_[2] === 0)return _dv_;
- var _dw_=_dv_[2];
- return _$_(_p_(_dv_[1],_du_),_dw_)}
- function _aR_(_ds_,_dr_)
- {if(_ds_[2] === 0)return _ds_;
- var _dt_=_p_(_ds_[2],_dr_);
- return _$_(_ds_[1],_dt_)}
- function _aS_(_dq_)
- {switch(_dq_)
- {case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}}
- function _aT_(_do_,_dn_,_dm_,_dl_)
- {var _dp_=_dn_;
- for(;;)
- {if(_dm_ <= _dp_)return 0;
- if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_];
- var _dp_=_dp_ + 1 | 0;
- continue}}
- function _aU_(_cy_)
- {if(caml_string_notequal(_cy_,cst$0))
- {if(caml_string_notequal(_cy_,cst_inf$1))
- {if(! caml_string_notequal(_cy_,cst_inf$2))return _al_;
- if(caml_string_notequal(_cy_,cst_inf$3))
- {if(caml_string_notequal(_cy_,cst_undef$0))
- try
- {var
- _dc_=caml_call2(Stdlib_String[35],_cy_,47),
- _dd_=
- runtime.ml_z_of_substring_base
- (0,
- _cy_,
- _dc_ + 1 | 0,
- (caml_ml_string_length(_cy_) - _dc_ | 0) - 1 | 0),
- _de_=_aa_(runtime.ml_z_of_substring_base(0,_cy_,0,_dc_),_dd_);
- return _de_}
- catch(_df_)
- {_df_ = caml_wrap_exception(_df_);
- if(_df_ === Stdlib[8])
- {var _cA_=caml_ml_string_length(_cy_),_cz_=0;
- if(_cA_ < 1)
- var _cB_=[0,0,_cz_];
- else
- {var _c$_=caml_string_get(_cy_,0) - 43 | 0,switch$0=0;
- if(! (2 < _c$_ >>> 0))
- {var switch$1=0;
- switch(_c$_)
- {case 0:var _db_=[0,0,1];break;
- case 1:switch$1 = 1;break;
- default:var _db_=[0,1,1]}
- if(! switch$1){var _da_=_db_;switch$0 = 1}}
- if(! switch$0)var _da_=[0,0,_cz_];
- var _cB_=_da_}
- var _cC_=_cB_[2];
- if(_cA_ < (_cC_ + 2 | 0))
- var _cD_=[0,2,_cC_];
- else
- {var
- _c8_=caml_string_get(_cy_,_cC_),
- _c9_=caml_string_get(_cy_,_cC_ + 1 | 0),
- switch$2=0;
- if(48 === _c8_)
- {var switch$3=0;
- if(89 <= _c9_)
- {if(98 === _c9_)
- switch$3 = 2;
- else
- if(111 === _c9_)
- switch$3 = 1;
- else
- if(120 !== _c9_){switch$2 = 1;switch$3 = 3}}
- else
- if(66 === _c9_)
- switch$3 = 2;
- else
- if(79 === _c9_)
- switch$3 = 1;
- else
- if(! (88 <= _c9_)){switch$2 = 1;switch$3 = 3}
- switch(switch$3)
- {case 3:break;
- case 0:var _c__=[0,3,_cC_ + 2 | 0];break;
- case 1:var _c__=[0,1,_cC_ + 2 | 0];break;
- default:var _c__=[0,0,_cC_ + 2 | 0]}}
- else
- switch$2 = 1;
- if(switch$2)var _c__=[0,2,_cC_];
- var _cD_=_c__}
- var
- _cE_=_cD_[2],
- _cF_=_cD_[1],
- _cG_=
- 2 === _cF_
- ?function(_di_)
- {if(69 !== _di_ && 101 !== _di_)return 0;return 1}
- :3 <= _cF_
- ?function(_dj_)
- {if(80 !== _dj_ && 112 !== _dj_)return 0;return 1}
- :function(_dk_){return 0},
- _cH_=_aT_(_cy_,_cE_,_cA_,_cG_);
- if(_cH_)
- var
- _cI_=_cH_[1],
- _cJ_=_cI_ + 1 | 0,
- _cL_=_cI_,
- _cK_=
- _s_
- (runtime.ml_z_of_substring_base
- (10,_cy_,_cJ_,_cA_ - _cJ_ | 0));
- else
- var _cL_=_cA_,_cK_=0;
- if(2 <= _cF_)
- {var
- _cM_=
- _aT_(_cy_,_cE_,_cL_,function(_dh_){return 46 === _dh_?1:0});
- if(_cM_)
- {var _cN_=_cM_[1];
- if(2 === _cF_)
- var _cO_=1;
- else
- {if(! (3 <= _cF_))throw [0,Assert_failure,_aV_];var _cO_=4}
- var _cQ_=_cN_ + 1 | 0,_cR_=_cL_ - 1 | 0,_cP_=0;
- if(_cR_ < _cQ_)
- var _cS_=_cP_;
- else
- {var _c4_=_cQ_,_c3_=_cP_;
- for(;;)
- {var _c5_=caml_string_get(_cy_,_c4_),switch$4=0;
- if(71 <= _c5_)
- {if(97 <= _c5_)
- {if(! (103 <= _c5_))switch$4 = 1}
- else
- if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}}
- else
- if(58 <= _c5_)
- {if(65 <= _c5_)switch$4 = 1}
- else
- if(48 <= _c5_)switch$4 = 1;
- switch(switch$4)
- {case 0:
- caml_call1(Stdlib[1],cst_Q_of_string_invalid_digit);
- var _c6_=_c3_;
- break;
- case 1:var _c6_=_c3_ + 1 | 0;break
- }
- var _c7_=_c4_ + 1 | 0;
- if(_cR_ !== _c4_){var _c4_=_c7_,_c3_=_c6_;continue}
- var _cS_=_c6_;
- break}}
- var
- _cT_=
- _aT_
- (_cy_,
- _cN_ + 1 | 0,
- _cL_,
- function(_dg_){return 95 !== _dg_?1:0}),
- _cU_=_cT_?_cT_[1]:_cL_,
- _cV_=caml_call3(Stdlib_String[15],_cy_,_cU_,_cL_ - _cU_ | 0),
- _cW_=caml_call3(Stdlib_String[15],_cy_,_cE_,_cN_ - _cE_ | 0),
- _cX_=caml_call2(Stdlib[28],_cW_,_cV_),
- _cZ_=caml_mul(_cS_,_cO_),
- _cY_=_F_(_aS_(_cF_),_cX_)}
- else
- var
- _cZ_=0,
- _cY_=
- runtime.ml_z_of_substring_base
- (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0)}
- else
- var
- _cZ_=0,
- _cY_=
- runtime.ml_z_of_substring_base
- (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0);
- var
- _c0_=_cK_ - _cZ_ | 0,
- _c1_=2 === _cF_?10:3 <= _cF_?2:1,
- _c2_=
- 0 <= _c0_
- ?_ab_(_e_(_cY_,runtime.ml_z_pow(_c1_,_c0_)))
- :_aa_(_cY_,runtime.ml_z_pow(_c1_,- _c0_ | 0));
- return _cB_[1]?_aI_(_c2_):_c2_}
- throw _df_}
- return _am_}}
- return _ak_}
- return _ah_}
- function _aW_(_cw_)
- {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)}
- function _aX_(_cu_,_ct_)
- {var _cv_=_aB_(_ct_);return caml_call2(Stdlib[66],_cu_,_cv_)}
- function _aY_(_cs_,_cr_){return _aB_(_cr_)}
- function _aZ_(_cp_,_co_)
- {var _cq_=_aB_(_co_);return caml_call2(Stdlib_Buffer[16],_cp_,_cq_)}
- function _a0_(_cm_,_cl_)
- {var _cn_=_aB_(_cl_);return caml_call2(Stdlib_Format[13],_cm_,_cn_)}
- function _a1_(_ck_){return _ck_}
- var
- Q=
- [0,
- _aa_,
- _ah_,
- _ai_,
- _aj_,
- _ak_,
- _al_,
- _am_,
- _ab_,
- _ac_,
- _ad_,
- _ae_,
- _af_,
- _ag_,
- _an_,
- _aU_,
- _aq_,
- _ar_,
- _ao_,
- _ap_,
- _as_,
- _au_,
- _at_,
- _av_,
- _aw_,
- _ax_,
- _az_,
- _ay_,
- _aA_,
- _aC_,
- _aD_,
- _aE_,
- _aF_,
- _aG_,
- _aB_,
- _aH_,
- _aI_,
- _aJ_,
- _aL_,
- _aM_,
- _aN_,
- _aO_,
- _aP_,
- _aQ_,
- _aR_,
- _aW_,
- _aX_,
- _aY_,
- _aZ_,
- _a0_,
- _aI_,
- _a1_,
- _aL_,
- _aM_,
- _aN_,
- _aP_,
- _aQ_,
- _aR_,
- _ac_,
- _ag_,
- _ab_,
- _aa_,
- _at_,
- _ay_,
- _aA_,
- _ax_,
- _az_,
- function(_cj_,_ci_){return 1 - _at_(_cj_,_ci_)}];
- caml_register_global(42,Q,"Q");
- function _a2_(_ch_,_cg_){return _c_(_ch_,_cg_)}
- function _a3_(_cf_,_ce_){return _e_(_cf_,_ce_)}
- function _a4_(_cd_){return _e_(_cd_,_cd_)}
- function _a5_(_cc_){return runtime.ml_z_sqrt(_cc_)}
- function _a6_(_cb_,_ca_){return runtime.ml_z_gcd(_cb_,_ca_)}
- function _a7_(_b$_,_b__){return runtime.ml_z_pow(_b$_,_b__)}
- function _a8_(_b9_,_b8_){return runtime.ml_z_pow(_b9_,_s_(_b8_))}
- function _a9_(_b7_,_b6_)
- {if(_b6_ < 0)throw [0,Stdlib[6],cst_power_int_positive_int];
- return runtime.ml_z_pow(_b7_,_b6_)}
- function _a__(_b5_,_b4_)
- {if(_b4_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int];
- return runtime.ml_z_pow(_b5_,_b4_)}
- function _a$_(_b3_,_b2_)
- {if(runtime.ml_z_sign(_b2_) < 0)
- throw [0,Stdlib[6],cst_power_int_positive_big_int];
- return _a8_(_b3_,_b2_)}
- function _ba_(_b1_,_b0_)
- {if(runtime.ml_z_sign(_b0_) < 0)
- throw [0,Stdlib[6],cst_power_big_int_positive_big];
- return _a8_(_b1_,_b0_)}
- function _bb_(_bZ_){return runtime.ml_z_sign(_bZ_)}
- function _bc_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_)}
- function _bd_(_bW_,_bV_){return runtime.ml_z_equal(_bW_,_bV_)}
- function _be_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) <= 0?1:0}
- function _bf_(_bS_,_bR_){return 0 <= runtime.ml_z_compare(_bS_,_bR_)?1:0}
- function _bg_(_bQ_,_bP_){return runtime.ml_z_compare(_bQ_,_bP_) < 0?1:0}
- function _bh_(_bO_,_bN_){return 0 < runtime.ml_z_compare(_bO_,_bN_)?1:0}
- function _bi_(_bM_){return runtime.ml_z_size(_bM_)}
- function _bj_(_bL_){return _bL_}
- function _bk_(_bK_){return runtime.ml_z_fits_int(_bK_)}
- function _bl_(_bH_)
- {try
- {var _bI_=_s_(_bH_);return _bI_}
- catch(_bJ_)
- {_bJ_ = caml_wrap_exception(_bJ_);
- if(_bJ_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int);
- throw _bJ_}}
- function _bm_(_bG_){return runtime.ml_z_of_int32(_bG_)}
- function _bn_(_bF_){return runtime.ml_z_of_nativeint(_bF_)}
- function _bo_(_bE_){return runtime.ml_z_of_int64(_bE_)}
- function _bp_(_bB_)
- {try
- {var _bC_=runtime.ml_z_to_int32(_bB_);return _bC_}
- catch(_bD_)
- {_bD_ = caml_wrap_exception(_bD_);
- if(_bD_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int);
- throw _bD_}}
- function _bq_(_by_)
- {try
- {var _bz_=runtime.ml_z_to_nativeint(_by_);return _bz_}
- catch(_bA_)
- {_bA_ = caml_wrap_exception(_bA_);
- if(_bA_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int);
- throw _bA_}}
- function _br_(_bv_)
- {try
- {var _bw_=runtime.ml_z_to_int64(_bv_);return _bw_}
- catch(_bx_)
- {_bx_ = caml_wrap_exception(_bx_);
- if(_bx_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int);
- throw _bx_}}
- var
- Big_int_Z=
- [0,
- _t_,
- _u_,
- _b_,
- _k_,
- _c_,
- _i_,
- _a2_,
- _d_,
- _j_,
- _e_,
- _a3_,
- _a4_,
- _a5_,
- _G_,
- _H_,
- _I_,
- _a6_,
- _a7_,
- _a8_,
- _a9_,
- _a__,
- _a$_,
- _ba_,
- _bb_,
- _bc_,
- _bd_,
- _be_,
- _bf_,
- _bg_,
- _bh_,
- _x_,
- _w_,
- _bi_,
- _C_,
- _D_,
- _bj_,
- _bk_,
- _bl_,
- _bm_,
- _bn_,
- _bo_,
- _bp_,
- _bq_,
- _br_,
- _T_,
- _l_,
- _m_,
- _n_,
- _p_,
- _q_,
- _r_,
- function(_bu_,_bt_,_bs_){return runtime.ml_z_extract(_bu_,_bt_,_bs_)}];
- caml_register_global(43,Big_int_Z,"Big_int_Z");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js"
-(function(globalThis)
- {"use strict";
- var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0];
- runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/easy-format/easy_format.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- var
- global_data=runtime.caml_get_global_data(),
- cst$1=caml_string_of_jsbytes(" "),
- cst$2=caml_string_of_jsbytes(" "),
- cst$3=caml_string_of_jsbytes(" "),
- cst$4=caml_string_of_jsbytes(" "),
- cst$5=caml_string_of_jsbytes(" "),
- cst$6=caml_string_of_jsbytes(" "),
- cst$7=caml_string_of_jsbytes(" "),
- cst$8=caml_string_of_jsbytes(" "),
- cst$0=caml_string_of_jsbytes(""),
- cst=caml_string_of_jsbytes(""),
- atom=[0,0],
- list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0],
- label=[0,726666127,1,2,0],
- list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0],
- list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0],
- label_true=[0,726666127,1,2,0],
- label_false=[0,726666127,0,2,0],
- Stdlib_Buffer=global_data.Stdlib__Buffer,
- Stdlib_Format=global_data.Stdlib__Format,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Stdlib=global_data.Stdlib,
- Stdlib_String=global_data.Stdlib__String,
- Stdlib_Hashtbl=global_data.Stdlib__Hashtbl,
- _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
- _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")];
- function set_escape(fmt,escape)
- {var
- match=caml_call2(Stdlib_Format[98],fmt,0),
- flush0=match[2],
- print0=match[1],
- tagf0=caml_call2(Stdlib_Format[153],fmt,0),
- is_tag=[0,0];
- function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)}
- function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)}
- function print(s,p,n)
- {return is_tag[1]
- ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0)
- :caml_call4(escape,print0,s,p,n)}
- var tagf=[0,mot,mct,tagf0[3],tagf0[4]];
- caml_call3(Stdlib_Format[96],fmt,print,flush0);
- return caml_call2(Stdlib_Format[151],fmt,tagf)}
- function define_styles(fmt,escape$0,l)
- {if(0 !== l)
- {caml_call2(Stdlib_Format[84],fmt,1);
- var
- _R_=2 * caml_call1(Stdlib_List[1],l) | 0,
- tbl1=caml_call2(Stdlib_Hashtbl[1],0,_R_),
- _S_=2 * caml_call1(Stdlib_List[1],l) | 0,
- tbl2=caml_call2(Stdlib_Hashtbl[1],0,_S_),
- _T_=
- function(param)
- {var style=param[2],style_name=param[1];
- caml_call3(Stdlib_Hashtbl[5],tbl1,style_name,style[1]);
- return caml_call3(Stdlib_Hashtbl[5],tbl2,style_name,style[2])};
- caml_call2(Stdlib_List[17],_T_,l);
- var
- mark_open_tag=
- function(style_name)
- {try
- {var _X_=caml_call2(Stdlib_Hashtbl[6],tbl1,style_name);
- return _X_}
- catch(_Y_)
- {_Y_ = caml_wrap_exception(_Y_);
- if(_Y_ === Stdlib[8])return cst;
- throw _Y_}},
- mark_close_tag=
- function(style_name)
- {try
- {var _V_=caml_call2(Stdlib_Hashtbl[6],tbl2,style_name);
- return _V_}
- catch(_W_)
- {_W_ = caml_wrap_exception(_W_);
- if(_W_ === Stdlib[8])return cst$0;
- throw _W_}},
- _U_=caml_call2(Stdlib_Format[153],fmt,0),
- tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]];
- caml_call2(Stdlib_Format[151],fmt,tagf)}
- if(typeof escape$0 === "number")return 0;
- if(258914209 <= escape$0[1])
- {var esc=escape$0[2];return set_escape(fmt,esc)}
- var esc$0=escape$0[2];
- function escape(print,s,p,n)
- {var s0=caml_call3(Stdlib_String[15],s,p,n),s1=caml_call1(esc$0,s0);
- return caml_call3(print,s1,0,caml_ml_string_length(s1))}
- return set_escape(fmt,escape)}
- function pp_open_xbox(fmt,p,indent)
- {var _Q_=p[8];
- if(451368025 <= _Q_)
- {if(! (736550845 <= _Q_))return caml_call2(Stdlib_Format[7],fmt,indent)}
- else
- if(379096626 <= _Q_)return caml_call2(Stdlib_Format[5],fmt,0);
- return caml_call2(Stdlib_Format[9],fmt,indent)}
- function extra_box(p,l)
- {var _M_=p[8];
- if(379096626 <= _M_)
- var wrap=922275930 <= _M_?1:0;
- else
- var
- _P_=function(param){return 0 === param[0]?1:0},
- wrap=caml_call2(Stdlib_List[32],_P_,l);
- if(wrap)
- {var _N_=function(fmt){return caml_call2(Stdlib_Format[3],fmt,0)};
- return [0,
- function(fmt){return caml_call2(Stdlib_Format[11],fmt,0)},
- _N_]}
- function _O_(param){return 0}
- return [0,function(param){return 0},_O_]}
- function open_tag(fmt,param)
- {if(param){var s=param[1];return caml_call2(Stdlib_Format[147],fmt,s)}
- return 0}
- function close_tag(fmt,param)
- {return param?caml_call2(Stdlib_Format[149],fmt,0):0}
- function tag_string(fmt,o,s)
- {if(o)
- {var tag=o[1];
- caml_call2(Stdlib_Format[147],fmt,tag);
- caml_call2(Stdlib_Format[13],fmt,s);
- return caml_call2(Stdlib_Format[149],fmt,0)}
- return caml_call2(Stdlib_Format[13],fmt,s)}
- function fprint_opt_label(fmt,param)
- {if(param)
- {var match=param[1],lp=match[2],lab=match[1];
- open_tag(fmt,lp[4]);
- fprint_t(fmt,lab);
- close_tag(fmt,lp[4]);
- var _L_=lp[2];
- return _L_?caml_call2(Stdlib_Format[13],fmt,cst$3):_L_}
- return 0}
- function fprint_list_body_stick_left(fmt,p,sep,hd,tl)
- {open_tag(fmt,p[12]);
- fprint_t(fmt,hd);
- function _K_(x)
- {if(p[3])caml_call2(Stdlib_Format[13],fmt,cst$1);
- tag_string(fmt,p[13],sep);
- if(p[2])
- caml_call2(Stdlib_Format[27],fmt,0);
- else
- caml_call2(Stdlib_Format[29],fmt,0);
- return fprint_t(fmt,x)}
- caml_call2(Stdlib_List[17],_K_,tl);
- return close_tag(fmt,p[12])}
- function fprint_t(fmt,param)
- {switch(param[0])
- {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s);
- case 1:
- var l=param[2],param$0=param[1],p$0=param$0[4];
- open_tag(fmt,p$0[10]);
- if(p$0[7])
- fprint_list(fmt,0,param$0,l);
- else
- {var _C_=param$0[4],_D_=param$0[3],_E_=param$0[2],_F_=param$0[1];
- if(l)
- {var tl=l[2],hd=l[1];
- tag_string(fmt,_C_[11],_F_);
- if(_C_[1])caml_call2(Stdlib_Format[13],fmt,cst$6);
- var _z_=_C_[8],indent=0;
- if(379096626 === _z_)
- caml_call2(Stdlib_Format[5],fmt,0);
- else
- if(736550845 <= _z_)
- if(922275930 <= _z_)
- caml_call2(Stdlib_Format[11],fmt,indent);
- else
- caml_call2(Stdlib_Format[9],fmt,indent);
- else
- if(-921200850 <= _z_)
- caml_call2(Stdlib_Format[7],fmt,indent);
- else
- {var _A_=function(param){return 0 === param[0]?1:0};
- if(caml_call2(Stdlib_List[32],_A_,l))
- caml_call2(Stdlib_Format[11],fmt,indent);
- else
- caml_call2(Stdlib_Format[9],fmt,indent)}
- if(_C_[4])
- fprint_list_body_stick_left(fmt,_C_,_E_,hd,tl);
- else
- {open_tag(fmt,_C_[12]);
- fprint_t(fmt,hd);
- var
- _B_=
- function(x)
- {if(_C_[3])
- caml_call2(Stdlib_Format[27],fmt,0);
- else
- caml_call2(Stdlib_Format[29],fmt,0);
- tag_string(fmt,_C_[13],_E_);
- if(_C_[2])caml_call2(Stdlib_Format[13],fmt,cst$2);
- return fprint_t(fmt,x)};
- caml_call2(Stdlib_List[17],_B_,tl);
- close_tag(fmt,_C_[12])}
- caml_call2(Stdlib_Format[3],fmt,0);
- if(_C_[5])caml_call2(Stdlib_Format[13],fmt,cst$7);
- tag_string(fmt,_C_[14],_D_)}
- else
- {tag_string(fmt,_C_[11],_F_);
- var _G_=_C_[1],_H_=_G_ || _C_[5];
- if(_H_)caml_call2(Stdlib_Format[13],fmt,cst$8);
- tag_string(fmt,_C_[14],_D_)}}
- return close_tag(fmt,p$0[10]);
- case 2:
- var x=param[2],label=param[1],lp=label[2],lab=label[1];
- if(1 === x[0])
- {var
- l$0=x[2],
- match=x[1],
- p$1=match[4],
- cl=match[3],
- sep=match[2],
- op=match[1];
- if(p$1[6] && p$1[7])
- return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)}
- var indent$0=lp[3];
- caml_call2(Stdlib_Format[9],fmt,0);
- open_tag(fmt,lp[4]);
- fprint_t(fmt,lab);
- close_tag(fmt,lp[4]);
- var _I_=lp[1];
- if(726666127 === _I_)
- if(lp[2])
- caml_call3(Stdlib_Format[31],fmt,1,indent$0);
- else
- caml_call3(Stdlib_Format[31],fmt,0,indent$0);
- else
- if(744337004 <= _I_)
- {if(lp[2])caml_call2(Stdlib_Format[23],fmt,32)}
- else
- {caml_call2(Stdlib_Format[34],fmt,0);
- var _J_=caml_call2(Stdlib_String[1],indent$0,32);
- caml_call2(Stdlib_Format[13],fmt,_J_)}
- fprint_t(fmt,x);
- return caml_call2(Stdlib_Format[3],fmt,0);
- default:var f=param[1];return caml_call1(f,fmt)}}
- function fprint_list(fmt,label,param,l)
- {var _s_=param[4],_t_=param[3],_u_=param[1];
- if(l)
- {var tl=l[2],hd=l[1];
- if(0 !== tl && ! _s_[4])
- {var
- p$0=param[4],
- cl$0=param[3],
- sep$0=param[2],
- op$0=param[1],
- base_indent=p$0[9],
- _x_=p$0[2]?1:0,
- sep_indent=caml_ml_string_length(sep$0) + _x_ | 0,
- indent$0=base_indent + sep_indent | 0;
- pp_open_xbox(fmt,p$0,indent$0);
- fprint_opt_label(fmt,label);
- tag_string(fmt,p$0[11],op$0);
- if(p$0[1])
- caml_call2(Stdlib_Format[27],fmt,0);
- else
- caml_call2(Stdlib_Format[29],fmt,0);
- var
- match$0=extra_box(p$0,l),
- close_extra$0=match$0[2],
- open_extra$0=match$0[1];
- caml_call1(open_extra$0,fmt);
- fprint_t(fmt,hd);
- var
- _y_=
- function(x)
- {if(p$0[3])
- caml_call3(Stdlib_Format[31],fmt,1,- sep_indent | 0);
- else
- caml_call3(Stdlib_Format[31],fmt,0,- sep_indent | 0);
- tag_string(fmt,p$0[13],sep$0);
- if(p$0[2])caml_call2(Stdlib_Format[13],fmt,cst$5);
- return fprint_t(fmt,x)};
- caml_call2(Stdlib_List[17],_y_,tl);
- caml_call1(close_extra$0,fmt);
- if(p$0[5])
- caml_call3(Stdlib_Format[31],fmt,1,- indent$0 | 0);
- else
- caml_call3(Stdlib_Format[31],fmt,0,- indent$0 | 0);
- tag_string(fmt,p$0[14],cl$0);
- return caml_call2(Stdlib_Format[3],fmt,0)}
- var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9];
- pp_open_xbox(fmt,p,indent);
- fprint_opt_label(fmt,label);
- tag_string(fmt,p[11],op);
- if(p[1])
- caml_call2(Stdlib_Format[27],fmt,0);
- else
- caml_call2(Stdlib_Format[29],fmt,0);
- var match=extra_box(p,l),close_extra=match[2],open_extra=match[1];
- caml_call1(open_extra,fmt);
- fprint_list_body_stick_left(fmt,p,sep,hd,tl);
- caml_call1(close_extra,fmt);
- if(p[5])
- caml_call3(Stdlib_Format[31],fmt,1,- indent | 0);
- else
- caml_call3(Stdlib_Format[31],fmt,0,- indent | 0);
- tag_string(fmt,p[14],cl);
- return caml_call2(Stdlib_Format[3],fmt,0)}
- fprint_opt_label(fmt,label);
- tag_string(fmt,_s_[11],_u_);
- var _v_=_s_[1],_w_=_v_ || _s_[5];
- if(_w_)caml_call2(Stdlib_Format[13],fmt,cst$4);
- return tag_string(fmt,_s_[14],_t_)}
- function to_formatter(fmt,x)
- {function init_acc(param)
- {var switch$0=0;
- switch(param[0])
- {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break;
- case 2:if(3884224 === param[1][2][1])switch$0 = 1;break
- }
- return switch$0?1:0}
- function merge_acc(force_breaks1,force_breaks2)
- {var force_breaks1$0=force_breaks1 || force_breaks2;
- return force_breaks1$0}
- function map_node(x,force_breaks)
- {switch(x[0])
- {case 1:
- var
- _j_=x[1],
- _k_=_j_[4],
- _l_=_k_[8],
- _m_=_j_[3],
- _n_=_j_[2],
- _o_=_j_[1];
- if(379096626 !== _l_)
- {if(451368025 === _l_)return [0,x,1];
- if(610243080 === _l_)return [0,x,force_breaks];
- var children=x[2];
- if(force_breaks)
- {var
- p=
- [0,
- _k_[1],
- _k_[2],
- _k_[3],
- _k_[4],
- _k_[5],
- _k_[6],
- _k_[7],
- 610243080,
- _k_[9],
- _k_[10],
- _k_[11],
- _k_[12],
- _k_[13],
- _k_[14]];
- return [0,[1,[0,_o_,_n_,_m_,p],children],1]}
- return [0,x,0]}
- break;
- case 2:
- var _p_=x[1],_q_=_p_[2],_r_=_p_[1];
- if(726666127 === _q_[1])
- {var b=x[2];
- if(force_breaks)
- {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]];
- return [0,[2,[0,_r_,lp],b],1]}
- return [0,x,0]}
- break
- }
- return [0,x,force_breaks]}
- function aux(x$0)
- {switch(x$0[0])
- {case 0:var acc=init_acc(x$0);return map_node(x$0,acc);
- case 1:
- var
- children=x$0[2],
- param$1=x$0[1],
- param$2=caml_call2(Stdlib_List[21],aux,children),
- new_children=0,
- accs=0,
- param=param$2;
- for(;;)
- {if(param)
- {var
- param$0=param[2],
- match=param[1],
- y=match[2],
- x=match[1],
- ys=[0,y,accs],
- xs=[0,x,new_children],
- new_children=xs,
- accs=ys,
- param=param$0;
- continue}
- var
- _i_=init_acc(x$0),
- acc$0=caml_call3(Stdlib_List[25],merge_acc,_i_,accs);
- return map_node([1,param$1,new_children],acc$0)}
- case 2:
- var
- x2=x$0[2],
- match$0=x$0[1],
- param$3=match$0[2],
- x1=match$0[1],
- acc0=init_acc(x$0),
- match$1=aux(x1),
- acc1=match$1[2],
- new_x1=match$1[1],
- match$2=aux(x2),
- acc2=match$2[2],
- new_x2=match$2[1],
- acc$1=merge_acc(merge_acc(acc0,acc1),acc2);
- return map_node([2,[0,new_x1,param$3],new_x2],acc$1);
- default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}}
- var match=aux(x),new_x=match[1];
- fprint_t(fmt,new_x);
- return caml_call2(Stdlib_Format[38],fmt,0)}
- function to_buffer(opt,_h_,buf,x)
- {if(opt)var sth=opt[1],escape=sth;else var escape=870530776;
- if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0;
- var fmt=caml_call1(Stdlib_Format[111],buf);
- define_styles(fmt,escape,styles);
- return to_formatter(fmt,x)}
- function to_string(escape,styles,x)
- {var buf=caml_call1(Stdlib_Buffer[1],500);
- to_buffer(escape,styles,buf,x);
- return caml_call1(Stdlib_Buffer[2],buf)}
- function to_channel(opt,_g_,oc,x)
- {if(opt)var sth=opt[1],escape=sth;else var escape=870530776;
- if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0;
- var fmt=caml_call1(Stdlib_Format[108],oc);
- define_styles(fmt,escape,styles);
- return to_formatter(fmt,x)}
- function to_stdout(escape,styles,x)
- {return to_channel(escape,styles,Stdlib[39],x)}
- function to_stderr(escape,styles,x)
- {return to_channel(escape,styles,Stdlib[40],x)}
- function fprint_t$0(buf,param)
- {var param$0=param;
- for(;;)
- switch(param$0[0])
- {case 0:var s=param$0[1];return caml_call2(Stdlib_Buffer[16],buf,s);
- case 1:
- var
- l=param$0[2],
- param$1=param$0[1],
- _c_=param$1[3],
- _e_=param$1[1],
- _d_=param$1[2];
- if(l)
- {var tl=l[2],x$0=l[1];
- caml_call2(Stdlib_Buffer[16],buf,_e_);
- fprint_t$0(buf,x$0);
- var
- _f_=
- function(x)
- {caml_call2(Stdlib_Buffer[16],buf,_d_);
- return fprint_t$0(buf,x)};
- caml_call2(Stdlib_List[17],_f_,tl);
- return caml_call2(Stdlib_Buffer[16],buf,_c_)}
- return caml_call4(Stdlib_Printf[5],buf,_a_,_e_,_c_);
- case 2:
- var x=param$0[2],label=param$0[1],label$0=label[1];
- fprint_t$0(buf,label$0);
- var param$0=x;
- continue;
- default:
- var f=param$0[1],fmt=caml_call1(Stdlib_Format[111],buf);
- caml_call1(f,fmt);
- return caml_call2(Stdlib_Format[38],fmt,0)}}
- function to_buffer$0(buf,x){return fprint_t$0(buf,x)}
- function to_string$0(x)
- {var buf=caml_call1(Stdlib_Buffer[1],500);
- to_buffer$0(buf,x);
- return caml_call1(Stdlib_Buffer[2],buf)}
- function to_formatter$0(fmt,x)
- {var s=to_string$0(x);
- caml_call3(Stdlib_Format[129],fmt,_b_,s);
- return caml_call2(Stdlib_Format[38],fmt,0)}
- function to_channel$0(oc,x)
- {var buf=caml_call1(Stdlib_Buffer[1],500);
- to_buffer$0(buf,x);
- return caml_call2(Stdlib_Buffer[10],oc,buf)}
- function to_stdout$0(x){return to_channel$0(Stdlib[39],x)}
- function to_stderr$0(x){return to_channel$0(Stdlib[40],x)}
- var
- Easy_format=
- [0,
- atom,
- list,
- label,
- [0,
- define_styles,
- to_formatter,
- to_buffer,
- to_string,
- to_channel,
- to_stdout,
- to_stderr],
- [0,
- to_buffer$0,
- to_string$0,
- to_channel$0,
- to_stdout$0,
- to_stderr$0,
- to_formatter$0],
- [0,list_true,label_true,list_false,label_false]];
- runtime.caml_register_global(26,Easy_format,"Easy_format");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/biniou/biniou.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_bytes_get=runtime.caml_bytes_get,
- caml_bytes_set=runtime.caml_bytes_set,
- caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
- caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
- caml_check_bound=runtime.caml_check_bound,
- caml_create_bytes=runtime.caml_create_bytes,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_make_vect=runtime.caml_make_vect,
- caml_ml_bytes_length=runtime.caml_ml_bytes_length,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_obj_tag=runtime.caml_obj_tag,
- caml_register_global=runtime.caml_register_global,
- caml_string_get=runtime.caml_string_get,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_string_unsafe_get=runtime.caml_string_unsafe_get,
- caml_sys_getenv=runtime.caml_sys_getenv,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"),
- cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"),
- cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"),
- cst_Corrupted_data_invalid_ref=
- caml_string_of_jsbytes("Corrupted data (invalid reference)"),
- cst_Bi_share_Rd_poly_create_ty=
- caml_string_of_jsbytes
- ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"),
- cst_Bi_inbuf_refill_from_chann=
- caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"),
- cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"),
- cst_Buf_extend_reached_Sys_max=
- caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"),
- cst_Junk_input_after_end_of_vi=
- caml_string_of_jsbytes("Junk input after end of vint"),
- cst_Unterminated_vint_or_vint_=
- caml_string_of_jsbytes
- ("Unterminated vint or vint exceeding range of OCaml ints"),
- cst_Vint_exceeding_range_of_OC=
- caml_string_of_jsbytes("Vint exceeding range of OCaml ints"),
- cst$0=caml_string_of_jsbytes(""),
- cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"),
- cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"),
- cst=caml_string_of_jsbytes("\0\0\0\0"),
- cst_Corrupted_stream_excessive=
- caml_string_of_jsbytes("Corrupted stream: excessive chunk length"),
- cst_Chunk_length_exceeds_suppo$0=
- caml_string_of_jsbytes
- ("Chunk length exceeds supported range on this platform"),
- cst_Chunk_length_exceeds_suppo=
- caml_string_of_jsbytes
- ("Chunk length exceeds supported range on this platform"),
- cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "),
- cst_Bi_io_write_t_Malformed_Ta=
- caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"),
- cst_Corrupted_data_invalid_tag$0=
- caml_string_of_jsbytes("Corrupted data (invalid tag)"),
- cst_unit=caml_string_of_jsbytes("unit"),
- cst$1=caml_string_of_jsbytes("]"),
- cst$2=caml_string_of_jsbytes(","),
- cst$3=caml_string_of_jsbytes("["),
- cst$4=caml_string_of_jsbytes("[]"),
- cst$5=caml_string_of_jsbytes("}"),
- cst$6=caml_string_of_jsbytes(","),
- cst$7=caml_string_of_jsbytes("{"),
- cst_true=caml_string_of_jsbytes("true"),
- cst_false=caml_string_of_jsbytes("false"),
- cst$8=caml_string_of_jsbytes(")"),
- cst$9=caml_string_of_jsbytes(","),
- cst$10=caml_string_of_jsbytes("("),
- cst$11=caml_string_of_jsbytes(":"),
- cst$12=caml_string_of_jsbytes(">"),
- cst$13=caml_string_of_jsbytes(""),
- cst$14=caml_string_of_jsbytes("<"),
- cst$15=caml_string_of_jsbytes(">"),
- cst$16=caml_string_of_jsbytes("<"),
- cst$17=caml_string_of_jsbytes("[]"),
- cst$18=caml_string_of_jsbytes(""),
- cst_Some=caml_string_of_jsbytes("Some"),
- cst_None=caml_string_of_jsbytes("None"),
- cst_Corrupted_data_invalid_tag=
- caml_string_of_jsbytes("Corrupted data (invalid tag)"),
- cst_Corrupted_data_string=
- caml_string_of_jsbytes("Corrupted data (string)"),
- cst_Corrupted_data_bool_value=
- caml_string_of_jsbytes("Corrupted data (bool value)"),
- cst_Corrupted_data_unit_value=
- caml_string_of_jsbytes("Corrupted data (unit value)"),
- s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"),
- cst_Corrupted_data_invalid_num=
- caml_string_of_jsbytes("Corrupted data (invalid numtag)"),
- cst_Corrupted_data_invalid_fie=
- caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"),
- cst_Cygwin=caml_string_of_jsbytes("Cygwin"),
- cst_Unix=caml_string_of_jsbytes("Unix"),
- cst_Win32=caml_string_of_jsbytes("Win32"),
- cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"),
- cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"),
- cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"),
- cst_HOME=caml_string_of_jsbytes("HOME"),
- cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"),
- cst_HOME$0=caml_string_of_jsbytes("HOME"),
- Stdlib=global_data.Stdlib,
- Stdlib_Bytes=global_data.Stdlib__Bytes,
- Stdlib_Char=global_data.Stdlib__Char,
- Stdlib_Hashtbl=global_data.Stdlib__Hashtbl,
- Stdlib_Sys=global_data.Stdlib__Sys,
- Stdlib_String=global_data.Stdlib__String,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Array=global_data.Stdlib__Array,
- Assert_failure=global_data.Assert_failure,
- Stdlib_Stream=global_data.Stdlib__Stream,
- Easy_format=global_data.Easy_format,
- CamlinternalLazy=global_data.CamlinternalLazy,
- Stdlib_Obj=global_data.Stdlib__Obj,
- Stdlib_Printexc=global_data.Stdlib__Printexc,
- Stdlib_Buffer=global_data.Stdlib__Buffer,
- Stdlib_Filename=global_data.Stdlib__Filename,
- Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)],
- _g_=
- [0,
- [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]],
- caml_string_of_jsbytes("Corrupted stream: %C")],
- _f_=
- [0,
- [11,
- caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("),
- [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]],
- caml_string_of_jsbytes
- ("Corrupted stream: excessive chunk length (%i bytes)")],
- _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22],
- _j_=[0,2],
- _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20],
- _e_=
- [0,
- [11,
- caml_string_of_jsbytes("unsupported word size ("),
- [4,3,0,0,[12,41,0]]],
- caml_string_of_jsbytes("unsupported word size (%i)")],
- _d_=
- [0,
- [11,
- caml_string_of_jsbytes("unsupported word size ("),
- [4,3,0,0,[12,41,0]]],
- caml_string_of_jsbytes("unsupported word size (%i)")],
- _s_=
- [0,
- [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]],
- caml_string_of_jsbytes("0x%02x")],
- _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")],
- _v_=
- [0,
- [11,
- caml_string_of_jsbytes("shared"),
- [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]],
- caml_string_of_jsbytes("shared%i ->")],
- _w_=
- [0,
- [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]],
- caml_string_of_jsbytes("shared%i")],
- _x_=
- [0,
- [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]],
- caml_string_of_jsbytes("0x%016Lx")],
- _y_=
- [0,
- [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]],
- caml_string_of_jsbytes("0x%08lx")],
- _z_=
- [0,
- [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]],
- caml_string_of_jsbytes("0x%04x")],
- _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")],
- _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")],
- _p_=[0,951901561,0],
- _q_=[0,504440814,0],
- _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4],
- _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4],
- _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11],
- _k_=
- [0,
- [11,
- caml_string_of_jsbytes("Bi_io.make_unhash: "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(" and "),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes
- (" have the same hash, please pick another name"),
- 0]]]]],
- caml_string_of_jsbytes
- ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")],
- _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13],
- _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2],
- _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
- _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
- _E_=
- [0,
- [11,
- caml_string_of_jsbytes("Cannot load dictionary from "),
- [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]],
- caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")];
- function error(s){throw [0,Error,s]}
- function string8_of_int(x)
- {var s=caml_create_bytes(8),i=0;
- for(;;)
- {caml_bytes_set
- (s,
- 7 - i | 0,
- caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0)));
- var _c4_=i + 1 | 0;
- if(7 !== i){var i=_c4_;continue}
- return caml_call1(Stdlib_Bytes[6],s)}}
- function string4_of_int(x)
- {var s=caml_create_bytes(4),i=0;
- for(;;)
- {caml_bytes_set
- (s,
- 3 - i | 0,
- caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0)));
- var _c3_=i + 1 | 0;
- if(3 !== i){var i=_c3_;continue}
- return caml_call1(Stdlib_Bytes[6],s)}}
- function print_bits(opt,len,s)
- {if(opt)var sth=opt[1],pos=sth;else var pos=0;
- var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0;
- if(_cT_)
- var _cU_=_cT_;
- else
- var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_;
- if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits);
- if(len)
- var
- len$0=len[1],
- _cV_=
- (slen - pos | 0) < len$0
- ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0)
- :len$0,
- len$1=_cV_;
- else
- var len$1=slen - pos | 0;
- var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0;
- if(! (_cX_ < 0))
- {var i=_cW_;
- a:
- for(;;)
- {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0;
- for(;;)
- {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49;
- caml_bytes_set(r,k + j | 0,_c0_);
- var _c1_=j + 1 | 0;
- if(7 !== j){var j=_c1_;continue}
- var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32;
- caml_bytes_set(r,k + 8 | 0,_cY_);
- var _cZ_=i + 1 | 0;
- if(_cX_ !== i){var i=_cZ_;continue a}
- break}
- break}}
- return caml_call1(Stdlib_Bytes[6],r)}
- var c=[0,0],r=[0,-1];
- for(;;)
- {if(0 === r[1])
- {var
- int_size=c[1],
- Bi_util=
- [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size];
- caml_register_global(101,Bi_util,"Bi_util");
- var
- n=[0,0],
- dummy_type_id=0,
- create_type_id=
- function(param)
- {n[1]++;
- return 0 <= n[1]
- ?n[1]
- :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)},
- equal=
- function(param,_cQ_)
- {var
- t2=_cQ_[2],
- x2=_cQ_[1],
- t1=param[2],
- x1=param[1],
- _cR_=x1 === x2?1:0,
- _cS_=_cR_?t1 === t2?1:0:_cR_;
- return _cS_},
- hash=Stdlib_Hashtbl[28],
- H=caml_call1(Stdlib_Hashtbl[26],[0,equal,hash]),
- create=H[1],
- clear=
- function(tbl)
- {var _cP_=0 < caml_call1(H[15],tbl)?1:0;
- return _cP_?caml_call1(H[2],tbl):_cP_},
- put=
- function(tbl,k,pos)
- {try
- {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_}
- catch(_cO_)
- {_cO_ = caml_wrap_exception(_cO_);
- if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0}
- throw _cO_}},
- create$0=function(n){return caml_call2(Stdlib_Hashtbl[1],0,n)},
- clear$0=Stdlib_Hashtbl[2],
- put$0=
- function(tbl,pos,x){return caml_call3(Stdlib_Hashtbl[5],tbl,pos,x)},
- get=
- function(tbl,pos)
- {try
- {var _cL_=caml_call2(Stdlib_Hashtbl[6],tbl,pos);return _cL_}
- catch(_cM_)
- {_cM_ = caml_wrap_exception(_cM_);
- if(_cM_ === Stdlib[8])
- return error(cst_Corrupted_data_invalid_ref);
- throw _cM_}},
- Rd=[0,create$0,clear$0,put$0,get],
- _a_=[0,create,clear,put],
- Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd];
- caml_register_global(103,Bi_share,"Bi_share");
- var
- End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)],
- try_preread=
- function(ib,n)
- {return (ib[3] - ib[2] | 0) < n
- ?(caml_call2(ib[6],ib,n),
- caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n))
- :n},
- read=
- function(ib,n)
- {var pos=ib[2];
- if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos}
- if(n <= try_preread(ib,n))
- {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0}
- throw End_of_input},
- read_char=
- function(ib)
- {var pos=ib[2];
- if(0 < (ib[3] - pos | 0))
- {var c=caml_bytes_unsafe_get(ib[1],pos);
- ib[2] = pos + 1 | 0;
- return c}
- if(0 < try_preread(ib,1))
- {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0);
- ib[2] = pos$0 + 1 | 0;
- return c$0}
- throw End_of_input},
- peek=
- function(ib)
- {var pos=ib[2];
- if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos);
- if(0 < try_preread(ib,1))
- return caml_bytes_unsafe_get(ib[1],ib[2]);
- throw End_of_input},
- from_bytes=
- function(opt,_cJ_,s)
- {if(opt)var sth=opt[1],pos=sth;else var pos=0;
- if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16;
- var _cK_=caml_call1(Rd[1],shrlen);
- return [0,
- s,
- pos,
- caml_ml_bytes_length(s),
- - pos | 0,
- caml_ml_bytes_length(s),
- function(ib,n){return 0},
- _cK_]},
- from_string=
- function(pos,shrlen,s)
- {return from_bytes(pos,shrlen,caml_call1(Stdlib_Bytes[5],s))},
- from_channel=
- function(opt,_cF_,ic)
- {if(opt)var sth=opt[1],len=sth;else var len=4096;
- if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16;
- var _cG_=caml_call1(Rd[1],shrlen);
- return [0,
- caml_create_bytes(len),
- 0,
- 0,
- 0,
- len,
- function(ib,n$0)
- {if(ib[5] < n$0)
- return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann);
- var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0;
- if(_cH_)
- {var s=ib[1];
- caml_call5(Stdlib_Bytes[11],s,ib[2],s,0,pos$1);
- var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0;
- for(;;)
- {var n=caml_call4(Stdlib[84],ic,s,pos,len);
- if(n < len && 0 < n)
- {var
- accu$0=accu + n | 0,
- len$0=len - n | 0,
- pos$0=pos + n | 0,
- pos=pos$0,
- len=len$0,
- accu=accu$0;
- continue}
- var really_read=accu + n | 0;
- ib[4] = ib[4] + ib[2] | 0;
- ib[2] = 0;
- ib[3] = pos$1 + really_read | 0;
- var _cI_=0;
- break}}
- else
- var _cI_=_cH_;
- return _cI_},
- _cG_]},
- Bi_inbuf=
- [0,
- End_of_input,
- try_preread,
- read,
- read_char,
- peek,
- from_string,
- from_bytes,
- from_channel];
- caml_register_global(104,Bi_inbuf,"Bi_inbuf");
- var
- really_extend=
- function(b,n)
- {var
- slen0=b[2],
- reqlen=b[3] + n | 0,
- x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0),
- slen=
- x <= Stdlib_Sys[12]
- ?x
- :Stdlib_Sys[12] < reqlen
- ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max)
- :Stdlib_Sys[12],
- s=caml_create_bytes(slen);
- caml_call5(Stdlib_Bytes[11],b[1],0,s,0,b[3]);
- b[1] = s;
- b[2] = slen;
- return 0},
- flush_to_output=
- function(abstract_output,b,n)
- {var _cD_=b[3];
- caml_call3
- (abstract_output,caml_call1(Stdlib_Bytes[6],b[1]),0,_cD_);
- b[4] = b[4] + b[3] | 0;
- b[3] = 0;
- var _cE_=b[2] < n?1:0;
- return _cE_?really_extend(b,n):_cE_},
- flush_to_channel=
- function(oc)
- {var _cA_=caml_call1(Stdlib[69],oc);
- return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}},
- create$1=
- function(opt,_cz_,n)
- {if(opt)
- var sth=opt[1],make_room=sth;
- else
- var make_room=really_extend;
- if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16;
- return [0,
- caml_create_bytes(n),
- n,
- 0,
- 0,
- n,
- make_room,
- caml_call1(_a_[1],shrlen),
- shrlen]},
- create_channel_writer=
- function(opt,shrlen,oc)
- {if(opt)var sth=opt[1],len=sth;else var len=4096;
- return create$1([0,flush_to_channel(oc)],shrlen,len)},
- flush_output_writer=function(b){return caml_call2(b[6],b,0)},
- create_output_writer=
- function(opt,shrlen,out)
- {if(opt)var sth=opt[1],len=sth;else var len=4096;
- var
- _cw_=
- caml_call1(runtime.caml_get_public_method(out,209784577,1),out);
- return create$1
- ([0,
- function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}],
- shrlen,
- len)},
- extend=
- function(b,n)
- {var _cv_=b[2] < (b[3] + n | 0)?1:0;
- return _cv_?caml_call2(b[6],b,n):_cv_},
- alloc=
- function(b,n)
- {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos},
- add_sub=
- function(blit,b,s,pos,len)
- {extend(b,len);
- caml_call5(blit,s,pos,b[1],b[3],len);
- b[3] = b[3] + len | 0;
- return 0},
- _b_=Stdlib_String[42],
- add_substring=
- function(_cr_,_cs_,_ct_,_cu_)
- {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)},
- _c_=Stdlib_Bytes[11],
- add_subbytes=
- function(_cn_,_co_,_cp_,_cq_)
- {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)},
- add_string=
- function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))},
- add_bytes=
- function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))},
- add_char=
- function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)},
- unsafe_add_char=
- function(b,c)
- {var len=b[3];
- caml_bytes_set(b[1],len,c);
- b[3] = len + 1 | 0;
- return 0},
- add_char2=
- function(b,c1,c2)
- {var pos=alloc(b,2),s=b[1];
- caml_bytes_unsafe_set(s,pos,c1);
- caml_bytes_unsafe_set(s,pos + 1 | 0,c2);
- return 0},
- add_char4=
- function(b,c1,c2,c3,c4)
- {var pos=alloc(b,4),s=b[1];
- caml_bytes_unsafe_set(s,pos,c1);
- caml_bytes_unsafe_set(s,pos + 1 | 0,c2);
- caml_bytes_unsafe_set(s,pos + 2 | 0,c3);
- caml_bytes_unsafe_set(s,pos + 3 | 0,c4);
- return 0},
- clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])},
- reset=
- function(b)
- {if(caml_ml_bytes_length(b[1]) !== b[5])
- b[1] = caml_create_bytes(b[5]);
- b[4] = 0;
- b[3] = 0;
- b[7] = caml_call1(_a_[1],b[8]);
- return 0},
- contents=function(b){return caml_call3(Stdlib_Bytes[8],b[1],0,b[3])},
- Bi_outbuf=
- [0,
- really_extend,
- flush_to_channel,
- create$1,
- contents,
- create_channel_writer,
- flush_output_writer,
- create_output_writer,
- flush_output_writer,
- extend,
- alloc,
- add_bytes,
- add_subbytes,
- add_string,
- add_substring,
- add_char,
- add_char2,
- add_char4,
- unsafe_add_char,
- clear$1,
- reset];
- caml_register_global(107,Bi_outbuf,"Bi_outbuf");
- if(0 === (int_size % 7 | 0))
- var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m;
- else
- var
- m$0=(int_size / 7 | 0) + 1 | 0,
- h=(1 << (int_size % 7 | 0)) - 1 | 0,
- max_highest_byte=h,
- max_vint_bytes=m$0;
- var
- check_highest_byte=
- function(x)
- {var _cm_=max_highest_byte < x?1:0;
- return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_},
- unsigned_of_signed=
- function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1},
- write_untagged_uvint=
- function(buf,i)
- {extend(buf,max_vint_bytes);
- var x=[0,i];
- for(;;)
- {if(0 === (x[1] >>> 7 | 0))
- return unsafe_add_char(buf,caml_call1(Stdlib_Char[1],x[1]));
- var byte$0=128 | x[1] & 127;
- unsafe_add_char(buf,caml_call1(Stdlib_Char[1],byte$0));
- x[1] = x[1] >>> 7 | 0;
- continue}},
- write_untagged_svint=
- function(buf,i)
- {return write_untagged_uvint(buf,unsigned_of_signed(i))},
- uvint_of_uint=
- function(buf,i)
- {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10);
- clear$1(buffer);
- write_untagged_uvint(buffer,i);
- return contents(buffer)},
- svint_of_int=
- function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))},
- read_untagged_uvint=
- function(ib)
- {var
- avail=try_preread(ib,max_vint_bytes),
- s=ib[1],
- pos=ib[2],
- x=[0,0];
- try
- {var _cj_=avail - 1 | 0,_ci_=0;
- if(! (_cj_ < 0))
- {var i=_ci_;
- for(;;)
- {var b=caml_bytes_get(s,pos + i | 0);
- x[1] = (b & 127) << (7 * i | 0) | x[1];
- if(b < 128)
- {ib[2] = (pos + i | 0) + 1 | 0;
- if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b);
- throw Stdlib[3]}
- var _ck_=i + 1 | 0;
- if(_cj_ !== i){var i=_ck_;continue}
- break}}
- error(cst_Unterminated_vint_or_vint_)}
- catch(_cl_)
- {_cl_ = caml_wrap_exception(_cl_);
- if(_cl_ !== Stdlib[3])throw _cl_}
- return x[1]},
- read_untagged_svint=
- function(ib)
- {var i=read_untagged_uvint(ib);
- return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0},
- check_end_of_input=
- function(ib)
- {var _ch_=0 < try_preread(ib,1)?1:0;
- return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_},
- uint_of_uvint=
- function(s)
- {var ib=from_string(0,0,s),x=read_untagged_uvint(ib);
- check_end_of_input(ib);
- return x},
- int_of_svint=
- function(s)
- {var ib=from_string(0,0,s),x=read_untagged_svint(ib);
- check_end_of_input(ib);
- return x},
- Bi_vint=
- [0,
- uvint_of_uint,
- svint_of_int,
- uint_of_uvint,
- int_of_svint,
- write_untagged_uvint,
- write_untagged_svint,
- read_untagged_uvint,
- read_untagged_svint];
- caml_register_global(110,Bi_vint,"Bi_vint");
- var
- error$0=
- function(s)
- {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s);
- return caml_call1(Stdlib[2],_cg_)},
- read_stream=
- function(of_string,ic)
- {function _b__(i$2)
- {var c=caml_call1(Stdlib[82],ic);
- if(1 === c)
- {var _ca_=Stdlib_Sys[9];
- if(32 === _ca_)
- {var i$0=1;
- for(;;)
- {if(0 !== caml_call1(Stdlib[87],ic))
- error$0(cst_Chunk_length_exceeds_suppo$0);
- var _cd_=i$0 + 1 | 0;
- if(4 !== i$0){var i$0=_cd_;continue}
- var n=[0,0],i=1;
- for(;;)
- {var _cb_=caml_call1(Stdlib[87],ic);
- n[1] = n[1] << 8 | _cb_;
- var _cc_=i + 1 | 0;
- if(4 !== i){var i=_cc_;continue}
- if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo);
- var len=n[1];
- break}
- break}}
- else
- if(64 === _ca_)
- {var n$0=[0,0],i$1=1;
- for(;;)
- {var _ce_=caml_call1(Stdlib[87],ic);
- n$0[1] = n$0[1] << 8 | _ce_;
- var _cf_=i$1 + 1 | 0;
- if(8 !== i$1){var i$1=_cf_;continue}
- if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive);
- var len=n$0[1];
- break}}
- else
- var len=error$0(caml_call2(Stdlib_Printf[4],_d_,_ca_));
- if(Stdlib_Sys[12] < len)
- error$0(caml_call2(Stdlib_Printf[4],_f_,len));
- var s=caml_create_bytes(len);
- caml_call4(Stdlib[85],ic,s,0,len);
- return [0,caml_call1(of_string,caml_call1(Stdlib_Bytes[6],s))]}
- return c?error$0(caml_call2(Stdlib_Printf[4],_g_,c)):0}
- var st=caml_call1(Stdlib_Stream[3],_b__),a=[0,[0]],pos=[0,0];
- function next(i)
- {for(;;)
- {if(a[1].length - 1 <= pos[1])
- {var match=caml_call1(Stdlib_Stream[11],st);
- if(match)
- {var a$0=match[1];
- caml_call1(Stdlib_Stream[12],st);
- a[1] = a$0;
- pos[1] = 0;
- continue}
- return 0}
- var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_];
- pos[1]++;
- return [0,x]}}
- return caml_call1(Stdlib_Stream[3],next)},
- write_stream=
- function(opt,to_string,oc,st)
- {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024;
- var n=[0,0],acc=[0,0];
- function flush_chunk(param)
- {var _b9_=acc[1];
- if(_b9_)
- {var
- tl=_b9_[2],
- x=_b9_[1],
- r=[0,tl],
- len=caml_call1(Stdlib_List[1],_b9_),
- a=caml_make_vect(len,x),
- _b6_=len - 2 | 0;
- if(! (_b6_ < 0))
- {var i$1=_b6_;
- for(;;)
- {var _b7_=r[1];
- if(! _b7_)throw [0,Assert_failure,_h_];
- var tl$0=_b7_[2],hd=_b7_[1];
- caml_check_bound(a,i$1)[1 + i$1] = hd;
- r[1] = tl$0;
- var _b8_=i$1 - 1 | 0;
- if(0 !== i$1){var i$1=_b8_;continue}
- break}}
- var a$0=a}
- else
- var a$0=[0];
- acc[1] = 0;
- n[1] = 0;
- var s=caml_call1(to_string,a$0);
- caml_call2(Stdlib[65],oc,1);
- var n$2=caml_ml_string_length(s),_b1_=Stdlib_Sys[9];
- if(32 === _b1_)
- {caml_call2(Stdlib[66],oc,cst);
- var n$0=[0,n$2],i=1;
- for(;;)
- {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0);
- caml_call2(Stdlib[65],oc,_b2_);
- n$0[1] = n$0[1] << 8;
- var _b3_=i + 1 | 0;
- if(4 !== i){var i=_b3_;continue}
- break}}
- else
- if(64 === _b1_)
- {var n$1=[0,n$2],i$0=1;
- for(;;)
- {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0);
- caml_call2(Stdlib[65],oc,_b4_);
- n$1[1] = n$1[1] << 8;
- var _b5_=i$0 + 1 | 0;
- if(8 !== i$0){var i$0=_b5_;continue}
- break}}
- else
- error$0(caml_call2(Stdlib_Printf[4],_e_,_b1_));
- return caml_call2(Stdlib[66],oc,s)}
- function _bZ_(x)
- {n[1]++;
- acc[1] = [0,x,acc[1]];
- var _b0_=chunk_len <= n[1]?1:0;
- return _b0_?flush_chunk(0):_b0_}
- caml_call2(Stdlib_Stream[8],_bZ_,st);
- if(0 < n[1])flush_chunk(0);
- return caml_call2(Stdlib[65],oc,0)},
- test=
- function(l)
- {function _bT_(x)
- {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]}
- caml_call2(Stdlib_List[17],_bT_,l);
- function to_string(a)
- {var
- _bX_=caml_call1(Stdlib_Array[11],a),
- _bY_=caml_call2(Stdlib_List[19],Stdlib[33],_bX_);
- return caml_call2(Stdlib_String[6],cst$0,_bY_)}
- function of_string(s)
- {function _bV_(i)
- {var _bW_=caml_string_get(s,i);
- return runtime.caml_int_of_string
- (caml_call2(Stdlib_String[1],1,_bW_))}
- return caml_call2(Stdlib_Array[2],caml_ml_string_length(s),_bV_)}
- var
- st=caml_call1(Stdlib_Stream[4],l),
- oc=caml_call1(Stdlib[60],cst_test_stream_dat);
- write_stream(_j_,to_string,oc,st);
- caml_call1(Stdlib[76],oc);
- var
- ic=caml_call1(Stdlib[79],cst_test_stream_dat$0),
- st$0=read_stream(of_string,ic),
- l$0=[0,0];
- function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0}
- caml_call2(Stdlib_Stream[8],_bU_,st$0);
- caml_call1(Stdlib[93],ic);
- return runtime.caml_equal(l,caml_call1(Stdlib_List[9],l$0[1]))},
- Bi_stream=[0,read_stream,write_stream,test];
- caml_register_global(114,Bi_stream,"Bi_stream");
- var
- bool_tag=0,
- int8_tag=1,
- int16_tag=2,
- int32_tag=3,
- int64_tag=4,
- float32_tag=11,
- float64_tag=12,
- uvint_tag=16,
- svint_tag=17,
- string_tag=18,
- array_tag=19,
- tuple_tag=20,
- record_tag=21,
- num_variant_tag=22,
- variant_tag=23,
- unit_tag=24,
- table_tag=25,
- shared_tag=26,
- make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x},
- hash_name=
- function(s)
- {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0;
- if(! (_bQ_ < 0))
- {var i=_bP_;
- for(;;)
- {var _bR_=caml_string_get(s,i);
- accu[1] = (223 * accu[1] | 0) + _bR_ | 0;
- var _bS_=i + 1 | 0;
- if(_bQ_ !== i){var i=_bS_;continue}
- break}}
- accu[1] = accu[1] & 2147483647;
- return make_signed(accu[1])},
- n$0=int_size - 31 | 0;
- if(0 <= n$0)
- {var
- write_hashtag=
- function(ob,h$0,has_arg)
- {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1];
- caml_bytes_unsafe_set
- (s,pos + 3 | 0,caml_call1(Stdlib_Char[1],h & 255));
- var h$1=h >>> 8 | 0;
- caml_bytes_unsafe_set
- (s,pos + 2 | 0,caml_call1(Stdlib_Char[1],h$1 & 255));
- var h$2=h$1 >>> 8 | 0;
- caml_bytes_unsafe_set
- (s,pos + 1 | 0,caml_call1(Stdlib_Char[1],h$2 & 255));
- var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3;
- caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_Char[1],_bO_));
- return 0},
- string_of_hashtag=
- function(h,has_arg)
- {var ob=create$1(0,0,4);
- write_hashtag(ob,h,has_arg);
- return contents(ob)},
- read_hashtag=
- function(ib,cont)
- {var
- i=read(ib,4),
- s=ib[1],
- x0=caml_bytes_get(s,i),
- has_arg=128 <= x0?1:0,
- x1=(x0 & 127) << 24,
- x2=caml_bytes_get(s,i + 1 | 0) << 16,
- x3=caml_bytes_get(s,i + 2 | 0) << 8,
- x4=caml_bytes_get(s,i + 3 | 0),
- h=make_signed(x1 | x2 | x3 | x4);
- return caml_call3(cont,ib,h,has_arg)},
- read_field_hashtag=
- function(ib)
- {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i);
- if(x0 < 128)error(cst_Corrupted_data_invalid_fie);
- var
- x1=(x0 & 127) << 24,
- x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16,
- x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8,
- x4=caml_bytes_unsafe_get(s,i + 3 | 0);
- return make_signed(x1 | x2 | x3 | x4)},
- write_numtag=
- function(ob,i,has_arg)
- {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0);
- if(_bN_)error(cst_Corrupted_data_invalid_num);
- var x=has_arg?i | 128:i;
- return add_char(ob,caml_call1(Stdlib_Char[1],x))},
- read_numtag=
- function(ib,cont)
- {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0;
- return caml_call3(cont,ib,x & 127,has_arg)},
- make_unhash=
- function(l)
- {var
- _bE_=4 * caml_call1(Stdlib_List[1],l) | 0,
- tbl=caml_call2(Stdlib_Hashtbl[1],0,_bE_);
- function _bF_(s)
- {var h=hash_name(s);
- try
- {var match=caml_call2(Stdlib_Hashtbl[6],tbl,h);
- if(match)
- {var s$0=match[1],_bI_=caml_string_notequal(s,s$0);
- if(_bI_)
- var
- _bJ_=caml_call3(Stdlib_Printf[4],_k_,s,s$0),
- _bK_=caml_call1(Stdlib[2],_bJ_);
- else
- var _bK_=_bI_;
- return _bK_}
- throw [0,Assert_failure,_l_]}
- catch(_bL_)
- {_bL_ = caml_wrap_exception(_bL_);
- if(_bL_ === Stdlib[8])
- return caml_call3(Stdlib_Hashtbl[5],tbl,h,[0,s]);
- throw _bL_}}
- caml_call2(Stdlib_List[17],_bF_,l);
- return function(h)
- {try
- {var _bG_=caml_call2(Stdlib_Hashtbl[6],tbl,h);return _bG_}
- catch(_bH_)
- {_bH_ = caml_wrap_exception(_bH_);
- if(_bH_ === Stdlib[8])return 0;
- throw _bH_}}},
- write_tag=
- function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))},
- write_untagged_unit=function(ob,param){return add_char(ob,0)},
- write_untagged_bool=
- function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)},
- write_untagged_char=function(ob,x){return add_char(ob,x)},
- write_untagged_int8=
- function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))},
- write_untagged_int16=
- function(ob,x)
- {add_char(ob,caml_call1(Stdlib_Char[1],x >>> 8 | 0));
- return add_char(ob,caml_call1(Stdlib_Char[1],x & 255))},
- write_untagged_int32=
- function(ob,low)
- {var high=low >>> 16 | 0;
- add_char(ob,caml_call1(Stdlib_Char[1],high >>> 8 | 0));
- add_char(ob,caml_call1(Stdlib_Char[1],high & 255));
- add_char(ob,caml_call1(Stdlib_Char[1],(low >>> 8 | 0) & 255));
- return add_char(ob,caml_call1(Stdlib_Char[1],low & 255))},
- write_untagged_float32=
- function(ob,x)
- {return write_untagged_int32
- (ob,runtime.caml_int32_bits_of_float(x))},
- float_endianness=
- [246,
- function(_bC_)
- {var match=caml_string_unsafe_get(1.,0);
- if(63 === match)return 3305632;
- if(match)throw [0,Assert_failure,_m_];
- return 624392470}],
- read_untagged_float64=
- function(ib)
- {var
- i=read(ib,8),
- s=ib[1],
- x=runtime.caml_obj_block(Stdlib_Obj[14],8),
- _by_=caml_obj_tag(float_endianness),
- _bz_=
- 250 === _by_
- ?float_endianness[1]
- :246 === _by_
- ?caml_call1(CamlinternalLazy[2],float_endianness)
- :float_endianness;
- if(624392470 <= _bz_)
- {var j=0;
- for(;;)
- {caml_bytes_unsafe_set
- (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0));
- var _bA_=j + 1 | 0;
- if(7 !== j){var j=_bA_;continue}
- break}}
- else
- {var j$0=0;
- for(;;)
- {caml_bytes_unsafe_set
- (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0));
- var _bB_=j$0 + 1 | 0;
- if(7 !== j$0){var j$0=_bB_;continue}
- break}}
- return x},
- write_untagged_float64=
- function(ob,x)
- {var
- i=alloc(ob,8),
- s=ob[1],
- _bu_=caml_obj_tag(float_endianness),
- _bv_=
- 250 === _bu_
- ?float_endianness[1]
- :246 === _bu_
- ?caml_call1(CamlinternalLazy[2],float_endianness)
- :float_endianness;
- if(624392470 <= _bv_)
- {var j=0;
- for(;;)
- {caml_bytes_unsafe_set
- (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0));
- var _bw_=j + 1 | 0;
- if(7 !== j){var j=_bw_;continue}
- return 0}}
- var j$0=0;
- for(;;)
- {caml_bytes_unsafe_set
- (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0));
- var _bx_=j$0 + 1 | 0;
- if(7 !== j$0){var j$0=_bx_;continue}
- return 0}},
- write_untagged_int64=
- function(ob,x)
- {return write_untagged_float64
- (ob,runtime.caml_int64_float_of_bits(x))},
- safety_test=
- function(param)
- {var
- y=read_untagged_float64(from_string(0,0,s)),
- x=1.00146962706651288;
- if(1.00146962706651288 != y)throw [0,Assert_failure,_n_];
- var ob=create$1(0,0,8);
- write_untagged_float64(ob,x);
- var _bt_=caml_string_notequal(contents(ob),s);
- if(_bt_)throw [0,Assert_failure,_o_];
- return _bt_},
- write_untagged_string=
- function(ob,s)
- {write_untagged_uvint(ob,caml_ml_string_length(s));
- return add_string(ob,s)},
- write_unit=
- function(ob,param)
- {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)},
- write_bool=
- function(ob,x)
- {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)},
- write_char=
- function(ob,x)
- {write_tag(ob,int8_tag);return write_untagged_char(ob,x)},
- write_int8=
- function(ob,x)
- {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)},
- write_int16=
- function(ob,x)
- {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)},
- write_int32=
- function(ob,x)
- {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)},
- write_int64=
- function(ob,x)
- {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)},
- write_float32=
- function(ob,x)
- {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)},
- write_float64=
- function(ob,x)
- {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)},
- write_string=
- function(ob,x)
- {write_tag(ob,string_tag);return write_untagged_string(ob,x)},
- write_uvint=
- function(ob,x)
- {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)},
- write_svint=
- function(ob,x)
- {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)},
- write_t=
- function(ob,tagged,x)
- {var tagged$0=tagged,x$0=x;
- for(;;)
- {if(typeof x$0 === "number")
- {if(tagged$0)write_tag(ob,unit_tag);
- return write_untagged_unit(ob,0)}
- var _a__=x$0[1];
- if(708012133 <= _a__)
- {if(847309489 <= _a__)
- {if(928626971 === _a__)
- {var x$1=x$0[2];
- if(tagged$0)write_tag(ob,float32_tag);
- return write_untagged_float32(ob,x$1)}
- if(951901561 <= _a__)
- {if(1063160078 <= _a__)
- {var x$2=x$0[2];
- if(tagged$0)write_tag(ob,uvint_tag);
- return write_untagged_uvint(ob,x$2)}
- var o=x$0[2];
- if(tagged$0)write_tag(ob,array_tag);
- if(o)
- {var
- match=o[1],
- a=match[2],
- node_tag=match[1],
- len=a.length - 1;
- write_untagged_uvint(ob,len);
- var _a$_=0 < len?1:0;
- if(_a$_)
- {write_tag(ob,node_tag);
- var
- _ba_=0,
- _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)};
- return caml_call2(Stdlib_Array[13],_bb_,a)}
- return _a$_}
- return write_untagged_uvint(ob,0)}
- if(928627642 <= _a__)
- {var x$3=x$0[2];
- if(tagged$0)write_tag(ob,float64_tag);
- return write_untagged_float64(ob,x$3)}
- var a$0=x$0[2];
- if(tagged$0)write_tag(ob,record_tag);
- write_untagged_uvint(ob,a$0.length - 1);
- var
- _bc_=
- function(param)
- {var x=param[3],h=param[2];
- write_hashtag(ob,h,1);
- return write_t(ob,1,x)};
- return caml_call2(Stdlib_Array[13],_bc_,a$0)}
- if(737456202 <= _a__)
- {if(815034505 <= _a__)
- {var x$4=x$0[2];
- if(tagged$0)write_tag(ob,int8_tag);
- return write_untagged_char(ob,x$4)}
- var x$5=x$0[2];
- if(tagged$0)write_tag(ob,bool_tag);
- return write_untagged_bool(ob,x$5)}
- if(726928360 <= _a__)
- {var a$1=x$0[2];
- if(tagged$0)write_tag(ob,tuple_tag);
- write_untagged_uvint(ob,a$1.length - 1);
- var
- _bd_=1,
- _be_=function(_br_){return write_t(ob,_bd_,_br_)};
- return caml_call2(Stdlib_Array[13],_be_,a$1)}
- var match$0=x$0[2],x$6=match$0[3],h=match$0[2];
- if(tagged$0)write_tag(ob,variant_tag);
- write_hashtag(ob,h,0 !== x$6?1:0);
- if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue}
- return 0}
- if(-775957819 <= _a__)
- {if(412180492 <= _a__)
- {if(504440814 <= _a__)
- {var o$0=x$0[2];
- if(tagged$0)write_tag(ob,table_tag);
- if(o$0)
- {var
- match$1=o$0[1],
- a$2=match$1[2],
- fields=match$1[1],
- row_num=a$2.length - 1;
- write_untagged_uvint(ob,row_num);
- var _bf_=0 < row_num?1:0;
- if(_bf_)
- {var col_num=fields.length - 1;
- write_untagged_uvint(ob,col_num);
- var
- _bg_=
- function(param)
- {var tag=param[3],h=param[2];
- write_hashtag(ob,h,1);
- return write_tag(ob,tag)};
- caml_call2(Stdlib_Array[13],_bg_,fields);
- var _bh_=0 < row_num?1:0;
- if(_bh_)
- {var _bj_=row_num - 1 | 0,_bi_=0;
- if(! (_bj_ < 0))
- {var i=_bi_;
- for(;;)
- {var ai=caml_check_bound(a$2,i)[1 + i];
- if(ai.length - 1 !== col_num)
- caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta);
- var _bn_=col_num - 1 | 0,_bm_=0;
- if(! (_bn_ < 0))
- {var j=_bm_;
- for(;;)
- {write_t(ob,0,caml_check_bound(ai,j)[1 + j]);
- var _bp_=j + 1 | 0;
- if(_bn_ !== j){var j=_bp_;continue}
- break}}
- var _bo_=i + 1 | 0;
- if(_bj_ !== i){var i=_bo_;continue}
- break}}
- var _bk_=0}
- else
- var _bk_=_bh_;
- var _bl_=_bk_}
- else
- var _bl_=_bf_;
- return _bl_}
- return write_untagged_uvint(ob,0)}
- var x$8=x$0[2];
- if(tagged$0)write_tag(ob,svint_tag);
- return write_untagged_svint(ob,x$8)}
- if(221365804 <= _a__)
- {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1];
- if(tagged$0)write_tag(ob,num_variant_tag);
- write_numtag(ob,i$0,0 !== x$9?1:0);
- if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue}
- return 0}
- var x$11=x$0[2];
- if(tagged$0)write_tag(ob,shared_tag);
- var
- offset=
- caml_call3
- (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0);
- write_untagged_uvint(ob,offset);
- var _bq_=0 === offset?1:0;
- if(_bq_){var tagged$0=1,x$0=x$11;continue}
- return _bq_}
- if(-783416530 <= _a__)
- {if(-783415859 <= _a__)
- {var x$12=x$0[2];
- if(tagged$0)write_tag(ob,int64_tag);
- return write_untagged_int64(ob,x$12)}
- var x$13=x$0[2];
- if(tagged$0)write_tag(ob,int32_tag);
- return write_untagged_int32(ob,x$13)}
- if(-783416972 <= _a__)
- {var x$14=x$0[2];
- if(tagged$0)write_tag(ob,int16_tag);
- return write_untagged_int16(ob,x$14)}
- var s=x$0[2];
- if(tagged$0)write_tag(ob,string_tag);
- return write_untagged_string(ob,s)}},
- write_tree=function(ob,x){return write_t(ob,1,x)},
- string_of_tree=
- function(x)
- {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)},
- tag_of_tree=
- function(x)
- {if(typeof x === "number")return unit_tag;
- var _a9_=x[1];
- return 708012133 <= _a9_
- ?847309489 <= _a9_
- ?928626971 === _a9_
- ?float32_tag
- :951901561 <= _a9_
- ?1063160078 <= _a9_?uvint_tag:array_tag
- :928627642 <= _a9_?float64_tag:record_tag
- :737456202 <= _a9_
- ?815034505 <= _a9_?int8_tag:bool_tag
- :726928360 <= _a9_?tuple_tag:variant_tag
- :-775957819 <= _a9_
- ?412180492 <= _a9_
- ?504440814 <= _a9_?table_tag:svint_tag
- :221365804 <= _a9_?num_variant_tag:shared_tag
- :-783416530 <= _a9_
- ?-783415859 <= _a9_?int64_tag:int32_tag
- :-783416972 <= _a9_?int16_tag:string_tag},
- read_tag=function(ib){return read_char(ib)},
- read_untagged_unit=
- function(ib)
- {var match=read_char(ib);
- return match?error(cst_Corrupted_data_unit_value):0},
- read_untagged_bool=
- function(ib)
- {var match=read_char(ib);
- return 1 === match
- ?1
- :match?error(cst_Corrupted_data_bool_value):0},
- read_untagged_char=function(ib){return read_char(ib)},
- read_untagged_int8=function(ib){return read_char(ib)},
- read_untagged_int16=
- function(ib)
- {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0);
- return caml_bytes_get(s,i) << 8 | _a8_},
- read_untagged_int32=
- function(ib)
- {var
- i=read(ib,4),
- s=ib[1],
- _a6_=caml_bytes_get(s,i + 1 | 0),
- x1=caml_bytes_get(s,i) << 8 | _a6_,
- _a7_=caml_bytes_get(s,i + 3 | 0),
- x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_;
- return x1 << 16 | x2},
- read_untagged_float32=
- function(ib)
- {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))},
- read_untagged_int64=
- function(ib)
- {return runtime.caml_int64_bits_of_float
- (read_untagged_float64(ib))},
- read_untagged_string=
- function(ib)
- {var
- len=read_untagged_uvint(ib),
- str=caml_create_bytes(len),
- pos=[0,0],
- rem=[0,len];
- for(;;)
- {if(0 < rem[1])
- {var bytes_read=try_preread(ib,rem[1]);
- if(0 === bytes_read)
- error(cst_Corrupted_data_string);
- else
- {caml_call5
- (Stdlib_Bytes[11],ib[1],ib[2],str,pos[1],bytes_read);
- ib[2] = ib[2] + bytes_read | 0;
- pos[1] = pos[1] + bytes_read | 0;
- rem[1] = rem[1] - bytes_read | 0}
- continue}
- return caml_call1(Stdlib_Bytes[6],str)}},
- read_unit=function(ib){read_untagged_unit(ib);return 948106916},
- read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]},
- read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]},
- read_int16=
- function(ib){return [0,-783416972,read_untagged_int16(ib)]},
- read_int32=
- function(ib){return [0,-783416530,read_untagged_int32(ib)]},
- read_int64=
- function(ib){return [0,-783415859,read_untagged_int64(ib)]},
- read_float32=
- function(ib){return [0,928626971,read_untagged_float32(ib)]},
- read_float64=
- function(ib){return [0,928627642,read_untagged_float64(ib)]},
- read_uvint=
- function(ib){return [0,1063160078,read_untagged_uvint(ib)]},
- read_svint=
- function(ib){return [0,412180492,read_untagged_svint(ib)]},
- read_string=
- function(ib){return [0,-976970511,read_untagged_string(ib)]},
- read_tree=
- function(opt,ib)
- {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0);
- function read_array(ib)
- {var len=read_untagged_uvint(ib);
- if(0 === len)return _p_;
- var tag=read_tag(ib),read=reader_of_tag(tag);
- function _a5_(param){return caml_call1(read,ib)}
- return [0,
- 951901561,
- [0,[0,tag,caml_call2(Stdlib_Array[2],len,_a5_)]]]}
- function reader_of_tag(param)
- {if(! (26 < param >>> 0))
- switch(param)
- {case 0:return read_bool;
- case 1:return read_int8;
- case 2:return read_int16;
- case 3:return read_int32;
- case 4:return read_int64;
- case 11:return read_float32;
- case 12:return read_float64;
- case 16:return read_uvint;
- case 17:return read_svint;
- case 18:return read_string;
- case 19:return read_array;
- case 20:return read_tuple;
- case 21:return read_record;
- case 22:return read_num_variant;
- case 23:return read_variant;
- case 24:return read_unit;
- case 25:return read_table;
- case 26:return read_shared
- }
- return error(cst_Corrupted_data_invalid_tag)}
- function read_tree(ib)
- {return caml_call1(reader_of_tag(read_tag(ib)),ib)}
- function read_tuple(ib)
- {var len=read_untagged_uvint(ib);
- function _a4_(param){return read_tree(ib)}
- return [0,726928360,caml_call2(Stdlib_Array[2],len,_a4_)]}
- function read_record(ib)
- {var len=read_untagged_uvint(ib);
- function _a3_(param)
- {var
- h=read_field_hashtag(ib),
- name=caml_call1(unhash,h),
- x=read_tree(ib);
- return [0,name,h,x]}
- return [0,847309489,caml_call2(Stdlib_Array[2],len,_a3_)]}
- function read_num_variant_cont(ib,i,has_arg)
- {var x=has_arg?[0,read_tree(ib)]:0;
- return [0,221365804,[0,i,x]]}
- function read_num_variant(ib)
- {return read_numtag(ib,read_num_variant_cont)}
- function read_variant_cont(ib,h,has_arg)
- {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0;
- return [0,708012133,[0,name,h,x]]}
- function read_variant(ib)
- {return read_hashtag(ib,read_variant_cont)}
- function read_table(ib)
- {var row_num=read_untagged_uvint(ib);
- if(0 === row_num)return _q_;
- var col_num=read_untagged_uvint(ib);
- function _aZ_(param)
- {var
- h=read_field_hashtag(ib),
- name=caml_call1(unhash,h),
- tag=read_tag(ib);
- return [0,name,h,tag]}
- var fields=caml_call2(Stdlib_Array[2],col_num,_aZ_);
- function _a0_(param)
- {var tag=param[3];return reader_of_tag(tag)}
- var readers=caml_call2(Stdlib_Array[15],_a0_,fields);
- function _a1_(param)
- {function _a2_(j)
- {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)}
- return caml_call2(Stdlib_Array[2],col_num,_a2_)}
- var a=caml_call2(Stdlib_Array[2],row_num,_a1_);
- return [0,504440814,[0,[0,fields,a]]]}
- function read_shared(ib)
- {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib);
- if(0 === offset)
- {var r=[];
- runtime.caml_update_dummy(r,[0,-775957819,r]);
- caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r);
- var x=read_tree(ib);
- r[2] = x;
- return r}
- return caml_call2
- (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])}
- return read_tree(ib)},
- tree_of_string=
- function(unhash,s){return read_tree(unhash,from_string(0,0,s))},
- skip_bytes=function(ib,n){read(ib,n);return 0},
- skip_unit=function(ib){return skip_bytes(ib,1)},
- skip_bool=function(ib){return skip_bytes(ib,1)},
- skip_int8=function(ib){return skip_bytes(ib,1)},
- skip_int16=function(ib){return skip_bytes(ib,2)},
- skip_int32=function(ib){return skip_bytes(ib,4)},
- skip_int64=function(ib){return skip_bytes(ib,8)},
- skip_float32=function(ib){return skip_bytes(ib,4)},
- skip_float64=function(ib){return skip_bytes(ib,8)},
- skip_uvint=function(ib){read_untagged_uvint(ib);return 0},
- skip_svint=function(ib){read_untagged_svint(ib);return 0},
- skip_string=
- function(ib)
- {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)},
- skipper_of_tag=
- function(param)
- {if(! (25 < param >>> 0))
- switch(param)
- {case 0:return skip_bool;
- case 1:return skip_int8;
- case 2:return skip_int16;
- case 3:return skip_int32;
- case 4:return skip_int64;
- case 11:return skip_float32;
- case 12:return skip_float64;
- case 16:return skip_uvint;
- case 17:return skip_svint;
- case 18:return skip_string;
- case 19:return skip_array;
- case 20:return skip_tuple;
- case 21:return skip_record;
- case 22:return skip_num_variant;
- case 23:return skip_variant;
- case 24:return skip_unit;
- case 25:return skip_table
- }
- return error(cst_Corrupted_data_invalid_tag$0)},
- skip_array=
- function(ib)
- {var len=read_untagged_uvint(ib);
- if(0 === len)return 0;
- var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1;
- if(! (len < 1))
- {var i=_aX_;
- for(;;)
- {caml_call1(read,ib);
- var _aY_=i + 1 | 0;
- if(len !== i){var i=_aY_;continue}
- break}}
- return 0},
- skip=
- function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)},
- skip_tuple=
- function(ib)
- {var len=read_untagged_uvint(ib),_aV_=1;
- if(! (len < 1))
- {var i=_aV_;
- for(;;)
- {skip(ib);
- var _aW_=i + 1 | 0;
- if(len !== i){var i=_aW_;continue}
- break}}
- return 0},
- skip_record=
- function(ib)
- {var len=read_untagged_uvint(ib),_aT_=1;
- if(! (len < 1))
- {var i=_aT_;
- for(;;)
- {read_field_hashtag(ib);
- skip(ib);
- var _aU_=i + 1 | 0;
- if(len !== i){var i=_aU_;continue}
- break}}
- return 0},
- skip_num_variant_cont=
- function(ib,i,has_arg){return has_arg?skip(ib):has_arg},
- skip_num_variant=
- function(ib){return read_numtag(ib,skip_num_variant_cont)},
- skip_variant_cont=
- function(ib,h,has_arg){return has_arg?skip(ib):has_arg},
- skip_variant=
- function(ib){return read_hashtag(ib,skip_variant_cont)},
- skip_table=
- function(ib)
- {var row_num=read_untagged_uvint(ib);
- if(0 === row_num)return 0;
- var col_num=read_untagged_uvint(ib);
- function _aO_(param)
- {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))}
- var readers=caml_call2(Stdlib_Array[2],col_num,_aO_),_aP_=1;
- if(! (row_num < 1))
- {var i=_aP_;
- for(;;)
- {var _aQ_=1;
- if(! (col_num < 1))
- {var j=_aQ_;
- for(;;)
- {caml_call1(caml_check_bound(readers,j)[1 + j],ib);
- var _aS_=j + 1 | 0;
- if(col_num !== j){var j=_aS_;continue}
- break}}
- var _aR_=i + 1 | 0;
- if(row_num !== i){var i=_aR_;continue}
- break}}
- return 0},
- array=Easy_format[2],
- record=Easy_format[2],
- _r_=Easy_format[2],
- tuple=
- [0,
- 0,
- _r_[2],
- _r_[3],
- _r_[4],
- 0,
- _r_[6],
- 0,
- _r_[8],
- _r_[9],
- _r_[10],
- _r_[11],
- _r_[12],
- _r_[13],
- _r_[14]],
- map=
- function(f,a)
- {var len=a.length - 1;
- if(0 === len)
- var _aN_=[0];
- else
- {var
- r=caml_make_vect(len,caml_call1(f,a[1])),
- _aL_=len - 1 | 0,
- _aK_=1;
- if(! (_aL_ < 1))
- {var i=_aK_;
- for(;;)
- {r[1 + i] = caml_call1(f,a[1 + i]);
- var _aM_=i + 1 | 0;
- if(_aL_ !== i){var i=_aM_;continue}
- break}}
- var _aN_=r}
- return caml_call1(Stdlib_Array[11],_aN_)},
- format=
- function(shared,x)
- {var x$0=x;
- for(;;)
- {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]];
- var _ad_=x$0[1];
- if(708012133 <= _ad_)
- {if(847309489 <= _ad_)
- {if(928626971 === _ad_)
- {var x$1=x$0[2],_ae_=Easy_format[1];
- return [0,caml_call1(Stdlib[35],x$1),_ae_]}
- if(951901561 <= _ad_)
- {if(1063160078 <= _ad_)
- {var x$2=x$0[2],_af_=Easy_format[1];
- return [0,caml_call1(Stdlib[33],x$2),_af_]}
- var _ag_=x$0[2];
- if(_ag_)
- {var match=_ag_[1],a=match[2];
- return [1,
- [0,cst$3,cst$2,cst$1,array],
- map(function(_aJ_){return format(shared,_aJ_)},a)]}
- return [0,cst$4,Easy_format[1]]}
- if(928627642 <= _ad_)
- {var x$3=x$0[2],_ah_=Easy_format[1];
- return [0,caml_call1(Stdlib[35],x$3),_ah_]}
- var a$0=x$0[2];
- return [1,
- [0,cst$7,cst$6,cst$5,record],
- map
- (function(param)
- {var x=param[3],h=param[2],o=param[1];
- if(o)
- var s=o[1],s$0=caml_call2(Stdlib_Printf[4],_B_,s);
- else
- var s$0=caml_call2(Stdlib_Printf[4],_D_,h);
- var
- _aG_=format(shared,x),
- _aH_=Easy_format[3],
- _aI_=Easy_format[1];
- return [2,
- [0,[0,caml_call2(Stdlib_Printf[4],_C_,s$0),_aI_],_aH_],
- _aG_]},
- a$0)]}
- if(737456202 <= _ad_)
- {if(815034505 <= _ad_)
- {var x$4=x$0[2],_ai_=Easy_format[1];
- return [0,caml_call2(Stdlib_Printf[4],_s_,x$4),_ai_]}
- var
- x$5=x$0[2],
- _aj_=Easy_format[1],
- _ak_=x$5?cst_true:cst_false;
- return [0,_ak_,_aj_]}
- if(726928360 <= _ad_)
- {var a$1=x$0[2];
- return [1,
- [0,cst$10,cst$9,cst$8,tuple],
- map(function(_aF_){return format(shared,_aF_)},a$1)]}
- var
- match$0=x$0[2],
- o=match$0[3],
- h=match$0[2],
- opt_name=match$0[1];
- if(opt_name)
- var s=opt_name[1],name=caml_call2(Stdlib_Printf[4],_t_,s);
- else
- var name=caml_call2(Stdlib_Printf[4],_u_,h);
- if(o)
- {var
- x$6=o[1],
- _al_=format(shared,x$6),
- _am_=Easy_format[3],
- _an_=Easy_format[1];
- return [1,
- [0,cst$14,cst$13,cst$12,tuple],
- [0,
- [2,
- [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_],
- _al_],
- 0]]}
- var
- _ao_=Easy_format[1],
- _ap_=caml_call2(Stdlib[28],name,cst$15);
- return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]}
- if(-775957819 <= _ad_)
- {if(412180492 <= _ad_)
- {if(504440814 <= _ad_)
- {var _aq_=x$0[2];
- if(_aq_)
- {var
- match$1=_aq_[1],
- aa=match$1[2],
- header=match$1[1],
- _ar_=
- function(header)
- {return function(a)
- {function _aE_(i,x)
- {var
- match=caml_check_bound(header,i)[1 + i],
- h=match[2],
- s=match[1];
- return [0,s,h,x]}
- return [0,847309489,caml_call2(Stdlib_Array[16],_aE_,a)]}}
- (header),
- x$7=
- [0,
- 951901561,
- [0,[0,record_tag,caml_call2(Stdlib_Array[15],_ar_,aa)]]],
- x$0=x$7;
- continue}
- return [0,cst$17,Easy_format[1]]}
- var x$8=x$0[2],_as_=Easy_format[1];
- return [0,caml_call1(Stdlib[33],x$8),_as_]}
- if(221365804 <= _ad_)
- {var
- match$2=x$0[2],
- o$0=match$2[2],
- i=match$2[1],
- suffix=0 === i?cst$18:caml_call1(Stdlib[33],i);
- if(o$0)
- {var
- x$9=o$0[1],
- _at_=Easy_format[1],
- cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_],
- _au_=format(shared,x$9);
- return [2,[0,cons,Easy_format[3]],_au_]}
- var _av_=Easy_format[1];
- return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]}
- var x$10=x$0[2],p=shared[2],tbl=shared[1];
- p[1]++;
- var
- pos=p[1],
- offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos);
- if(0 === offset)
- {var
- _aw_=format(shared,x$10),
- _ax_=Easy_format[3],
- _ay_=Easy_format[1];
- return [2,
- [0,[0,caml_call2(Stdlib_Printf[4],_v_,pos),_ay_],_ax_],
- _aw_]}
- var _az_=Easy_format[1];
- return [0,
- caml_call2(Stdlib_Printf[4],_w_,pos - offset | 0),
- _az_]}
- if(-783416530 <= _ad_)
- {if(-783415859 <= _ad_)
- {var x$11=x$0[2],_aA_=Easy_format[1];
- return [0,caml_call2(Stdlib_Printf[4],_x_,x$11),_aA_]}
- var x$12=x$0[2],_aB_=Easy_format[1];
- return [0,caml_call2(Stdlib_Printf[4],_y_,x$12),_aB_]}
- if(-783416972 <= _ad_)
- {var x$13=x$0[2],_aC_=Easy_format[1];
- return [0,caml_call2(Stdlib_Printf[4],_z_,x$13),_aC_]}
- var s$0=x$0[2],_aD_=Easy_format[1];
- return [0,caml_call2(Stdlib_Printf[4],_A_,s$0),_aD_]}},
- init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]},
- view_of_tree=
- function(t)
- {var _ac_=format(init(0),t);
- return caml_call3(Easy_format[4][4],0,0,_ac_)},
- print_view_of_tree=
- function(t)
- {var _ab_=format(init(0),t);
- return caml_call3(Easy_format[4][6],0,0,_ab_)},
- output_view_of_tree=
- function(oc,t)
- {var _aa_=format(init(0),t);
- return caml_call4(Easy_format[4][5],0,0,oc,_aa_)},
- view=
- function(unhash,s){return view_of_tree(tree_of_string(unhash,s))},
- print_view=
- function(unhash,s)
- {return print_view_of_tree(tree_of_string(unhash,s))},
- output_view=
- function(unhash,oc,s)
- {return output_view_of_tree(oc,tree_of_string(unhash,s))},
- Bi_io=
- [0,
- bool_tag,
- int8_tag,
- int16_tag,
- int32_tag,
- int64_tag,
- float32_tag,
- float64_tag,
- uvint_tag,
- svint_tag,
- string_tag,
- array_tag,
- tuple_tag,
- record_tag,
- num_variant_tag,
- variant_tag,
- unit_tag,
- table_tag,
- shared_tag,
- write_tag,
- read_tag,
- hash_name,
- write_hashtag,
- string_of_hashtag,
- read_hashtag,
- read_field_hashtag,
- make_unhash,
- write_numtag,
- read_numtag,
- write_untagged_unit,
- write_untagged_bool,
- write_untagged_char,
- write_untagged_int8,
- write_untagged_int16,
- write_untagged_int32,
- write_untagged_int64,
- write_untagged_float32,
- write_untagged_float64,
- write_untagged_string,
- write_untagged_uvint,
- write_untagged_svint,
- write_unit,
- write_bool,
- write_char,
- write_int8,
- write_int16,
- write_int32,
- write_int64,
- write_float32,
- write_float64,
- write_string,
- write_uvint,
- write_svint,
- read_untagged_unit,
- read_untagged_bool,
- read_untagged_char,
- read_untagged_int8,
- read_untagged_int16,
- read_untagged_int32,
- read_untagged_int64,
- read_untagged_float32,
- read_untagged_float64,
- read_untagged_string,
- read_untagged_uvint,
- read_untagged_svint,
- skip,
- write_tree,
- string_of_tree,
- read_tree,
- tree_of_string,
- tag_of_tree,
- view_of_tree,
- view,
- print_view_of_tree,
- print_view,
- output_view_of_tree,
- output_view,
- safety_test];
- caml_register_global(118,Bi_io,"Bi_io");
- var
- split=
- function(s)
- {var
- acc=[0,0],
- stop=[0,caml_ml_string_length(s)],
- _Y_=stop[1] - 1 | 0;
- if(! (_Y_ < 0))
- {var i=_Y_;
- for(;;)
- {if(44 === caml_string_get(s,i))
- {var start=i + 1 | 0,___=acc[1];
- acc[1]
- =
- [0,
- caml_call3(Stdlib_String[15],s,start,stop[1] - start | 0),
- ___];
- stop[1] = i}
- var _$_=i - 1 | 0;
- if(0 !== i){var i=_$_;continue}
- break}}
- var _Z_=acc[1];
- return [0,caml_call3(Stdlib_String[15],s,0,stop[1]),_Z_]},
- load_lines=
- function(accu,s)
- {var ic=caml_call1(Stdlib[79],s),l=[0,accu];
- try
- {for(;;)
- {var _W_=caml_call1(Stdlib_List[9],l[1]);
- l[1] = [0,caml_call1(Stdlib[83],ic),_W_];
- continue}}
- catch(_X_)
- {_X_ = caml_wrap_exception(_X_);
- if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]}
- throw _X_}},
- load=
- function(ic)
- {var buf=caml_call1(Stdlib_Buffer[1],1000);
- try
- {for(;;)
- {var _U_=caml_call1(Stdlib[82],ic);
- caml_call2(Stdlib_Buffer[12],buf,_U_);
- continue}}
- catch(_V_)
- {_V_ = caml_wrap_exception(_V_);
- if(_V_ === Stdlib[12])return caml_call1(Stdlib_Buffer[2],buf);
- throw _V_}},
- symbol=Stdlib_Filename[4],
- default_dict_path=
- function(param)
- {try
- {var
- _R_=Stdlib_Sys[4],
- _S_=
- caml_string_notequal(_R_,cst_Cygwin)
- ?caml_string_notequal(_R_,cst_Unix)
- ?caml_string_notequal(_R_,cst_Win32)
- ?0
- :[0,
- caml_call2
- (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)]
- :[0,
- caml_call2
- (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)]
- :[0,
- caml_call2
- (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)];
- return _S_}
- catch(_T_)
- {_T_ = caml_wrap_exception(_T_);
- if(_T_ === Stdlib[8])return 0;
- throw _T_}},
- load_dictionary=
- function(dic_file,accu)
- {if(dic_file)
- {var fn=dic_file[1];
- if(runtime.caml_sys_file_exists(fn))
- try
- {var _Q_=load_lines(accu,fn);return _Q_}
- catch(e)
- {e = caml_wrap_exception(e);
- var
- _O_=caml_call1(Stdlib_Printexc[1],e),
- _P_=caml_call3(Stdlib_Printf[4],_E_,fn,_O_);
- return caml_call1(Stdlib[2],_P_)}
- return accu}
- return accu},
- write_uniq=
- function(oc,a)
- {var _J_=0 < a.length - 1?1:0;
- if(_J_)
- {var _K_=caml_check_bound(a,0)[1];
- caml_call3(Stdlib_Printf[1],oc,_F_,_K_);
- var
- _L_=caml_check_bound(a,0)[1],
- _M_=
- function(last,x)
- {if(caml_string_notequal(last,x))
- caml_call3(Stdlib_Printf[1],oc,_G_,x);
- return x};
- caml_call3(Stdlib_Array[17],_M_,_L_,a);
- var _N_=0}
- else
- var _N_=_J_;
- return _N_},
- save_dictionary=
- function(dic_file,l)
- {if(dic_file)
- {var fn=dic_file[1],a=caml_call1(Stdlib_Array[12],l);
- caml_call2(Stdlib_Array[32],Stdlib_String[9],a);
- var
- oc=caml_call1(Stdlib[60],fn),
- finally$0=function(param){return caml_call1(Stdlib[77],oc)};
- try
- {write_uniq(oc,a);var _I_=finally$0(0);return _I_}
- catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}}
- return 0},
- Bi_dump=
- [0,
- split,
- load_lines,
- load,
- symbol,
- default_dict_path,
- load_dictionary,
- write_uniq,
- save_dictionary];
- caml_register_global(122,Bi_dump,"Bi_dump");
- return}
- throw [0,Assert_failure,_H_]}
- r[1] = r[1] >>> 1 | 0;
- c[1]++;
- continue}}
- (globalThis));
-
-
-//# 1 "../../.js/yojson/yojson.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_bytes_get=runtime.caml_bytes_get,
- caml_bytes_set=runtime.caml_bytes_set,
- caml_check_bound=runtime.caml_check_bound,
- caml_classify_float=runtime.caml_classify_float,
- caml_create_bytes=runtime.caml_create_bytes,
- caml_equal=runtime.caml_equal,
- caml_float_of_string=runtime.caml_float_of_string,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_int64_of_string=runtime.caml_int64_of_string,
- caml_int_of_string=runtime.caml_int_of_string,
- caml_lex_engine=runtime.caml_lex_engine,
- caml_make_vect=runtime.caml_make_vect,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_register_global=runtime.caml_register_global,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_get=runtime.caml_string_get,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_trampoline=runtime.caml_trampoline,
- caml_trampoline_return=runtime.caml_trampoline_return,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_Cannot_convert_heterogenou=
- caml_string_of_jsbytes("Cannot convert heterogenous array to biniou"),
- cst_Cannot_convert_big_int_to_=
- caml_string_of_jsbytes("Cannot convert big int to biniou"),
- cst_Cannot_convert_hashed_fiel=
- caml_string_of_jsbytes("Cannot convert hashed field name to JSON"),
- cst_Cannot_convert_uvint_to_JS=
- caml_string_of_jsbytes("Cannot convert uvint to JSON"),
- cst_Cannot_convert_int8_to_JSO=
- caml_string_of_jsbytes("Cannot convert int8 to JSON"),
- cst_Cannot_convert_hashed_vari=
- caml_string_of_jsbytes("Cannot convert hashed variant name to JSON"),
- cst_Cannot_convert_num_variant=
- caml_string_of_jsbytes("Cannot convert num_variant to JSON"),
- cst_Cannot_convert_shared_node=
- caml_string_of_jsbytes("Cannot convert shared node to JSON"),
- cst_Cannot_convert_int64_to_JS=
- caml_string_of_jsbytes("Cannot convert int64 to JSON"),
- cst_Cannot_convert_int32_to_JS=
- caml_string_of_jsbytes("Cannot convert int32 to JSON"),
- cst_Cannot_convert_int16_to_JS=
- caml_string_of_jsbytes("Cannot convert int16 to JSON"),
- cst_Malformed_biniou_table=
- caml_string_of_jsbytes("Malformed biniou table"),
- cst_Cannot_convert_hashed_fiel$0=
- caml_string_of_jsbytes("Cannot convert hashed field name to JSON"),
- cst_Null=caml_string_of_jsbytes("`Null"),
- cst_Some=caml_string_of_jsbytes("(Some "),
- cst$1=caml_string_of_jsbytes(")"),
- cst_None=caml_string_of_jsbytes("None"),
- cst_Null$2=caml_string_of_jsbytes("`Null"),
- cst_Some$1=caml_string_of_jsbytes("(Some "),
- cst$33=caml_string_of_jsbytes(")"),
- cst_None$1=caml_string_of_jsbytes("None"),
- cst_Unexpected_end_of_input$92=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"),
- cst_Unexpected_end_of_input$93=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unexpected_end_of_input$94=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_escape_sequence$1=
- caml_string_of_jsbytes("Invalid escape sequence"),
- cst_Unexpected_end_of_input$95=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_low_surrogate_for_$1=
- caml_string_of_jsbytes
- ("Invalid low surrogate for code point beyond U+FFFF"),
- cst_Missing_escape_sequence_re$1=
- caml_string_of_jsbytes
- ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
- cst_Unexpected_end_of_input$96=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_string_literal$5=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$97=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$29=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$98=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$30=
- caml_string_of_jsbytes("Expected '<' but found"),
- cst_Unexpected_end_of_input$99=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$31=
- caml_string_of_jsbytes("Expected '>' but found"),
- cst_Unexpected_end_of_input$100=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$32=
- caml_string_of_jsbytes("Expected ',' but found"),
- cst_Unexpected_end_of_input$101=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$30=
- caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
- cst_Unexpected_end_of_input$102=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"),
- cst_Expected_null_but_found$1=
- caml_string_of_jsbytes("Expected 'null' but found"),
- cst_Unexpected_end_of_input$103=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_true_or_false_but$1=
- caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
- cst_Unexpected_end_of_input$104=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"),
- cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"),
- cst_Expected_an_integer_but_fo$1=
- caml_string_of_jsbytes
- ("Expected an integer but found a string that doesn't even represent an integer"),
- cst_Expected_integer_but_found$1=
- caml_string_of_jsbytes("Expected integer but found"),
- cst_Unexpected_end_of_input$105=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int32_but_foun$1=
- caml_string_of_jsbytes
- ("Expected an int32 but found a string that doesn't even represent an integer"),
- cst_Expected_int32_but_found$1=
- caml_string_of_jsbytes("Expected int32 but found"),
- cst_Unexpected_end_of_input$106=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int64_but_foun$1=
- caml_string_of_jsbytes
- ("Expected an int64 but found a string that doesn't even represent an integer"),
- cst_Expected_int64_but_found$1=
- caml_string_of_jsbytes("Expected int64 but found"),
- cst_Unexpected_end_of_input$107=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Infinity$21=caml_string_of_jsbytes("-Infinity"),
- cst_Infinity$22=caml_string_of_jsbytes("Infinity"),
- cst_NaN$10=caml_string_of_jsbytes("NaN"),
- cst_Expected_a_number_but_foun$1=
- caml_string_of_jsbytes
- ("Expected a number but found a string that doesn't even represent a number"),
- cst_Expected_number_but_found$1=
- caml_string_of_jsbytes("Expected number but found"),
- cst_Unexpected_end_of_input$108=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$33=
- caml_string_of_jsbytes("Expected '\"' but found"),
- cst_Unexpected_end_of_input$109=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$7=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$110=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$8=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$111=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$34=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$112=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$35=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$113=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$31=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$114=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$36=
- caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$115=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$32=
- caml_string_of_jsbytes("Expected ')' or '' but found"),
- cst_Expected_or_but_found$33=
- caml_string_of_jsbytes("Expected ']' or '' but found"),
- cst_Expected_or_but_found$34=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$116=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$35=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Expected_or_but_found$36=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Expected_or_but_found$37=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$117=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$37=
- caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$118=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$38=
- caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$119=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$38=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$120=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$39=
- caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$121=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$39=
- caml_string_of_jsbytes("Expected '(' or '[' but found"),
- cst_Unexpected_end_of_input$122=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$40=
- caml_string_of_jsbytes("Expected '(' but found"),
- cst_Unexpected_end_of_input$123=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$41=
- caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$124=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$42=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$125=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$43=
- caml_string_of_jsbytes("Expected ']' but found"),
- cst_Unexpected_end_of_input$126=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unexpected_end_of_input$127=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$6=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$128=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$40=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$129=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$9=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$130=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$34=caml_string_of_jsbytes("/*"),
- cst_Unexpected_end_of_input$131=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$7=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$132=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$41=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$133=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$10=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$134=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$35=caml_string_of_jsbytes("/*"),
- cst_Expected_or_but_found$42=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$135=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$43=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$136=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$44=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$137=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$44=
- caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$138=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$45=
- caml_string_of_jsbytes("Expected '>' but found"),
- cst_Unexpected_end_of_input$139=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$36=caml_string_of_jsbytes("*/"),
- cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"),
- stream$1=[0,1],
- cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"),
- cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"),
- cst_Junk_after_end_of_JSON_val$1=
- caml_string_of_jsbytes("Junk after end of JSON value:"),
- cst_Int8_overflow$1=caml_string_of_jsbytes("Int8 overflow"),
- cst_Line$1=caml_string_of_jsbytes("Line"),
- cst_Root_is_not_an_object_or_a$3=
- caml_string_of_jsbytes("Root is not an object or array"),
- cst_true$3=caml_string_of_jsbytes("true"),
- cst_false$3=caml_string_of_jsbytes("false"),
- cst_null$5=caml_string_of_jsbytes("null"),
- cst_b$2=caml_string_of_jsbytes("\\b"),
- cst_t$2=caml_string_of_jsbytes("\\t"),
- cst_n$2=caml_string_of_jsbytes("\\n"),
- cst_f$2=caml_string_of_jsbytes("\\f"),
- cst_r$2=caml_string_of_jsbytes("\\r"),
- cst$32=caml_string_of_jsbytes('\\"'),
- cst$31=caml_string_of_jsbytes("\\\\"),
- cst_u00$2=caml_string_of_jsbytes("\\u00"),
- cst_Null$1=caml_string_of_jsbytes("`Null"),
- cst_Some$0=caml_string_of_jsbytes("(Some "),
- cst$27=caml_string_of_jsbytes(")"),
- cst_None$0=caml_string_of_jsbytes("None"),
- cst_Unexpected_end_of_input$44=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"),
- cst_Unexpected_end_of_input$45=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unexpected_end_of_input$46=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_escape_sequence$0=
- caml_string_of_jsbytes("Invalid escape sequence"),
- cst_Unexpected_end_of_input$47=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_low_surrogate_for_$0=
- caml_string_of_jsbytes
- ("Invalid low surrogate for code point beyond U+FFFF"),
- cst_Missing_escape_sequence_re$0=
- caml_string_of_jsbytes
- ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
- cst_Unexpected_end_of_input$48=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_string_literal$2=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$49=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$13=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$50=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$14=
- caml_string_of_jsbytes("Expected '<' but found"),
- cst_Unexpected_end_of_input$51=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$15=
- caml_string_of_jsbytes("Expected '>' but found"),
- cst_Unexpected_end_of_input$52=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$16=
- caml_string_of_jsbytes("Expected ',' but found"),
- cst_Unexpected_end_of_input$53=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$14=
- caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
- cst_Unexpected_end_of_input$54=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"),
- cst_Expected_null_but_found$0=
- caml_string_of_jsbytes("Expected 'null' but found"),
- cst_Unexpected_end_of_input$55=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_true_or_false_but$0=
- caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
- cst_Unexpected_end_of_input$56=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"),
- cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"),
- cst_Expected_an_integer_but_fo$0=
- caml_string_of_jsbytes
- ("Expected an integer but found a string that doesn't even represent an integer"),
- cst_Expected_integer_but_found$0=
- caml_string_of_jsbytes("Expected integer but found"),
- cst_Unexpected_end_of_input$57=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int32_but_foun$0=
- caml_string_of_jsbytes
- ("Expected an int32 but found a string that doesn't even represent an integer"),
- cst_Expected_int32_but_found$0=
- caml_string_of_jsbytes("Expected int32 but found"),
- cst_Unexpected_end_of_input$58=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int64_but_foun$0=
- caml_string_of_jsbytes
- ("Expected an int64 but found a string that doesn't even represent an integer"),
- cst_Expected_int64_but_found$0=
- caml_string_of_jsbytes("Expected int64 but found"),
- cst_Unexpected_end_of_input$59=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Infinity$19=caml_string_of_jsbytes("-Infinity"),
- cst_Infinity$20=caml_string_of_jsbytes("Infinity"),
- cst_NaN$9=caml_string_of_jsbytes("NaN"),
- cst_Expected_a_number_but_foun$0=
- caml_string_of_jsbytes
- ("Expected a number but found a string that doesn't even represent a number"),
- cst_Expected_number_but_found$0=
- caml_string_of_jsbytes("Expected number but found"),
- cst_Unexpected_end_of_input$60=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$17=
- caml_string_of_jsbytes("Expected '\"' but found"),
- cst_Unexpected_end_of_input$61=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$3=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$62=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$4=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$63=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$18=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$64=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$19=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$65=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$15=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$66=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$20=
- caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$67=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$16=
- caml_string_of_jsbytes("Expected ')' or '' but found"),
- cst_Expected_or_but_found$17=
- caml_string_of_jsbytes("Expected ']' or '' but found"),
- cst_Expected_or_but_found$18=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$68=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$19=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Expected_or_but_found$20=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Expected_or_but_found$21=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$69=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$21=
- caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$70=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$22=
- caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$71=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$22=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$72=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$23=
- caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$73=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$23=
- caml_string_of_jsbytes("Expected '(' or '[' but found"),
- cst_Unexpected_end_of_input$74=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$24=
- caml_string_of_jsbytes("Expected '(' but found"),
- cst_Unexpected_end_of_input$75=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$25=
- caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$76=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$26=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$77=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$27=
- caml_string_of_jsbytes("Expected ']' but found"),
- cst_Unexpected_end_of_input$78=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unexpected_end_of_input$79=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$3=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$80=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$24=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$81=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$5=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$82=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$28=caml_string_of_jsbytes("/*"),
- cst_Unexpected_end_of_input$83=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$4=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$84=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$25=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$85=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$6=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$86=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$29=caml_string_of_jsbytes("/*"),
- cst_Expected_or_but_found$26=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$87=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$27=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$88=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$28=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$89=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$28=
- caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$90=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$29=
- caml_string_of_jsbytes("Expected '>' but found"),
- cst_Unexpected_end_of_input$91=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$30=caml_string_of_jsbytes("*/"),
- cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"),
- cst_Expected_two_objects_check$0=
- caml_string_of_jsbytes("Expected two objects, check inputs"),
- cst_Can_t_convert_each_element$0=
- caml_string_of_jsbytes("Can't convert each element of non-array type "),
- cst_Expected_string_or_null_go$0=
- caml_string_of_jsbytes("Expected string or null, got "),
- cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "),
- cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "),
- cst_Expected_int_or_null_got$0=
- caml_string_of_jsbytes("Expected int or null, got "),
- cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "),
- cst_Expected_float_or_null_got$0=
- caml_string_of_jsbytes("Expected float or null, got "),
- cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "),
- cst_Expected_number_or_null_go$0=
- caml_string_of_jsbytes("Expected number or null, got "),
- cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "),
- cst_Expected_bool_or_null_got$0=
- caml_string_of_jsbytes("Expected bool or null, got "),
- cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "),
- cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "),
- cst_Can_t_map_function_over_no$0=
- caml_string_of_jsbytes("Can't map function over non-array type "),
- cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"),
- cst_Index$0=caml_string_of_jsbytes("Index "),
- cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "),
- cst_Can_t_get_index$0=caml_string_of_jsbytes("Can't get index "),
- cst_of_non_object_type$0=caml_string_of_jsbytes("' of non-object type "),
- cst_Can_t_get_member$0=caml_string_of_jsbytes("Can't get member '"),
- cst_null$4=caml_string_of_jsbytes("null"),
- cst_object$0=caml_string_of_jsbytes("object"),
- cst_array$0=caml_string_of_jsbytes("array"),
- cst_bool$0=caml_string_of_jsbytes("bool"),
- cst_variant$0=caml_string_of_jsbytes("variant"),
- cst_tuple$0=caml_string_of_jsbytes("tuple"),
- cst_float$0=caml_string_of_jsbytes("float"),
- cst_int$0=caml_string_of_jsbytes("int"),
- cst_intlit$0=caml_string_of_jsbytes("intlit"),
- cst_string$0=caml_string_of_jsbytes("string"),
- stream$0=[0,1],
- cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"),
- cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"),
- cst_Junk_after_end_of_JSON_val$0=
- caml_string_of_jsbytes("Junk after end of JSON value:"),
- cst_Int8_overflow$0=caml_string_of_jsbytes("Int8 overflow"),
- cst_Line$0=caml_string_of_jsbytes("Line"),
- cst_Root_is_not_an_object_or_a$2=
- caml_string_of_jsbytes("Root is not an object or array"),
- cst_NaN_value_not_allowed_in_s$7=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$15=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$16=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s$6=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$13=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed$13=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$14=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s$5=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$12=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed$11=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$12=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN$8=caml_string_of_jsbytes("NaN"),
- cst_Infinity$17=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$18=caml_string_of_jsbytes("-Infinity"),
- cst_0$11=caml_string_of_jsbytes(".0"),
- cst_NaN$7=caml_string_of_jsbytes("NaN"),
- cst_0$10=caml_string_of_jsbytes(".0"),
- cst_Infinity$15=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$16=caml_string_of_jsbytes("-Infinity"),
- cst_NaN$6=caml_string_of_jsbytes("NaN"),
- cst_0$9=caml_string_of_jsbytes(".0"),
- cst_Infinity$13=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$14=caml_string_of_jsbytes("-Infinity"),
- cst_true$2=caml_string_of_jsbytes("true"),
- cst_false$2=caml_string_of_jsbytes("false"),
- cst_null$3=caml_string_of_jsbytes("null"),
- cst_b$1=caml_string_of_jsbytes("\\b"),
- cst_t$1=caml_string_of_jsbytes("\\t"),
- cst_n$1=caml_string_of_jsbytes("\\n"),
- cst_f$1=caml_string_of_jsbytes("\\f"),
- cst_r$1=caml_string_of_jsbytes("\\r"),
- cst$26=caml_string_of_jsbytes('\\"'),
- cst$25=caml_string_of_jsbytes("\\\\"),
- cst_u00$1=caml_string_of_jsbytes("\\u00"),
- cst_Null$0=caml_string_of_jsbytes("`Null"),
- cst_Invalid_token=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"),
- cst_Unexpected_end_of_input=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"),
- cst_Unexpected_end_of_input$0=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unexpected_end_of_input$1=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_escape_sequence=
- caml_string_of_jsbytes("Invalid escape sequence"),
- cst_Unexpected_end_of_input$2=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_low_surrogate_for_=
- caml_string_of_jsbytes
- ("Invalid low surrogate for code point beyond U+FFFF"),
- cst_Missing_escape_sequence_re=
- caml_string_of_jsbytes
- ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
- cst_Unexpected_end_of_input$3=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_string_literal=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$4=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$5=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"),
- cst_Unexpected_end_of_input$6=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"),
- cst_Unexpected_end_of_input$7=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"),
- cst_Unexpected_end_of_input$8=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$0=
- caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
- cst_Unexpected_end_of_input$9=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"),
- cst_Expected_null_but_found=
- caml_string_of_jsbytes("Expected 'null' but found"),
- cst_Unexpected_end_of_input$10=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_true_or_false_but=
- caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
- cst_Unexpected_end_of_input$11=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"),
- cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"),
- cst_Expected_an_integer_but_fo=
- caml_string_of_jsbytes
- ("Expected an integer but found a string that doesn't even represent an integer"),
- cst_Expected_integer_but_found=
- caml_string_of_jsbytes("Expected integer but found"),
- cst_Unexpected_end_of_input$12=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int32_but_foun=
- caml_string_of_jsbytes
- ("Expected an int32 but found a string that doesn't even represent an integer"),
- cst_Expected_int32_but_found=
- caml_string_of_jsbytes("Expected int32 but found"),
- cst_Unexpected_end_of_input$13=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"),
- cst_Expected_an_int64_but_foun=
- caml_string_of_jsbytes
- ("Expected an int64 but found a string that doesn't even represent an integer"),
- cst_Expected_int64_but_found=
- caml_string_of_jsbytes("Expected int64 but found"),
- cst_Unexpected_end_of_input$14=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Infinity$11=caml_string_of_jsbytes("-Infinity"),
- cst_Infinity$12=caml_string_of_jsbytes("Infinity"),
- cst_NaN$5=caml_string_of_jsbytes("NaN"),
- cst_Expected_a_number_but_foun=
- caml_string_of_jsbytes
- ("Expected a number but found a string that doesn't even represent a number"),
- cst_Expected_number_but_found=
- caml_string_of_jsbytes("Expected number but found"),
- cst_Unexpected_end_of_input$15=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$2=
- caml_string_of_jsbytes("Expected '\"' but found"),
- cst_Unexpected_end_of_input$16=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$17=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$0=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$18=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$19=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$20=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$1=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$21=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"),
- cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$22=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$2=
- caml_string_of_jsbytes("Expected ')' or '' but found"),
- cst_Expected_or_but_found$3=
- caml_string_of_jsbytes("Expected ']' or '' but found"),
- cst_Expected_or_but_found$4=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$23=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$5=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Expected_or_but_found$6=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Expected_or_but_found$7=
- caml_string_of_jsbytes("Expected ',' or ')' but found"),
- cst_Unexpected_end_of_input$24=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$25=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"),
- cst_Unexpected_end_of_input$26=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$8=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$27=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$28=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$9=
- caml_string_of_jsbytes("Expected '(' or '[' but found"),
- cst_Unexpected_end_of_input$29=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"),
- cst_Unexpected_end_of_input$30=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$10=
- caml_string_of_jsbytes("Expected ')' but found"),
- cst_Unexpected_end_of_input$31=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$11=
- caml_string_of_jsbytes("Expected '[' but found"),
- cst_Unexpected_end_of_input$32=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$12=
- caml_string_of_jsbytes("Expected ']' but found"),
- cst_Unexpected_end_of_input$33=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"),
- cst_Unexpected_end_of_input$34=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$0=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$35=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$10=
- caml_string_of_jsbytes("Expected ':' or '>' but found"),
- cst_Unexpected_end_of_input$36=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$1=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$37=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$6=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_token$7=caml_string_of_jsbytes("Invalid token"),
- cst$22=caml_string_of_jsbytes("/*"),
- cst_Unexpected_end_of_input$38=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"),
- cst_Invalid_string_literal$1=
- caml_string_of_jsbytes("Invalid string literal"),
- cst_Unexpected_end_of_input$39=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_string_or_identif$2=
- caml_string_of_jsbytes("Expected string or identifier but found"),
- cst_Unexpected_end_of_input$40=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$23=caml_string_of_jsbytes("/*"),
- cst_Expected_or_but_found$11=
- caml_string_of_jsbytes("Expected ',' or '}' but found"),
- cst_Unexpected_end_of_input$41=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_or_but_found$12=
- caml_string_of_jsbytes("Expected ',' or ']' but found"),
- cst_Unexpected_end_of_input$42=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst_Expected_but_found$13=
- caml_string_of_jsbytes("Expected ':' but found"),
- cst_Unexpected_end_of_input$43=
- caml_string_of_jsbytes("Unexpected end of input"),
- cst$24=caml_string_of_jsbytes("*/"),
- cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"),
- cst_Expected_two_objects_check=
- caml_string_of_jsbytes("Expected two objects, check inputs"),
- cst_Can_t_convert_each_element=
- caml_string_of_jsbytes("Can't convert each element of non-array type "),
- cst_Expected_string_or_null_go=
- caml_string_of_jsbytes("Expected string or null, got "),
- cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "),
- cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "),
- cst_Expected_int_or_null_got=
- caml_string_of_jsbytes("Expected int or null, got "),
- cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "),
- cst_Expected_float_or_null_got=
- caml_string_of_jsbytes("Expected float or null, got "),
- cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "),
- cst_Expected_number_or_null_go=
- caml_string_of_jsbytes("Expected number or null, got "),
- cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "),
- cst_Expected_bool_or_null_got=
- caml_string_of_jsbytes("Expected bool or null, got "),
- cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "),
- cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "),
- cst_Can_t_map_function_over_no=
- caml_string_of_jsbytes("Can't map function over non-array type "),
- cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"),
- cst_Index=caml_string_of_jsbytes("Index "),
- cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "),
- cst_Can_t_get_index=caml_string_of_jsbytes("Can't get index "),
- cst_of_non_object_type=caml_string_of_jsbytes("' of non-object type "),
- cst_Can_t_get_member=caml_string_of_jsbytes("Can't get member '"),
- cst_null$2=caml_string_of_jsbytes("null"),
- cst_object=caml_string_of_jsbytes("object"),
- cst_array=caml_string_of_jsbytes("array"),
- cst_bool=caml_string_of_jsbytes("bool"),
- cst_variant=caml_string_of_jsbytes("variant"),
- cst_tuple=caml_string_of_jsbytes("tuple"),
- cst_float=caml_string_of_jsbytes("float"),
- cst_int=caml_string_of_jsbytes("int"),
- cst_intlit=caml_string_of_jsbytes("intlit"),
- cst_string=caml_string_of_jsbytes("string"),
- stream=[0,1],
- cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"),
- cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"),
- cst_Junk_after_end_of_JSON_val=
- caml_string_of_jsbytes("Junk after end of JSON value:"),
- cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"),
- cst_Int_overflow$0=caml_string_of_jsbytes("Int overflow"),
- cst_Int_overflow=caml_string_of_jsbytes("Int overflow"),
- cst_Line=caml_string_of_jsbytes("Line"),
- cst_Root_is_not_an_object_or_a$1=
- caml_string_of_jsbytes("Root is not an object or array"),
- cst_NaN_value_not_allowed_in_s$4=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$9=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$10=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s$3=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$8=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed$7=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$8=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s$2=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$7=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed$5=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$6=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN$4=caml_string_of_jsbytes("NaN"),
- cst_Infinity$9=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$10=caml_string_of_jsbytes("-Infinity"),
- cst_0$6=caml_string_of_jsbytes(".0"),
- cst_NaN$3=caml_string_of_jsbytes("NaN"),
- cst_0$5=caml_string_of_jsbytes(".0"),
- cst_Infinity$7=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$8=caml_string_of_jsbytes("-Infinity"),
- cst_NaN$2=caml_string_of_jsbytes("NaN"),
- cst_0$4=caml_string_of_jsbytes(".0"),
- cst_Infinity$5=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$6=caml_string_of_jsbytes("-Infinity"),
- cst_true$1=caml_string_of_jsbytes("true"),
- cst_false$1=caml_string_of_jsbytes("false"),
- cst_null$1=caml_string_of_jsbytes("null"),
- cst_b$0=caml_string_of_jsbytes("\\b"),
- cst_t$0=caml_string_of_jsbytes("\\t"),
- cst_n$0=caml_string_of_jsbytes("\\n"),
- cst_f$0=caml_string_of_jsbytes("\\f"),
- cst_r$0=caml_string_of_jsbytes("\\r"),
- cst$21=caml_string_of_jsbytes('\\"'),
- cst$20=caml_string_of_jsbytes("\\\\"),
- cst_u00$0=caml_string_of_jsbytes("\\u00"),
- cst_null$0=caml_string_of_jsbytes("null"),
- cst$2=caml_string_of_jsbytes("}"),
- cst$3=caml_string_of_jsbytes(","),
- cst$4=caml_string_of_jsbytes("{"),
- cst$5=caml_string_of_jsbytes("{}"),
- cst$6=caml_string_of_jsbytes("]"),
- cst$7=caml_string_of_jsbytes(","),
- cst$8=caml_string_of_jsbytes("["),
- cst$9=caml_string_of_jsbytes("[]"),
- cst$10=caml_string_of_jsbytes("()"),
- cst$11=caml_string_of_jsbytes(")"),
- cst$12=caml_string_of_jsbytes(","),
- cst$13=caml_string_of_jsbytes("("),
- cst_true$0=caml_string_of_jsbytes("true"),
- cst_false$0=caml_string_of_jsbytes("false"),
- cst$14=caml_string_of_jsbytes(":"),
- cst$15=caml_string_of_jsbytes("<"),
- cst$16=caml_string_of_jsbytes(">"),
- cst$17=caml_string_of_jsbytes(""),
- cst$18=caml_string_of_jsbytes(">"),
- cst$19=caml_string_of_jsbytes("<"),
- cst_Root_is_not_an_object_or_a$0=
- caml_string_of_jsbytes
- ("Root is not an object or array as requested by the JSON standard"),
- cst_Root_is_not_an_object_or_a=
- caml_string_of_jsbytes("Root is not an object or array"),
- cst_NaN_value_not_allowed_in_s$1=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$3=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$4=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s$0=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$3=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed$1=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$2=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN_value_not_allowed_in_s=
- caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
- cst_0$2=caml_string_of_jsbytes(".0"),
- cst_Infinity_value_not_allowed=
- caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
- cst_Infinity_value_not_allowed$0=
- caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
- cst_NaN$1=caml_string_of_jsbytes("NaN"),
- cst_Infinity$3=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$4=caml_string_of_jsbytes("-Infinity"),
- cst_0$1=caml_string_of_jsbytes(".0"),
- cst_NaN$0=caml_string_of_jsbytes("NaN"),
- cst_0$0=caml_string_of_jsbytes(".0"),
- cst_Infinity$1=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$2=caml_string_of_jsbytes("-Infinity"),
- cst_NaN=caml_string_of_jsbytes("NaN"),
- cst_0=caml_string_of_jsbytes(".0"),
- cst_Infinity=caml_string_of_jsbytes("Infinity"),
- cst_Infinity$0=caml_string_of_jsbytes("-Infinity"),
- cst_true=caml_string_of_jsbytes("true"),
- cst_false=caml_string_of_jsbytes("false"),
- cst_null=caml_string_of_jsbytes("null"),
- cst_b=caml_string_of_jsbytes("\\b"),
- cst_t=caml_string_of_jsbytes("\\t"),
- cst_n=caml_string_of_jsbytes("\\n"),
- cst_f=caml_string_of_jsbytes("\\f"),
- cst_r=caml_string_of_jsbytes("\\r"),
- cst$0=caml_string_of_jsbytes('\\"'),
- cst=caml_string_of_jsbytes("\\\\"),
- cst_u00=caml_string_of_jsbytes("\\u00"),
- version=caml_string_of_jsbytes("1.7.0"),
- cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"),
- cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"),
- cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"),
- cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"),
- cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"),
- cst_Yojson_Basic_Int_overflow=
- caml_string_of_jsbytes("Yojson.Basic.Int_overflow"),
- ocaml_lex_tables=
- [0,
- caml_string_of_jsbytes
- ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes
- ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
- caml_string_of_jsbytes
- ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes("")],
- cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"),
- cst_Yojson_Basic_Util_Type_err=
- caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"),
- cst_Yojson_Basic_Util_Undefine=
- caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"),
- cst_Yojson_Safe_Int_overflow=
- caml_string_of_jsbytes("Yojson.Safe.Int_overflow"),
- ocaml_lex_tables$0=
- [0,
- caml_string_of_jsbytes
- ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes
- ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
- caml_string_of_jsbytes
- ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes("")],
- cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"),
- cst_Yojson_Safe_Util_Type_erro=
- caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"),
- cst_Yojson_Safe_Util_Undefined=
- caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"),
- cst_Yojson_Raw_Int_overflow=
- caml_string_of_jsbytes("Yojson.Raw.Int_overflow"),
- ocaml_lex_tables$1=
- [0,
- caml_string_of_jsbytes
- ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes
- ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
- caml_string_of_jsbytes
- ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
- caml_string_of_jsbytes
- ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes(""),
- caml_string_of_jsbytes("")],
- cst_Yojson_Raw_Finally=caml_string_of_jsbytes("Yojson.Raw.Finally"),
- Bi_io=global_data.Bi_io,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib=global_data.Stdlib,
- Bi_outbuf=global_data.Bi_outbuf,
- Stdlib_String=global_data.Stdlib__String,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Format=global_data.Stdlib__Format,
- Assert_failure=global_data.Assert_failure,
- Stdlib_Bytes=global_data.Stdlib__Bytes,
- Stdlib_Stream=global_data.Stdlib__Stream,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Easy_format=global_data.Easy_format,
- Stdlib_Char=global_data.Stdlib__Char,
- Stdlib_Lexing=global_data.Stdlib__Lexing,
- _a_=[0,951901561,0],
- _b_=[0,848054398,0],
- _c_=[0,848054398,0],
- ___=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _S_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _G_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _H_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _J_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _E_=
- [0,
- [11,
- caml_string_of_jsbytes("`Assoc ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Assoc (@[")],
- _F_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _L_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _N_=
- [0,
- [11,
- caml_string_of_jsbytes("`Floatlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Floatlit (@[")],
- _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _Q_=
- [0,
- [11,
- caml_string_of_jsbytes("`List ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`List (@[")],
- _R_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _T_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _V_=
- [0,
- [11,
- caml_string_of_jsbytes("`Bool ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Bool (@[")],
- _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
- _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _Y_=
- [0,
- [11,
- caml_string_of_jsbytes("`Tuple ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Tuple (@[")],
- _Z_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _$_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _ab_=
- [0,
- [11,
- caml_string_of_jsbytes("`Variant ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Variant (@[")],
- _ac_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _ae_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _ak_=
- [0,
- [11,
- caml_string_of_jsbytes("`Float ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Float (@[")],
- _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
- _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _an_=
- [0,
- [11,
- caml_string_of_jsbytes("`Int ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Int (@[")],
- _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _aq_=
- [0,
- [11,
- caml_string_of_jsbytes("`Stringlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Stringlit (@[")],
- _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _at_=
- [0,
- [11,
- caml_string_of_jsbytes("`String ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`String (@[")],
- _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _ah_=
- [0,
- [11,
- caml_string_of_jsbytes("`Intlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Intlit (@[")],
- _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _de_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _c8_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _cW_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _cX_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _cZ_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cU_=
- [0,
- [11,
- caml_string_of_jsbytes("`Assoc ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Assoc (@[")],
- _cV_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _c1_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _c3_=
- [0,
- [11,
- caml_string_of_jsbytes("`Floatlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Floatlit (@[")],
- _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _c6_=
- [0,
- [11,
- caml_string_of_jsbytes("`List ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`List (@[")],
- _c7_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _c9_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _c$_=
- [0,
- [11,
- caml_string_of_jsbytes("`Bool ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Bool (@[")],
- _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
- _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dc_=
- [0,
- [11,
- caml_string_of_jsbytes("`Tuple ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Tuple (@[")],
- _dd_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _df_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dh_=
- [0,
- [11,
- caml_string_of_jsbytes("`Variant ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Variant (@[")],
- _di_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _dk_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dn_=
- [0,
- [11,
- caml_string_of_jsbytes("`Stringlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Stringlit (@[")],
- _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dq_=
- [0,
- [11,
- caml_string_of_jsbytes("`Intlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Intlit (@[")],
- _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _dE_=[0,737456202,1],
- _dF_=[0,737456202,0],
- _dG_=[0,928231259,caml_string_of_jsbytes("NaN")],
- _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")],
- _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")],
- _dB_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
- caml_string_of_jsbytes("%s '%s%s'")],
- _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
- _dz_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
- caml_string_of_jsbytes("%s '%s'")],
- _dv_=
- [0,
- [11,
- caml_string_of_jsbytes("File "),
- [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
- caml_string_of_jsbytes("File %s, line")],
- _dw_=
- [0,
- [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
- caml_string_of_jsbytes("byte %i")],
- _dy_=
- [0,
- [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
- caml_string_of_jsbytes("bytes %i-%i")],
- _dx_=
- [0,
- [2,
- 0,
- [12,
- 32,
- [4,
- 3,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
- caml_string_of_jsbytes("%s %i, %s:\n%s")],
- _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
- _dt_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _cR_=
- [0,
- [11,
- caml_string_of_jsbytes("src="),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(" start="),
- [4,
- 3,
- 0,
- 0,
- [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
- caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
- _b4_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _cg_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _b9_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _b__=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _ca_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _b7_=
- [0,
- [11,
- caml_string_of_jsbytes("`Assoc ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Assoc (@[")],
- _b8_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _cc_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _ce_=
- [0,
- [11,
- caml_string_of_jsbytes("`List ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`List (@[")],
- _cf_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _ch_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cj_=
- [0,
- [11,
- caml_string_of_jsbytes("`Bool ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Bool (@[")],
- _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
- _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cm_=
- [0,
- [11,
- caml_string_of_jsbytes("`Variant ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Variant (@[")],
- _cn_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _cp_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _b2_=
- [0,
- [11,
- caml_string_of_jsbytes("`Tuple ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Tuple (@[")],
- _b3_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _b5_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cs_=
- [0,
- [11,
- caml_string_of_jsbytes("`Float ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Float (@[")],
- _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
- _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cv_=
- [0,
- [11,
- caml_string_of_jsbytes("`Int ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Int (@[")],
- _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cy_=
- [0,
- [11,
- caml_string_of_jsbytes("`Intlit ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Intlit (@[")],
- _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cB_=
- [0,
- [11,
- caml_string_of_jsbytes("`String ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`String (@[")],
- _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _cP_=[0,737456202,1],
- _cQ_=[0,737456202,0],
- _cM_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
- caml_string_of_jsbytes("%s '%s%s'")],
- _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
- _cK_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
- caml_string_of_jsbytes("%s '%s'")],
- _cG_=
- [0,
- [11,
- caml_string_of_jsbytes("File "),
- [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
- caml_string_of_jsbytes("File %s, line")],
- _cH_=
- [0,
- [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
- caml_string_of_jsbytes("byte %i")],
- _cJ_=
- [0,
- [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
- caml_string_of_jsbytes("bytes %i-%i")],
- _cI_=
- [0,
- [2,
- 0,
- [12,
- 32,
- [4,
- 3,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
- caml_string_of_jsbytes("%s %i, %s:\n%s")],
- _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
- _cE_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
- _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
- _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
- _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
- _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
- _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
- _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
- _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
- _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
- _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
- _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
- _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
- _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
- _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
- _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
- _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _bC_=
- [0,
- [11,
- caml_string_of_jsbytes("src="),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(" start="),
- [4,
- 3,
- 0,
- 0,
- [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
- caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
- _ba_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _a3_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _a4_=
- [0,
- [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
- caml_string_of_jsbytes("(@[")],
- _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _a6_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _a1_=
- [0,
- [11,
- caml_string_of_jsbytes("`Assoc ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Assoc (@[")],
- _a2_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _a8_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _a__=
- [0,
- [11,
- caml_string_of_jsbytes("`List ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`List (@[")],
- _a$_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes("<2>"),0],
- caml_string_of_jsbytes("<2>")]],
- [12,91,0]],
- caml_string_of_jsbytes("@[<2>[")],
- _bb_=
- [0,
- [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
- caml_string_of_jsbytes("@,]@]")],
- _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _bd_=
- [0,
- [11,
- caml_string_of_jsbytes("`Bool ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Bool (@[")],
- _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
- _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _bg_=
- [0,
- [11,
- caml_string_of_jsbytes("`Float ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Float (@[")],
- _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
- _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _bj_=
- [0,
- [11,
- caml_string_of_jsbytes("`Int ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`Int (@[")],
- _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _bm_=
- [0,
- [11,
- caml_string_of_jsbytes("`String ("),
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- 0]],
- caml_string_of_jsbytes("`String (@[")],
- _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
- _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
- _bA_=[0,737456202,1],
- _bB_=[0,737456202,0],
- _bx_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
- caml_string_of_jsbytes("%s '%s%s'")],
- _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
- _bv_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
- caml_string_of_jsbytes("%s '%s'")],
- _br_=
- [0,
- [11,
- caml_string_of_jsbytes("File "),
- [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
- caml_string_of_jsbytes("File %s, line")],
- _bs_=
- [0,
- [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
- caml_string_of_jsbytes("byte %i")],
- _bu_=
- [0,
- [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
- caml_string_of_jsbytes("bytes %i-%i")],
- _bt_=
- [0,
- [2,
- 0,
- [12,
- 32,
- [4,
- 3,
- 0,
- 0,
- [11,
- caml_string_of_jsbytes(", "),
- [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
- caml_string_of_jsbytes("%s %i, %s:\n%s")],
- _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
- _bp_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
- _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
- _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
- _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
- _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
- _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
- _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
- _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
- _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
- _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
- _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
- _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
- _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
- _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
- _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
- _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _aB_=
- [0,
- [11,
- caml_string_of_jsbytes("src="),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(" start="),
- [4,
- 3,
- 0,
- 0,
- [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
- caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
- _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")],
- _aw_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
- _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
- _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
- _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
- _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
- _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
- _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
- _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
- _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
- _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
- _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
- _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
- _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
- _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
- _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
- _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
- _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
- _e_=
- [0,
- [11,
- caml_string_of_jsbytes("src="),
- [3,
- 0,
- [11,
- caml_string_of_jsbytes(" start="),
- [4,
- 3,
- 0,
- 0,
- [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
- caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
- _d_=[0,caml_string_of_jsbytes("common.ml"),57,4];
- function biniou_of_json(param)
- {if(typeof param === "number")return 948106916;
- var _li_=param[1];
- if(708012133 <= _li_)
- {if(726928360 === _li_)
- {var l=param[2],_lj_=caml_call1(Stdlib_Array[12],l);
- return [0,
- 726928360,
- caml_call2(Stdlib_Array[15],biniou_of_json,_lj_)]}
- if(848054398 <= _li_)
- {if(963043957 <= _li_)
- {var
- l$0=param[2],
- _lk_=caml_call1(Stdlib_Array[12],l$0),
- _ll_=
- function(param)
- {var x=param[2],s=param[1],_lu_=biniou_of_json(x);
- return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]},
- a=caml_call2(Stdlib_Array[15],_ll_,_lk_);
- return [0,847309489,a]}
- var l$1=param[2];
- if(l$1)
- {var
- _lm_=caml_call1(Stdlib_Array[12],l$1),
- a$0=caml_call2(Stdlib_Array[15],biniou_of_json,_lm_),
- _ln_=caml_check_bound(a$0,0)[1],
- tag=caml_call1(Bi_io[70],_ln_);
- try
- {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1;
- if(! (_lp_ < 1))
- {var i=_lo_;
- for(;;)
- {var _lr_=caml_check_bound(a$0,i)[1 + i];
- if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3];
- var _ls_=i + 1 | 0;
- if(_lp_ !== i){var i=_ls_;continue}
- break}}
- var _lq_=[0,951901561,[0,[0,tag,a$0]]];
- return _lq_}
- catch(_lt_)
- {_lt_ = caml_wrap_exception(_lt_);
- if(_lt_ === Stdlib[3])
- return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou);
- throw _lt_}}
- return _a_}
- if(737456202 <= _li_){var b=param[2];return [0,737456202,b]}
- var match=param[2],o=match[2],s=match[1];
- if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0;
- return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]}
- if(3654863 <= _li_)
- {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]}
- var i$0=param[2];
- return [0,412180492,i$0]}
- if(-752863768 <= _li_)
- return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_);
- var s$0=param[2];
- return [0,-976970511,s$0]}
- function json_of_biniou(x)
- {if(typeof x === "number")return 870828711;
- var _k3_=x[1];
- if(708012133 <= _k3_)
- {if(847309489 <= _k3_)
- {if(951901561 <= _k3_)
- {if(1063160078 <= _k3_)
- return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS);
- var _k4_=x[2];
- if(_k4_)
- {var
- match=_k4_[1],
- a=match[2],
- _k5_=caml_call2(Stdlib_Array[15],json_of_biniou,a);
- return [0,848054398,caml_call1(Stdlib_Array[11],_k5_)]}
- return _b_}
- if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]}
- var
- a$0=x[2],
- _k6_=
- function(param)
- {var _lh_=param[1];
- if(_lh_)
- {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]}
- return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)},
- _k7_=caml_call2(Stdlib_Array[15],_k6_,a$0);
- return [0,963043957,caml_call1(Stdlib_Array[11],_k7_)]}
- if(737456202 <= _k3_)
- {if(815034505 <= _k3_)
- return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO);
- var b=x[2];
- return [0,737456202,b]}
- if(726928360 <= _k3_)
- {var a$1=x[2],_k8_=caml_call2(Stdlib_Array[15],json_of_biniou,a$1);
- return [0,726928360,caml_call1(Stdlib_Array[11],_k8_)]}
- var _k9_=x[2],_k__=_k9_[1];
- if(_k__)
- {var _k$_=_k9_[3],_la_=_k__[1];
- if(_k$_)
- {var x$0=_k$_[1];
- return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]}
- return [0,708012133,[0,_la_,0]]}
- return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)}
- if(-775957819 <= _k3_)
- {if(412180492 <= _k3_)
- {if(504440814 <= _k3_)
- {var _lb_=x[2];
- if(_lb_)
- {var
- match$0=_lb_[1],
- rows=match$0[2],
- header=match$0[1],
- _lc_=
- function(a)
- {var n=header.length - 1;
- if(a.length - 1 !== n)
- caml_call1(Stdlib[2],cst_Malformed_biniou_table);
- var l=[0,0],_le_=n - 1 | 0;
- if(! (_le_ < 0))
- {var i=_le_;
- for(;;)
- {var
- match=caml_check_bound(header,i)[1 + i],
- o=match[1],
- x=caml_check_bound(a,i)[1 + i];
- if(o)
- {var s=o[1],_lf_=l[1];
- l[1] = [0,[0,s,json_of_biniou(x)],_lf_]}
- else
- caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0);
- var _lg_=i - 1 | 0;
- if(0 !== i){var i=_lg_;continue}
- break}}
- return [0,963043957,l[1]]},
- _ld_=caml_call2(Stdlib_Array[15],_lc_,rows);
- return [0,848054398,caml_call1(Stdlib_Array[11],_ld_)]}
- return _c_}
- var i=x[2];
- return [0,3654863,i]}
- return 221365804 <= _k3_
- ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant)
- :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)}
- if(-783416530 <= _k3_)
- return -783415859 <= _k3_
- ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS)
- :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS);
- if(-783416972 <= _k3_)
- return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS);
- var s=x[2];
- return [0,-976970511,s]}
- var Yojson_biniou=[0,biniou_of_json,json_of_biniou];
- caml_register_global(1022,Yojson_biniou,"Yojson_biniou");
- var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)];
- function json_error(s){throw [0,Json_error,s]}
- var
- End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)],
- End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)],
- End_of_tuple=[248,cst_Yojson_End_of_tuple,caml_fresh_oo_id(0)],
- End_of_input=[248,cst_Yojson_End_of_input,caml_fresh_oo_id(0)];
- function utf8_of_code(buf,x)
- {var add=Bi_outbuf[15];
- function maxbits(n,x){return 0 === (x >>> n | 0)?1:0}
- if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_Char[1],x));
- if(maxbits(11,x))
- {caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],192 | (x >>> 6 | 0) & 31));
- return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))}
- if(maxbits(16,x))
- {caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],224 | (x >>> 12 | 0) & 15));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63));
- return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))}
- if(maxbits(21,x))
- {caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],240 | (x >>> 18 | 0) & 7));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63));
- return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))}
- if(maxbits(26,x))
- {caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],248 | (x >>> 24 | 0) & 3));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63));
- return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))}
- if(maxbits(31,x))
- {caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],252 | (x >>> 30 | 0) & 1));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 24 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63));
- caml_call2
- (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63));
- return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))}
- throw [0,Assert_failure,_d_]}
- function utf8_of_surrogate_pair(buf,i,j)
- {var high10=i - 55296 | 0,low10=j - 56320 | 0;
- return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)}
- function is_object_or_array(x)
- {if(typeof x !== "number")
- {var _k2_=x[1],switch$0=0;
- if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1;
- if(switch$0)return 1}
- return 0}
- var Lexer_state=[0];
- function init_lexer(buf,fname,opt,param)
- {if(opt)var sth=opt[1],lnum=sth;else var lnum=1;
- if(buf)
- var buf$0=buf[1],buf$1=buf$0;
- else
- var buf$1=caml_call3(Bi_outbuf[3],0,0,256);
- return [0,buf$1,lnum,0,fname]}
- function hex(n)
- {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0;
- return caml_call1(Stdlib_Char[1],_k1_)}
- function write_special(src,start,stop,ob,str)
- {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
- caml_call2(Bi_outbuf[13],ob,str);
- start[1] = stop + 1 | 0;
- return 0}
- function finish_string(src,start,ob)
- {try
- {var
- _k0_=
- caml_call4
- (Bi_outbuf[14],
- ob,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- return _k0_}
- catch(exc)
- {exc = caml_wrap_exception(exc);
- caml_call4
- (Stdlib_Printf[3],
- _e_,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- throw exc}}
- function write_string(ob,s)
- {caml_call2(Bi_outbuf[15],ob,34);
- var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0;
- if(! (_kY_ < 0))
- {var i$0=_kX_;
- for(;;)
- {var c=caml_string_get(s,i$0);
- if(92 === c)
- write_special(s,start,i$0,ob,cst);
- else
- {var switch$0=0;
- if(35 <= c)
- if(127 === c)switch$0 = 1;else switch$0 = 2;
- else
- if(8 <= c)
- {var switch$1=0;
- switch(c - 8 | 0)
- {case 0:write_special(s,start,i$0,ob,cst_b);break;
- case 1:write_special(s,start,i$0,ob,cst_t);break;
- case 2:write_special(s,start,i$0,ob,cst_n);break;
- case 4:write_special(s,start,i$0,ob,cst_f);break;
- case 5:write_special(s,start,i$0,ob,cst_r);break;
- case 26:write_special(s,start,i$0,ob,cst$0);break;
- case 24:
- case 25:switch$0 = 2;switch$1 = 1;break;
- default:switch$0 = 1;switch$1 = 1}}
- else
- switch$0 = 1;
- switch(switch$0)
- {case 2:break;
- case 1:
- caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
- var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
- caml_call5(Stdlib_Bytes[12],cst_u00,0,dst,i,4);
- caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0));
- caml_bytes_set(dst,i + 5 | 0,hex(c & 15));
- start[1] = i$0 + 1 | 0;
- break
- }}
- var _kZ_=i$0 + 1 | 0;
- if(_kY_ !== i$0){var i$0=_kZ_;continue}
- break}}
- finish_string(s,start,ob);
- return caml_call2(Bi_outbuf[15],ob,34)}
- function json_string_of_string(s)
- {var ob=caml_call3(Bi_outbuf[3],0,0,10);
- write_string(ob,s);
- return caml_call1(Bi_outbuf[4],ob)}
- function write_null(ob,param)
- {return caml_call2(Bi_outbuf[13],ob,cst_null)}
- function write_bool(ob,x)
- {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)}
- var
- _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
- _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
- max_digits=caml_call2(Stdlib[17],_g_,_f_);
- function write_digits(s,pos,x)
- {if(0 === x)return pos;
- var
- d=x % 10 | 0,
- pos$0=write_digits(s,pos,x / 10 | 0),
- n=caml_call1(Stdlib[18],d);
- caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0));
- return pos$0 + 1 | 0}
- function write_int(ob,x)
- {caml_call2(Bi_outbuf[9],ob,max_digits);
- if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0}
- if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
- var s=ob[1],pos=ob[3];
- caml_bytes_set(s,pos,45);
- ob[3] = write_digits(s,pos + 1 | 0,x);
- return 0}
- function float_needs_period(s)
- {try
- {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0;
- if(! (_kS_ < 0))
- {var i=_kR_;
- for(;;)
- {var match=caml_string_get(s,i),switch$0=0;
- if(48 <= match)
- {if(! (58 <= match))switch$0 = 1}
- else
- if(45 === match)switch$0 = 1;
- if(! switch$0)throw Stdlib[3];
- var _kU_=i + 1 | 0;
- if(_kS_ !== i){var i=_kU_;continue}
- break}}
- var _kT_=1;
- return _kT_}
- catch(_kV_)
- {_kV_ = caml_wrap_exception(_kV_);
- if(_kV_ === Stdlib[3])return 0;
- throw _kV_}}
- function write_float_fast(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _kP_=0. < x?cst_Infinity:cst_Infinity$0;
- return caml_call2(Bi_outbuf[13],ob,_kP_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN);
- var s=caml_call2(Stdlib_Printf[4],_h_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _kQ_=float_needs_period(s);
- return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_}
- function write_float(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _kN_=0. < x?cst_Infinity$1:cst_Infinity$2;
- return caml_call2(Bi_outbuf[13],ob,_kN_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0);
- var
- s1=caml_call2(Stdlib_Printf[4],_i_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_j_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _kO_=float_needs_period(s);
- return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_}
- function write_normal_float_prec(significant_figures,ob,x)
- {var switcher=significant_figures - 1 | 0;
- if(15 < switcher >>> 0)
- var s=caml_call2(Stdlib_Printf[4],_k_,x);
- else
- switch(switcher)
- {case 0:var s=caml_call2(Stdlib_Printf[4],_l_,x);break;
- case 1:var s=caml_call2(Stdlib_Printf[4],_m_,x);break;
- case 2:var s=caml_call2(Stdlib_Printf[4],_n_,x);break;
- case 3:var s=caml_call2(Stdlib_Printf[4],_o_,x);break;
- case 4:var s=caml_call2(Stdlib_Printf[4],_p_,x);break;
- case 5:var s=caml_call2(Stdlib_Printf[4],_q_,x);break;
- case 6:var s=caml_call2(Stdlib_Printf[4],_r_,x);break;
- case 7:var s=caml_call2(Stdlib_Printf[4],_s_,x);break;
- case 8:var s=caml_call2(Stdlib_Printf[4],_t_,x);break;
- case 9:var s=caml_call2(Stdlib_Printf[4],_u_,x);break;
- case 10:var s=caml_call2(Stdlib_Printf[4],_v_,x);break;
- case 11:var s=caml_call2(Stdlib_Printf[4],_w_,x);break;
- case 12:var s=caml_call2(Stdlib_Printf[4],_x_,x);break;
- case 13:var s=caml_call2(Stdlib_Printf[4],_y_,x);break;
- case 14:var s=caml_call2(Stdlib_Printf[4],_z_,x);break;
- default:var s=caml_call2(Stdlib_Printf[4],_A_,x)}
- caml_call2(Bi_outbuf[13],ob,s);
- var _kM_=float_needs_period(s);
- return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_}
- function write_float_prec(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4;
- return caml_call2(Bi_outbuf[13],ob,_kL_)}
- return 4 <= match
- ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1)
- :write_normal_float_prec(significant_figures,ob,x)}
- function write_std_float_fast(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _kJ_=
- 0. < x
- ?cst_Infinity_value_not_allowed
- :cst_Infinity_value_not_allowed$0;
- return json_error(_kJ_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s);
- var s=caml_call2(Stdlib_Printf[4],_B_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _kK_=float_needs_period(s);
- return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_}
- function write_std_float(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _kH_=
- 0. < x
- ?cst_Infinity_value_not_allowed$1
- :cst_Infinity_value_not_allowed$2;
- return json_error(_kH_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0);
- var
- s1=caml_call2(Stdlib_Printf[4],_C_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_D_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _kI_=float_needs_period(s);
- return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_}
- function write_std_float_prec(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _kG_=
- 0. < x
- ?cst_Infinity_value_not_allowed$3
- :cst_Infinity_value_not_allowed$4;
- return json_error(_kG_)}
- return 4 <= match
- ?json_error(cst_NaN_value_not_allowed_in_s$1)
- :write_normal_float_prec(significant_figures,ob,x)}
- var
- write_intlit=Bi_outbuf[13],
- write_floatlit=Bi_outbuf[13],
- write_stringlit=Bi_outbuf[13];
- function iter2(f_elt,f_sep,x,param$0)
- {if(param$0)
- {var l$0=param$0[2],y$0=param$0[1];
- caml_call2(f_elt,x,y$0);
- var param=l$0;
- for(;;)
- {if(param)
- {var l=param[2],y=param[1];
- caml_call1(f_sep,x);
- caml_call2(f_elt,x,y);
- var param=l;
- continue}
- return 0}}
- return 0}
- function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)}
- function write_tuple(ob,l)
- {caml_call2(Bi_outbuf[15],ob,40);
- iter2(write_t,f_sep,ob,l);
- return caml_call2(Bi_outbuf[15],ob,41)}
- function write_list(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2(write_t,f_sep,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_t(ob,x)
- {if(typeof x === "number")return write_null(ob,0);
- var _kF_=x[1];
- if(708012133 <= _kF_)
- {if(737456202 <= _kF_)
- {if(928231259 <= _kF_)
- {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)}
- var s=x[2];
- return caml_call2(Bi_outbuf[13],ob,s)}
- if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)}
- var b=x[2];
- return write_bool(ob,b)}
- if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)}
- var match=x[2],o=match[2],s$0=match[1];
- return write_variant(ob,s$0,o)}
- if(-752863768 === _kF_)
- {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
- if(3654863 <= _kF_)
- {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)}
- var i=x[2];
- return write_int(ob,i)}
- if(-375152890 <= _kF_)
- {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)}
- var s$3=x[2];
- return write_string(ob,s$3)}
- function write_assoc(ob,l)
- {function f_elt(ob,param)
- {var x=param[2],s=param[1];
- write_string(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_t(ob,x)}
- caml_call2(Bi_outbuf[15],ob,123);
- iter2(f_elt,f_sep,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- function write_variant(ob,s,o)
- {caml_call2(Bi_outbuf[15],ob,60);
- write_string(ob,s);
- if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t(ob,x)}
- return caml_call2(Bi_outbuf[15],ob,62)}
- function write_std_tuple(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2(write_std_json,f_sep,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_std_json(ob,x)
- {if(typeof x === "number")return write_null(ob,0);
- var _kE_=x[1];
- if(708012133 <= _kE_)
- {if(737456202 <= _kE_)
- {if(928231259 <= _kE_)
- {if(963043957 <= _kE_)
- {var
- l=x[2],
- f_elt=
- function(ob,param)
- {var x=param[2],s=param[1];
- write_string(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_std_json(ob,x)};
- caml_call2(Bi_outbuf[15],ob,123);
- iter2(f_elt,f_sep,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- var s=x[2];
- return caml_call2(Bi_outbuf[13],ob,s)}
- if(848054398 <= _kE_)
- {var l$0=x[2];
- caml_call2(Bi_outbuf[15],ob,91);
- iter2(write_std_json,f_sep,ob,l$0);
- return caml_call2(Bi_outbuf[15],ob,93)}
- var b=x[2];
- return write_bool(ob,b)}
- if(726928360 <= _kE_){var l$1=x[2];return write_std_tuple(ob,l$1)}
- var match=x[2],o=match[2],s$0=match[1];
- return write_std_variant(ob,s$0,o)}
- if(-752863768 === _kE_)
- {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
- if(3654863 <= _kE_)
- {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)}
- var i=x[2];
- return write_int(ob,i)}
- if(-375152890 <= _kE_)
- {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)}
- var s$3=x[2];
- return write_string(ob,s$3)}
- function write_std_variant(ob,s,o)
- {if(o)
- {var x=o[1];
- caml_call2(Bi_outbuf[15],ob,91);
- write_string(ob,s);
- caml_call2(Bi_outbuf[15],ob,44);
- write_std_json(ob,x);
- return caml_call2(Bi_outbuf[15],ob,93)}
- return write_string(ob,s)}
- function to_outbuf(opt,ob,x)
- {if(opt)var sth=opt[1],std=sth;else var std=0;
- return std
- ?is_object_or_array(x)
- ?write_std_json(ob,x)
- :json_error(cst_Root_is_not_an_object_or_a)
- :write_t(ob,x)}
- function to_string(buf,opt,std,x)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- to_outbuf(std,ob$0,x);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function to_channel(buf,len,std,oc,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- to_outbuf(std,ob$0,x);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function to_output(buf,len,std,out,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
- to_outbuf(std,ob$0,x);
- return caml_call1(Bi_outbuf[8],ob$0)}
- function to_file(len,std,file,x)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {to_channel(0,len,std,oc,x);
- var _kD_=caml_call1(Stdlib[76],oc);
- return _kD_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function stream_to_outbuf(std,ob,st)
- {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)}
- return caml_call2(Stdlib_Stream[8],_kB_,st)}
- function stream_to_string(buf,opt,std,st)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- stream_to_outbuf(std,ob$0,st);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function stream_to_channel(buf,len,std,oc,st)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- stream_to_outbuf(std,ob$0,st);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function stream_to_file(len,std,file,st)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {stream_to_channel(0,len,std,oc,st);
- var _kA_=caml_call1(Stdlib[76],oc);
- return _kA_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function sort(x)
- {if(typeof x !== "number")
- {var _kr_=x[1];
- if(726928361 <= _kr_)
- {if(848054398 === _kr_)
- {var l=x[2],_ks_=caml_call2(Stdlib_List[21],sort,l);
- return [0,848054398,caml_call1(Stdlib_List[9],_ks_)]}
- if(963043957 === _kr_)
- {var
- l$0=x[2],
- _kt_=
- function(param){var v=param[2],k=param[1];return [0,k,sort(v)]},
- _ku_=caml_call2(Stdlib_List[21],_kt_,l$0),
- l$1=caml_call1(Stdlib_List[9],_ku_),
- _kv_=
- function(param,_kz_)
- {var b=_kz_[1],a=param[1];
- return caml_call2(Stdlib_String[9],a,b)};
- return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}}
- else
- if(708012133 === _kr_)
- {var _kw_=x[2],_kx_=_kw_[2];
- if(_kx_)
- {var v=_kx_[1],k=_kw_[1],v$0=sort(v);
- return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
- else
- if(726928360 <= _kr_)
- {var l$2=x[2],_ky_=caml_call2(Stdlib_List[21],sort,l$2);
- return [0,726928360,caml_call1(Stdlib_List[9],_ky_)]}}
- return x}
- function pp(fmt,param)
- {if(typeof param === "number")
- return caml_call2(Stdlib_Format[13],fmt,cst_Null);
- var _kk_=param[1];
- if(708012133 <= _kk_)
- {if(737456202 <= _kk_)
- {if(928231259 <= _kk_)
- {if(963043957 <= _kk_)
- {var xs=param[2];
- caml_call2(Stdlib_Format[129],fmt,_E_);
- caml_call2(Stdlib_Format[129],fmt,_F_);
- var
- _kl_=0,
- _km_=
- function(sep,param)
- {var value=param[2],key=param[1];
- if(sep)caml_call2(Stdlib_Format[129],fmt,_G_);
- caml_call2(Stdlib_Format[129],fmt,_H_);
- caml_call3(Stdlib_Format[129],fmt,_I_,key);
- caml_call2(Stdlib_Format[129],fmt,_J_);
- pp(fmt,value);
- caml_call2(Stdlib_Format[129],fmt,_K_);
- return 1};
- caml_call3(Stdlib_List[25],_km_,_kl_,xs);
- caml_call2(Stdlib_Format[129],fmt,_L_);
- return caml_call2(Stdlib_Format[129],fmt,_M_)}
- var x=param[2];
- caml_call2(Stdlib_Format[129],fmt,_N_);
- caml_call3(Stdlib_Format[129],fmt,_O_,x);
- return caml_call2(Stdlib_Format[129],fmt,_P_)}
- if(848054398 <= _kk_)
- {var xs$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_Q_);
- caml_call2(Stdlib_Format[129],fmt,_R_);
- var
- _kn_=0,
- _ko_=
- function(sep,x)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_);
- pp(fmt,x);
- return 1};
- caml_call3(Stdlib_List[25],_ko_,_kn_,xs$0);
- caml_call2(Stdlib_Format[129],fmt,_T_);
- return caml_call2(Stdlib_Format[129],fmt,_U_)}
- var x$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_V_);
- caml_call3(Stdlib_Format[129],fmt,_W_,x$0);
- return caml_call2(Stdlib_Format[129],fmt,_X_)}
- if(726928360 <= _kk_)
- {var tup=param[2];
- caml_call2(Stdlib_Format[129],fmt,_Y_);
- caml_call2(Stdlib_Format[129],fmt,_Z_);
- var
- _kp_=0,
- _kq_=
- function(sep,e)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,___);
- pp(fmt,e);
- return 1};
- caml_call3(Stdlib_List[25],_kq_,_kp_,tup);
- caml_call2(Stdlib_Format[129],fmt,_$_);
- return caml_call2(Stdlib_Format[129],fmt,_aa_)}
- var match=param[2],value=match[2],name=match[1];
- caml_call2(Stdlib_Format[129],fmt,_ab_);
- caml_call2(Stdlib_Format[129],fmt,_ac_);
- caml_call3(Stdlib_Format[129],fmt,_ad_,name);
- caml_call2(Stdlib_Format[129],fmt,_ae_);
- if(value)
- {var x$1=value[1];
- caml_call2(Stdlib_Format[13],fmt,cst_Some);
- pp(fmt,x$1);
- caml_call2(Stdlib_Format[13],fmt,cst$1)}
- else
- caml_call2(Stdlib_Format[13],fmt,cst_None);
- caml_call2(Stdlib_Format[129],fmt,_af_);
- return caml_call2(Stdlib_Format[129],fmt,_ag_)}
- if(-752863768 === _kk_)
- {var x$2=param[2];
- caml_call2(Stdlib_Format[129],fmt,_ah_);
- caml_call3(Stdlib_Format[129],fmt,_ai_,x$2);
- return caml_call2(Stdlib_Format[129],fmt,_aj_)}
- if(3654863 <= _kk_)
- {if(365180284 <= _kk_)
- {var x$3=param[2];
- caml_call2(Stdlib_Format[129],fmt,_ak_);
- caml_call3(Stdlib_Format[129],fmt,_al_,x$3);
- return caml_call2(Stdlib_Format[129],fmt,_am_)}
- var x$4=param[2];
- caml_call2(Stdlib_Format[129],fmt,_an_);
- caml_call3(Stdlib_Format[129],fmt,_ao_,x$4);
- return caml_call2(Stdlib_Format[129],fmt,_ap_)}
- if(-375152890 <= _kk_)
- {var x$5=param[2];
- caml_call2(Stdlib_Format[129],fmt,_aq_);
- caml_call3(Stdlib_Format[129],fmt,_ar_,x$5);
- return caml_call2(Stdlib_Format[129],fmt,_as_)}
- var x$6=param[2];
- caml_call2(Stdlib_Format[129],fmt,_at_);
- caml_call3(Stdlib_Format[129],fmt,_au_,x$6);
- return caml_call2(Stdlib_Format[129],fmt,_av_)}
- function show(x){return caml_call3(Stdlib_Format[133],_aw_,pp,x)}
- function equal(a,b)
- {var a$0=a,b$0=b;
- for(;;)
- {if(typeof a$0 === "number")
- {if(870828711 === a$0 && 870828711 === b$0)return 1}
- else
- {var _kd_=a$0[1];
- if(708012133 <= _kd_)
- {var switch$0=0;
- if(848054398 <= _kd_)
- {if(928231259 === _kd_)
- {if(typeof b$0 !== "number" && 928231259 === b$0[1])
- {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
- else
- if(963043957 === _kd_)
- {if(typeof b$0 !== "number" && 963043957 === b$0[1])
- {var
- ys=b$0[2],
- xs=a$0[2],
- compare_keys=
- function(param,_kj_)
- {var key=_kj_[1],key$0=param[1];
- return caml_call2(Stdlib_String[9],key$0,key)},
- xs$0=caml_call2(Stdlib_List[57],compare_keys,xs),
- ys$0=caml_call2(Stdlib_List[57],compare_keys,ys);
- try
- {var
- _ke_=
- function(param,_ki_)
- {var
- value=_ki_[2],
- key=_ki_[1],
- value$0=param[2],
- key$0=param[1],
- match=caml_string_equal(key$0,key);
- return match?equal(value$0,value):0},
- result=caml_call3(Stdlib_List[34],_ke_,xs$0,ys$0);
- return result}
- catch(_kh_)
- {_kh_ = caml_wrap_exception(_kh_);
- if(_kh_[1] === Stdlib[6])return 0;
- throw _kh_}}}
- else
- if
- (!
- (848054399 <= _kd_)
- &&
- typeof b$0
- !==
- "number"
- &&
- 848054398
- ===
- b$0[1])
- {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
- else
- if(726928360 === _kd_)
- {if(typeof b$0 !== "number" && 726928360 === b$0[1])
- {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
- else
- if(737456202 === _kd_)
- {if(typeof b$0 !== "number" && 737456202 === b$0[1])
- {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}}
- else
- if
- (!
- (708012134 <= _kd_)
- &&
- typeof b$0
- !==
- "number"
- &&
- 708012133
- ===
- b$0[1])
- {var
- _kf_=b$0[2],
- value=_kf_[2],
- name=_kf_[1],
- match=a$0[2],
- value$0=match[2],
- name$0=match[1],
- match$0=caml_equal(name$0,name);
- if(match$0)
- {if(value$0)
- {if(value)
- {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}}
- else
- if(! value)return 1;
- return 0}
- return 0}
- if(switch$0)
- try
- {var result$0=caml_call3(Stdlib_List[34],equal,xs$1,ys$1);
- return result$0}
- catch(_kg_)
- {_kg_ = caml_wrap_exception(_kg_);
- if(_kg_[1] === Stdlib[6])return 0;
- throw _kg_}}
- else
- if(-375152890 <= _kd_)
- {if(3654863 === _kd_)
- {if(typeof b$0 !== "number" && 3654863 === b$0[1])
- {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
- else
- if(365180284 === _kd_)
- {if(typeof b$0 !== "number" && 365180284 === b$0[1])
- {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}}
- else
- if
- (!
- (-375152889 <= _kd_)
- &&
- typeof b$0
- !==
- "number"
- &&
- -375152890
- ===
- b$0[1])
- {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}}
- else
- if(-976970511 === _kd_)
- {if(typeof b$0 !== "number" && -976970511 === b$0[1])
- {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}}
- else
- if
- (-752863768
- ===
- _kd_
- &&
- typeof b$0
- !==
- "number"
- &&
- -752863768
- ===
- b$0[1])
- {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}}
- return 0}}
- var
- array=Easy_format[2],
- record=Easy_format[2],
- _ax_=Easy_format[2],
- tuple=
- [0,
- 0,
- _ax_[2],
- _ax_[3],
- _ax_[4],
- 0,
- _ax_[6],
- 0,
- _ax_[8],
- _ax_[9],
- _ax_[10],
- _ax_[11],
- _ax_[12],
- _ax_[13],
- _ax_[14]],
- _ay_=Easy_format[2],
- variant=
- [0,
- _ay_[1],
- _ay_[2],
- _ay_[3],
- _ay_[4],
- 0,
- _ay_[6],
- _ay_[7],
- _ay_[8],
- _ay_[9],
- _ay_[10],
- _ay_[11],
- _ay_[12],
- _ay_[13],
- _ay_[14]];
- function _az_(std,x)
- {var x$0=x;
- for(;;)
- {if(typeof x$0 === "number")return [0,cst_null$0,Easy_format[1]];
- var _jT_=x$0[1];
- if(726928360 <= _jT_)
- {if(737456202 === _jT_)
- {var
- x$1=x$0[2],
- _jU_=Easy_format[1],
- _jV_=x$1?cst_true$0:cst_false$0;
- return [0,_jV_,_jU_]}
- if(! (928231259 <= _jT_))
- {if(848054398 <= _jT_)
- {var _jY_=x$0[2];
- if(_jY_)
- {var _jZ_=function(_kc_){return _az_(std,_kc_)};
- return [1,
- [0,cst$8,cst$7,cst$6,array],
- caml_call2(Stdlib_List[19],_jZ_,_jY_)]}
- return [0,cst$9,Easy_format[1]]}
- var l=x$0[2];
- if(std){var x$2=[0,848054398,l],x$0=x$2;continue}
- if(0 === l)return [0,cst$10,Easy_format[1]];
- var _j0_=function(_kb_){return _az_(std,_kb_)};
- return [1,
- [0,cst$13,cst$12,cst$11,tuple],
- caml_call2(Stdlib_List[19],_j0_,l)]}
- if(963043957 <= _jT_)
- {var _jW_=x$0[2];
- if(_jW_)
- {var
- _jX_=
- function(param)
- {var
- x=param[2],
- name=param[1],
- _j$_=json_string_of_string(name),
- s=caml_call2(Stdlib_Printf[4],_aA_,_j$_),
- _ka_=_az_(std,x);
- return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]};
- return [1,
- [0,cst$4,cst$3,cst$2,record],
- caml_call2(Stdlib_List[19],_jX_,_jW_)]}
- return [0,cst$5,Easy_format[1]]}}
- else
- {if(3654863 === _jT_)
- {var x$3=x$0[2],_j1_=Easy_format[1];
- return [0,caml_call1(Stdlib[33],x$3),_j1_]}
- if(365180284 <= _jT_)
- {if(708012133 <= _jT_)
- {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1];
- if(_j3_)
- {var x$4=_j3_[1];
- if(std)
- {var
- x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]],
- x$0=x$5;
- continue}
- var
- _j5_=json_string_of_string(_j4_),
- _j6_=caml_call2(Stdlib[28],_j5_,cst$14),
- op=caml_call2(Stdlib[28],cst$15,_j6_);
- return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]}
- if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue}
- var
- _j7_=Easy_format[1],
- _j8_=json_string_of_string(_j4_),
- _j9_=caml_call2(Stdlib[28],_j8_,cst$18);
- return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]}
- var x$7=x$0[2];
- if(std)
- {var ob$0=caml_call3(Bi_outbuf[3],0,0,20);
- write_std_float(ob$0,x$7);
- var s$0=caml_call1(Bi_outbuf[4],ob$0)}
- else
- {var ob=caml_call3(Bi_outbuf[3],0,0,20);
- write_float(ob,x$7);
- var s$0=caml_call1(Bi_outbuf[4],ob)}
- return [0,s$0,Easy_format[1]]}
- if(! (-752863768 <= _jT_))
- {var s$1=x$0[2],_j__=Easy_format[1];
- return [0,json_string_of_string(s$1),_j__]}}
- var s=x$0[2];
- return [0,s,Easy_format[1]]}}
- function format(opt,x)
- {if(opt)var sth=opt[1],std=sth;else var std=0;
- if(std && ! is_object_or_array(x))
- return json_error(cst_Root_is_not_an_object_or_a$0);
- return _az_(std,x)}
- function to_string$0(std,x)
- {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)}
- function to_channel$0(std,oc,x)
- {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)}
- function pretty_format(std,x){return format(std,x)}
- function pretty_print(std,out,x)
- {var _jQ_=pretty_format(std,x);
- return caml_call2(Easy_format[4][2],out,_jQ_)}
- function pretty_to_string(std,x){return to_string$0(std,x)}
- function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)}
- function hex$0(n)
- {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0;
- return caml_call1(Stdlib_Char[1],_jP_)}
- function write_special$0(src,start,stop,ob,str)
- {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
- caml_call2(Bi_outbuf[13],ob,str);
- start[1] = stop + 1 | 0;
- return 0}
- function finish_string$0(src,start,ob)
- {try
- {var
- _jO_=
- caml_call4
- (Bi_outbuf[14],
- ob,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- return _jO_}
- catch(exc)
- {exc = caml_wrap_exception(exc);
- caml_call4
- (Stdlib_Printf[3],
- _aB_,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- throw exc}}
- function write_string$0(ob,s)
- {caml_call2(Bi_outbuf[15],ob,34);
- var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0;
- if(! (_jM_ < 0))
- {var i$0=_jL_;
- for(;;)
- {var c=caml_string_get(s,i$0);
- if(92 === c)
- write_special$0(s,start,i$0,ob,cst$20);
- else
- {var switch$0=0;
- if(35 <= c)
- if(127 === c)switch$0 = 1;else switch$0 = 2;
- else
- if(8 <= c)
- {var switch$1=0;
- switch(c - 8 | 0)
- {case 0:write_special$0(s,start,i$0,ob,cst_b$0);break;
- case 1:write_special$0(s,start,i$0,ob,cst_t$0);break;
- case 2:write_special$0(s,start,i$0,ob,cst_n$0);break;
- case 4:write_special$0(s,start,i$0,ob,cst_f$0);break;
- case 5:write_special$0(s,start,i$0,ob,cst_r$0);break;
- case 26:write_special$0(s,start,i$0,ob,cst$21);break;
- case 24:
- case 25:switch$0 = 2;switch$1 = 1;break;
- default:switch$0 = 1;switch$1 = 1}}
- else
- switch$0 = 1;
- switch(switch$0)
- {case 2:break;
- case 1:
- caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
- var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
- caml_call5(Stdlib_Bytes[12],cst_u00$0,0,dst,i,4);
- caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0));
- caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15));
- start[1] = i$0 + 1 | 0;
- break
- }}
- var _jN_=i$0 + 1 | 0;
- if(_jM_ !== i$0){var i$0=_jN_;continue}
- break}}
- finish_string$0(s,start,ob);
- return caml_call2(Bi_outbuf[15],ob,34)}
- function write_null$0(ob,param)
- {return caml_call2(Bi_outbuf[13],ob,cst_null$1)}
- function write_bool$0(ob,x)
- {var _jK_=x?cst_true$1:cst_false$1;
- return caml_call2(Bi_outbuf[13],ob,_jK_)}
- var
- _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
- _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
- max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_);
- function write_digits$0(s,pos,x)
- {if(0 === x)return pos;
- var
- d=x % 10 | 0,
- pos$0=write_digits$0(s,pos,x / 10 | 0),
- n=caml_call1(Stdlib[18],d);
- caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0));
- return pos$0 + 1 | 0}
- function write_int$0(ob,x)
- {caml_call2(Bi_outbuf[9],ob,max_digits$0);
- if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0}
- if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
- var s=ob[1],pos=ob[3];
- caml_bytes_set(s,pos,45);
- ob[3] = write_digits$0(s,pos + 1 | 0,x);
- return 0}
- function float_needs_period$0(s)
- {try
- {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0;
- if(! (_jG_ < 0))
- {var i=_jF_;
- for(;;)
- {var match=caml_string_get(s,i),switch$0=0;
- if(48 <= match)
- {if(! (58 <= match))switch$0 = 1}
- else
- if(45 === match)switch$0 = 1;
- if(! switch$0)throw Stdlib[3];
- var _jI_=i + 1 | 0;
- if(_jG_ !== i){var i=_jI_;continue}
- break}}
- var _jH_=1;
- return _jH_}
- catch(_jJ_)
- {_jJ_ = caml_wrap_exception(_jJ_);
- if(_jJ_ === Stdlib[3])return 0;
- throw _jJ_}}
- function write_float_fast$0(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6;
- return caml_call2(Bi_outbuf[13],ob,_jD_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2);
- var s=caml_call2(Stdlib_Printf[4],_aE_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _jE_=float_needs_period$0(s);
- return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_}
- function write_float$0(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _jB_=0. < x?cst_Infinity$7:cst_Infinity$8;
- return caml_call2(Bi_outbuf[13],ob,_jB_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3);
- var
- s1=caml_call2(Stdlib_Printf[4],_aF_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aG_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _jC_=float_needs_period$0(s);
- return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_}
- function write_normal_float_prec$0(significant_figures,ob,x)
- {var switcher=significant_figures - 1 | 0;
- if(15 < switcher >>> 0)
- var s=caml_call2(Stdlib_Printf[4],_aH_,x);
- else
- switch(switcher)
- {case 0:var s=caml_call2(Stdlib_Printf[4],_aI_,x);break;
- case 1:var s=caml_call2(Stdlib_Printf[4],_aJ_,x);break;
- case 2:var s=caml_call2(Stdlib_Printf[4],_aK_,x);break;
- case 3:var s=caml_call2(Stdlib_Printf[4],_aL_,x);break;
- case 4:var s=caml_call2(Stdlib_Printf[4],_aM_,x);break;
- case 5:var s=caml_call2(Stdlib_Printf[4],_aN_,x);break;
- case 6:var s=caml_call2(Stdlib_Printf[4],_aO_,x);break;
- case 7:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break;
- case 8:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break;
- case 9:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break;
- case 10:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break;
- case 11:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break;
- case 12:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break;
- case 13:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break;
- case 14:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break;
- default:var s=caml_call2(Stdlib_Printf[4],_aX_,x)}
- caml_call2(Bi_outbuf[13],ob,s);
- var _jA_=float_needs_period$0(s);
- return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_}
- function write_float_prec$0(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10;
- return caml_call2(Bi_outbuf[13],ob,_jz_)}
- return 4 <= match
- ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4)
- :write_normal_float_prec$0(significant_figures,ob,x)}
- function write_std_float_fast$0(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _jx_=
- 0. < x
- ?cst_Infinity_value_not_allowed$5
- :cst_Infinity_value_not_allowed$6;
- return json_error(_jx_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2);
- var s=caml_call2(Stdlib_Printf[4],_aY_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _jy_=float_needs_period$0(s);
- return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_}
- function write_std_float$0(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _jv_=
- 0. < x
- ?cst_Infinity_value_not_allowed$7
- :cst_Infinity_value_not_allowed$8;
- return json_error(_jv_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3);
- var
- s1=caml_call2(Stdlib_Printf[4],_aZ_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a0_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _jw_=float_needs_period$0(s);
- return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_}
- function write_std_float_prec$0(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _ju_=
- 0. < x
- ?cst_Infinity_value_not_allowed$9
- :cst_Infinity_value_not_allowed$10;
- return json_error(_ju_)}
- return 4 <= match
- ?json_error(cst_NaN_value_not_allowed_in_s$4)
- :write_normal_float_prec$0(significant_figures,ob,x)}
- function iter2$0(f_elt,f_sep,x,param$0)
- {if(param$0)
- {var l$0=param$0[2],y$0=param$0[1];
- caml_call2(f_elt,x,y$0);
- var param=l$0;
- for(;;)
- {if(param)
- {var l=param[2],y=param[1];
- caml_call1(f_sep,x);
- caml_call2(f_elt,x,y);
- var param=l;
- continue}
- return 0}}
- return 0}
- function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)}
- function write_list$0(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2$0(write_t$0,f_sep$0,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_t$0(ob,x)
- {if(typeof x === "number")return write_null$0(ob,0);
- var _jt_=x[1];
- if(365180284 <= _jt_)
- {if(848054398 <= _jt_)
- {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)}
- var l$0=x[2];
- return write_list$0(ob,l$0)}
- if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)}
- var f=x[2];
- return write_float$0(ob,f)}
- if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)}
- var s=x[2];
- return write_string$0(ob,s)}
- function write_assoc$0(ob,l)
- {function f_elt(ob,param)
- {var x=param[2],s=param[1];
- write_string$0(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_t$0(ob,x)}
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$0(f_elt,f_sep$0,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- function write_std_json$0(ob,x)
- {if(typeof x === "number")return write_null$0(ob,0);
- var _js_=x[1];
- if(365180284 <= _js_)
- {if(848054398 <= _js_)
- {if(963043957 <= _js_)
- {var
- l=x[2],
- f_elt=
- function(ob,param)
- {var x=param[2],s=param[1];
- write_string$0(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_std_json$0(ob,x)};
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$0(f_elt,f_sep$0,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- var l$0=x[2];
- caml_call2(Bi_outbuf[15],ob,91);
- iter2$0(write_std_json$0,f_sep$0,ob,l$0);
- return caml_call2(Bi_outbuf[15],ob,93)}
- if(737456202 <= _js_){var b=x[2];return write_bool$0(ob,b)}
- var f=x[2];
- return write_std_float$0(ob,f)}
- if(3654863 <= _js_){var i=x[2];return write_int$0(ob,i)}
- var s=x[2];
- return write_string$0(ob,s)}
- function to_outbuf$0(opt,ob,x)
- {if(opt)var sth=opt[1],std=sth;else var std=0;
- return std
- ?is_object_or_array(x)
- ?write_std_json$0(ob,x)
- :json_error(cst_Root_is_not_an_object_or_a$1)
- :write_t$0(ob,x)}
- function to_string$1(buf,opt,std,x)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- to_outbuf$0(std,ob$0,x);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function to_channel$1(buf,len,std,oc,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- to_outbuf$0(std,ob$0,x);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function to_output$0(buf,len,std,out,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
- to_outbuf$0(std,ob$0,x);
- return caml_call1(Bi_outbuf[8],ob$0)}
- function to_file$0(len,std,file,x)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {to_channel$1(0,len,std,oc,x);
- var _jr_=caml_call1(Stdlib[76],oc);
- return _jr_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function stream_to_outbuf$0(std,ob,st)
- {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)}
- return caml_call2(Stdlib_Stream[8],_jp_,st)}
- function stream_to_string$0(buf,opt,std,st)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- stream_to_outbuf$0(std,ob$0,st);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function stream_to_channel$0(buf,len,std,oc,st)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- stream_to_outbuf$0(std,ob$0,st);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function stream_to_file$0(len,std,file,st)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {stream_to_channel$0(0,len,std,oc,st);
- var _jo_=caml_call1(Stdlib[76],oc);
- return _jo_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function sort$0(x)
- {if(typeof x !== "number")
- {var _ji_=x[1];
- if(848054398 === _ji_)
- {var l=x[2],_jj_=caml_call2(Stdlib_List[21],sort$0,l);
- return [0,848054398,caml_call1(Stdlib_List[9],_jj_)]}
- if(963043957 === _ji_)
- {var
- l$0=x[2],
- _jk_=
- function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]},
- _jl_=caml_call2(Stdlib_List[21],_jk_,l$0),
- l$1=caml_call1(Stdlib_List[9],_jl_),
- _jm_=
- function(param,_jn_)
- {var b=_jn_[1],a=param[1];
- return caml_call2(Stdlib_String[9],a,b)};
- return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}}
- return x}
- function pp$0(fmt,param)
- {if(typeof param === "number")
- return caml_call2(Stdlib_Format[13],fmt,cst_Null$0);
- var _jd_=param[1];
- if(365180284 <= _jd_)
- {if(848054398 <= _jd_)
- {if(963043957 <= _jd_)
- {var xs=param[2];
- caml_call2(Stdlib_Format[129],fmt,_a1_);
- caml_call2(Stdlib_Format[129],fmt,_a2_);
- var
- _je_=0,
- _jf_=
- function(sep,param)
- {var value=param[2],key=param[1];
- if(sep)caml_call2(Stdlib_Format[129],fmt,_a3_);
- caml_call2(Stdlib_Format[129],fmt,_a4_);
- caml_call3(Stdlib_Format[129],fmt,_a5_,key);
- caml_call2(Stdlib_Format[129],fmt,_a6_);
- pp$0(fmt,value);
- caml_call2(Stdlib_Format[129],fmt,_a7_);
- return 1};
- caml_call3(Stdlib_List[25],_jf_,_je_,xs);
- caml_call2(Stdlib_Format[129],fmt,_a8_);
- return caml_call2(Stdlib_Format[129],fmt,_a9_)}
- var xs$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_a__);
- caml_call2(Stdlib_Format[129],fmt,_a$_);
- var
- _jg_=0,
- _jh_=
- function(sep,x)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_);
- pp$0(fmt,x);
- return 1};
- caml_call3(Stdlib_List[25],_jh_,_jg_,xs$0);
- caml_call2(Stdlib_Format[129],fmt,_bb_);
- return caml_call2(Stdlib_Format[129],fmt,_bc_)}
- if(737456202 <= _jd_)
- {var x=param[2];
- caml_call2(Stdlib_Format[129],fmt,_bd_);
- caml_call3(Stdlib_Format[129],fmt,_be_,x);
- return caml_call2(Stdlib_Format[129],fmt,_bf_)}
- var x$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_bg_);
- caml_call3(Stdlib_Format[129],fmt,_bh_,x$0);
- return caml_call2(Stdlib_Format[129],fmt,_bi_)}
- if(3654863 <= _jd_)
- {var x$1=param[2];
- caml_call2(Stdlib_Format[129],fmt,_bj_);
- caml_call3(Stdlib_Format[129],fmt,_bk_,x$1);
- return caml_call2(Stdlib_Format[129],fmt,_bl_)}
- var x$2=param[2];
- caml_call2(Stdlib_Format[129],fmt,_bm_);
- caml_call3(Stdlib_Format[129],fmt,_bn_,x$2);
- return caml_call2(Stdlib_Format[129],fmt,_bo_)}
- function show$0(x){return caml_call3(Stdlib_Format[133],_bp_,pp$0,x)}
- function equal$0(a,b)
- {if(typeof a === "number")
- {if(870828711 === a && 870828711 === b)return 1}
- else
- {var _i9_=a[1];
- if(365180285 <= _i9_)
- {if(737456202 === _i9_)
- {if(typeof b !== "number" && 737456202 === b[1])
- {var b$0=b[2],a$0=a[2];return caml_equal(a$0,b$0)}}
- else
- if(848054398 === _i9_)
- {if(typeof b !== "number" && 848054398 === b[1])
- {var ys=b[2],xs=a[2];
- try
- {var result=caml_call3(Stdlib_List[34],equal$0,xs,ys);
- return result}
- catch(_i$_)
- {_i$_ = caml_wrap_exception(_i$_);
- if(_i$_[1] === Stdlib[6])return 0;
- throw _i$_}}}
- else
- if
- (963043957
- ===
- _i9_
- &&
- typeof b
- !==
- "number"
- &&
- 963043957
- ===
- b[1])
- {var
- ys$0=b[2],
- xs$0=a[2],
- compare_keys=
- function(param,_jc_)
- {var key=_jc_[1],key$0=param[1];
- return caml_call2(Stdlib_String[9],key$0,key)},
- xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0),
- ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0);
- try
- {var
- _i__=
- function(param,_jb_)
- {var
- value=_jb_[2],
- key=_jb_[1],
- value$0=param[2],
- key$0=param[1],
- match=caml_string_equal(key$0,key);
- return match?equal$0(value$0,value):0},
- result$0=caml_call3(Stdlib_List[34],_i__,xs$1,ys$1);
- return result$0}
- catch(_ja_)
- {_ja_ = caml_wrap_exception(_ja_);
- if(_ja_[1] === Stdlib[6])return 0;
- throw _ja_}}}
- else
- if(-976970511 === _i9_)
- {if(typeof b !== "number" && -976970511 === b[1])
- {var b$1=b[2],a$1=a[2];return caml_equal(a$1,b$1)}}
- else
- if(3654863 === _i9_)
- {if(typeof b !== "number" && 3654863 === b[1])
- {var b$2=b[2],a$2=a[2];return caml_equal(a$2,b$2)}}
- else
- if
- (365180284 <= _i9_ && typeof b !== "number" && 365180284 === b[1])
- {var b$3=b[2],a$3=a[2];return caml_equal(a$3,b$3)}}
- return 0}
- function pretty_format$0(std,x){return format(std,x)}
- function pretty_print$0(std,out,x)
- {var _i8_=pretty_format$0(std,x);
- return caml_call2(Easy_format[4][2],out,_i8_)}
- function pretty_to_string$0(std,x){return to_string$0(std,x)}
- function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)}
- var
- from_channel=Stdlib_Lexing[2],
- from_string=Stdlib_Lexing[3],
- lexeme=Stdlib_Lexing[8],
- sub_lexeme=Stdlib_Lexing[16],
- sub_lexeme_char=Stdlib_Lexing[18];
- function hex$1(c)
- {if(65 <= c)
- {if(97 <= c)
- {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
- else
- if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
- else
- if(! (9 < c - 48 >>> 0))return c - 48 | 0;
- throw [0,Assert_failure,_bq_]}
- function custom_error(descr,v,lexbuf)
- {var
- offs=lexbuf[4] - 1 | 0,
- bol=v[3],
- pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
- pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
- _i7_=v[4];
- if(_i7_)
- var s=_i7_[1],file_line=caml_call2(Stdlib_Printf[4],_br_,s);
- else
- var file_line=cst_Line;
- var
- bytes=
- pos1 === pos2
- ?caml_call2(Stdlib_Printf[4],_bs_,pos1 + 1 | 0)
- :caml_call3(Stdlib_Printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0),
- msg=caml_call5(Stdlib_Printf[4],_bt_,file_line,v[2],bytes,descr);
- return json_error(msg)}
- function lexer_error(descr,v,lexbuf)
- {var _i6_=caml_call1(lexeme,lexbuf);
- return custom_error
- (caml_call3(Stdlib_Printf[4],_bv_,descr,_i6_),v,lexbuf)}
- var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}];
- function long_error(descr,v,lexbuf)
- {var
- junk=caml_call1(lexeme,lexbuf),
- extra_junk=caml_call1(read_junk[1],lexbuf);
- return custom_error
- (caml_call4(Stdlib_Printf[4],_bx_,descr,junk,extra_junk),
- v,
- lexbuf)}
- var
- _by_=0 === (Stdlib[20] % 10 | 0)?0:1,
- min10=(Stdlib[20] / 10 | 0) - _by_ | 0,
- _bz_=0 === (Stdlib[19] % 10 | 0)?0:1,
- max10=(Stdlib[19] / 10 | 0) + _bz_ | 0,
- Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)];
- function extract_positive_int(lexbuf)
- {var
- start=lexbuf[5],
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _i3_=stop - 1 | 0;
- if(! (_i3_ < start))
- {var i=start;
- for(;;)
- {if(max10 <= n[1])throw Int_overflow;
- var _i4_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) + _i4_ | 0;
- var _i5_=i + 1 | 0;
- if(_i3_ !== i){var i=_i5_;continue}
- break}}
- if(0 <= n[1])return n[1];
- throw Int_overflow}
- function extract_negative_int(lexbuf)
- {var
- start=lexbuf[5] + 1 | 0,
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _i0_=stop - 1 | 0;
- if(! (_i0_ < start))
- {var i=start;
- for(;;)
- {if(n[1] <= min10)throw Int_overflow;
- var _i1_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) - _i1_ | 0;
- var _i2_=i + 1 | 0;
- if(_i0_ !== i){var i=_i2_;continue}
- break}}
- if(0 < n[1])throw Int_overflow;
- return n[1]}
- function newline(v,lexbuf)
- {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
- function add_lexeme(buf,lexbuf)
- {var len=lexbuf[6] - lexbuf[5] | 0;
- return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
- function read_colon(v,lexbuf)
- {var ocaml_lex_state=297;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$8,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}}
- function read_object_sep(v,lexbuf)
- {var ocaml_lex_state=292;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_object;
- case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}}
- function read_object_end(lexbuf)
- {var ocaml_lex_state=290;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_object;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_array_sep(v,lexbuf)
- {var ocaml_lex_state=257;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_array;
- case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}}
- function read_array_end(lexbuf)
- {var ocaml_lex_state=255;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_array;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function finish_escaped_char(v,lexbuf)
- {var ocaml_lex_state=68;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(8 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]);
- return caml_call2(Bi_outbuf[15],v[1],c);
- case 1:return caml_call2(Bi_outbuf[15],v[1],8);
- case 2:return caml_call2(Bi_outbuf[15],v[1],12);
- case 3:return caml_call2(Bi_outbuf[15],v[1],10);
- case 4:return caml_call2(Bi_outbuf[15],v[1],13);
- case 5:return caml_call2(Bi_outbuf[15],v[1],9);
- case 6:
- var
- a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0),
- b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0),
- c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0),
- d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0),
- _iU_=hex$1(d),
- _iV_=hex$1(c$0) << 4,
- _iW_=hex$1(b) << 8,
- x=hex$1(a) << 12 | _iW_ | _iV_ | _iU_;
- if(55296 <= x && ! (56319 < x))
- {var ocaml_lex_state$1=82;
- for(;;)
- {var
- ocaml_lex_state$2=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf);
- if(2 < ocaml_lex_state$2 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$1=ocaml_lex_state$2;
- continue}
- switch(ocaml_lex_state$2)
- {case 0:
- var
- a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0),
- b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0),
- c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0),
- d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0),
- _iX_=hex$1(d$0),
- _iY_=hex$1(c$1) << 4,
- _iZ_=hex$1(b$0) << 8,
- y=hex$1(a$0) << 12 | _iZ_ | _iY_ | _iX_;
- if(56320 <= y && ! (57343 < y))
- return utf8_of_surrogate_pair(v[1],x,y);
- return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf);
- case 1:
- return long_error(cst_Missing_escape_sequence_re,v,lexbuf);
- default:
- return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}}
- return utf8_of_code(v[1],x);
- case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}}
- function finish_string$1(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=58;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call1(Bi_outbuf[4],v[1]);
- case 1:finish_escaped_char(v,lexbuf);continue a;
- case 2:add_lexeme(v[1],lexbuf);continue a;
- default:
- return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}}
- function read_ident(v,lexbuf)
- {var ocaml_lex_state=237;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf);
- case 1:
- var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s;
- case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}}
- function finish_comment(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=125;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Unterminated_comment,v,lexbuf);
- case 2:newline(v,lexbuf);continue a;
- default:continue a}}}}
- function read_space(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=133;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:newline(v,lexbuf);continue a;
- case 1:finish_comment(v,lexbuf);continue a;
- case 2:newline(v,lexbuf);continue a;
- case 3:continue a;
- default:return 0}}}}
- function read_json$2(counter,v,lexbuf)
- {var _iT_=0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_iT_)}
- return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_iT_])}
- function ocaml_lex_read_json_rec(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(19 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return _bA_;
- case 1:return _bB_;
- case 2:return 870828711;
- case 3:return [0,365180284,Stdlib[24]];
- case 4:return [0,365180284,Stdlib[22]];
- case 5:return [0,365180284,Stdlib[23]];
- case 6:
- caml_call1(Bi_outbuf[19],v[1]);
- return [0,-976970511,finish_string$1(v,lexbuf)];
- case 7:
- try
- {var _iJ_=[0,3654863,extract_positive_int(lexbuf)];return _iJ_}
- catch(_iS_)
- {_iS_ = caml_wrap_exception(_iS_);
- if(_iS_ === Int_overflow)
- return lexer_error(cst_Int_overflow,v,lexbuf);
- throw _iS_}
- case 8:
- try
- {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_}
- catch(_iR_)
- {_iR_ = caml_wrap_exception(_iR_);
- if(_iR_ === Int_overflow)
- return lexer_error(cst_Int_overflow$0,v,lexbuf);
- throw _iR_}
- case 9:
- return [0,
- 365180284,
- caml_float_of_string(caml_call1(lexeme,lexbuf))];
- case 10:
- var acc=[0,0];
- try
- {read_space(v,lexbuf);
- read_object_end(lexbuf);
- var field_name=read_ident(v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- var _iL_=acc[1];
- acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_iL_];
- for(;;)
- {read_space(v,lexbuf);
- read_object_sep(v,lexbuf);
- read_space(v,lexbuf);
- var field_name$0=read_ident(v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- var _iM_=acc[1];
- acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iM_];
- continue}}
- catch(_iQ_)
- {_iQ_ = caml_wrap_exception(_iQ_);
- if(_iQ_ === End_of_object)
- return [0,963043957,caml_call1(Stdlib_List[9],acc[1])];
- throw _iQ_}
- case 11:
- var acc$0=[0,0];
- try
- {read_space(v,lexbuf);
- read_array_end(lexbuf);
- var _iN_=acc$0[1];
- acc$0[1] = [0,read_json(v,lexbuf),_iN_];
- for(;;)
- {read_space(v,lexbuf);
- read_array_sep(v,lexbuf);
- read_space(v,lexbuf);
- var _iO_=acc$0[1];
- acc$0[1] = [0,read_json(v,lexbuf),_iO_];
- continue}}
- catch(_iP_)
- {_iP_ = caml_wrap_exception(_iP_);
- if(_iP_ === End_of_array)
- return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])];
- throw _iP_}
- case 12:return long_error(cst_Invalid_token,v,lexbuf);
- case 13:return long_error(cst_Invalid_token$0,v,lexbuf);
- case 14:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return read_json$2(counter$0,v,lexbuf)}
- return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
- case 15:
- finish_comment(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return read_json$2(counter$1,v,lexbuf)}
- return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
- case 16:
- newline(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return read_json$2(counter$2,v,lexbuf)}
- return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
- case 17:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return read_json$2(counter$3,v,lexbuf)}
- return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
- case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf);
- default:return long_error(cst_Invalid_token$1,v,lexbuf)}}}
- function read_json(v,lexbuf)
- {return caml_trampoline(read_json$2(0,v,lexbuf))}
- function map_string(v,f,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=63;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var b=v[1],_iI_=b[3];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_);
- case 1:finish_escaped_char(v,lexbuf);continue a;
- case 2:add_lexeme(v[1],lexbuf);continue a;
- default:
- return custom_error(cst_Unexpected_end_of_input$1,v,lexbuf)}}}}
- function finish_stringlit(v,lexbuf)
- {var ocaml_lex_state=91;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
- caml_bytes_set(s,0,34);
- caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len);
- return caml_call1(Stdlib_Bytes[6],s);
- case 1:return long_error(cst_Invalid_string_literal,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}}
- function read_gt(v,lexbuf)
- {var ocaml_lex_state=111;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$0,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}}
- function finish_variant(v,lexbuf)
- {var ocaml_lex_state=102;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var x=read_json(v,lexbuf);
- read_space(v,lexbuf);
- read_gt(v,lexbuf);
- return [0,x];
- case 1:return 0;
- case 2:return long_error(cst_Expected_or_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}}
- function read_lt(v,lexbuf)
- {var ocaml_lex_state=107;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}}
- function read_comma(v,lexbuf)
- {var ocaml_lex_state=115;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$1,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}}
- function start_any_variant(v,lexbuf)
- {var ocaml_lex_state=119;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return -154522342;
- case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
- case 2:return -124528282;
- case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}}
- function read_eof(lexbuf)
- {var ocaml_lex_state=131;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_null(v,lexbuf)
- {var ocaml_lex_state=140;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_null_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}}
- function read_null_if_possible(v,lexbuf)
- {var ocaml_lex_state=147;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_bool(v,lexbuf)
- {var ocaml_lex_state=152;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(5 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 1;
- case 1:return 0;
- case 2:return 1;
- case 3:return 0;
- case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}}
- function ocaml_lex_read_int_rec(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(4 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _iC_=extract_positive_int(lexbuf);return _iC_}
- catch(_iH_)
- {_iH_ = caml_wrap_exception(_iH_);
- if(_iH_ === Int_overflow)
- return lexer_error(cst_Int_overflow$1,v,lexbuf);
- throw _iH_}
- case 1:
- try
- {var _iD_=extract_negative_int(lexbuf);return _iD_}
- catch(_iG_)
- {_iG_ = caml_wrap_exception(_iG_);
- if(_iG_ === Int_overflow)
- return lexer_error(cst_Int_overflow$2,v,lexbuf);
- throw _iG_}
- case 2:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$1(v,lexbuf);
- try
- {var _iE_=caml_int_of_string(s);return _iE_}
- catch(_iF_)
- {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)}
- case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}}
- function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)}
- function ocaml_lex_read_int32_rec(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf));
- return _iy_}
- catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$1(v,lexbuf);
- try
- {var _iz_=caml_int_of_string(s);return _iz_}
- catch(_iA_)
- {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)}
- case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}}
- function read_int32(v,lexbuf)
- {return ocaml_lex_read_int32_rec(v,lexbuf,185)}
- function ocaml_lex_read_int64_rec(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf));
- return _iu_}
- catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$1(v,lexbuf);
- try
- {var _iv_=caml_int64_of_string(s);return _iv_}
- catch(_iw_)
- {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)}
- case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}}
- function read_int64(v,lexbuf)
- {return ocaml_lex_read_int64_rec(v,lexbuf,192)}
- function ocaml_lex_read_number_rec(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(6 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return Stdlib[24];
- case 1:return Stdlib[22];
- case 2:return Stdlib[23];
- case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf));
- case 4:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$1(v,lexbuf);
- try
- {var _is_=caml_float_of_string(s);return _is_}
- catch(_it_)
- {return caml_string_notequal(s,cst_Infinity$11)
- ?caml_string_notequal(s,cst_Infinity$12)
- ?caml_string_notequal(s,cst_NaN$5)
- ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf)
- :Stdlib[24]
- :Stdlib[22]
- :Stdlib[23]}
- case 5:return long_error(cst_Expected_number_but_found,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}}
- function read_number(v,lexbuf)
- {return ocaml_lex_read_number_rec(v,lexbuf,199)}
- function read_string(v,lexbuf)
- {var ocaml_lex_state=233;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf);
- case 1:return long_error(cst_Expected_but_found$2,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}}
- function map_ident(v,f,lexbuf)
- {var ocaml_lex_state=242;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:caml_call1(Bi_outbuf[19],v[1]);return map_string(v,f,lexbuf);
- case 1:
- var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_ir_,len);
- case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}}
- function ocaml_lex_read_sequence_rec
- (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space(v,lexbuf);
- read_array_end(lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- for(;;)
- {read_space(v,lexbuf);
- read_array_sep(v,lexbuf);
- read_space(v,lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- continue}}
- catch(_iq_)
- {_iq_ = caml_wrap_exception(_iq_);
- if(_iq_ === End_of_array)return acc[1];
- throw _iq_}
- case 1:return long_error(cst_Expected_but_found$3,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}}
- function read_sequence(read_cell,init_acc,v,lexbuf)
- {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)}
- function ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,0];
- try
- {read_space(v,lexbuf);
- read_array_end(lexbuf);
- var _in_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_];
- for(;;)
- {read_space(v,lexbuf);
- read_array_sep(v,lexbuf);
- read_space(v,lexbuf);
- var _io_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_];
- continue}}
- catch(_ip_)
- {_ip_ = caml_wrap_exception(_ip_);
- if(_ip_ === End_of_array)return acc[1];
- throw _ip_}
- case 1:return long_error(cst_Expected_but_found$4,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}}
- function read_list_rev(read_cell,v,lexbuf)
- {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)}
- function read_tuple(read_cell,init_acc,v,lexbuf)
- {var ocaml_lex_state=262;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return long_error(cst_Invalid_token$2,v,lexbuf);
- case 1:return long_error(cst_Expected_but_found$5,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}}
- function read_tuple_end(lexbuf)
- {var ocaml_lex_state=266;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_tuple;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_tuple_end2(v,std,lexbuf)
- {var ocaml_lex_state=268;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf);
- throw End_of_tuple;
- case 1:
- if(std)throw End_of_tuple;
- return long_error(cst_Expected_or_but_found$3,v,lexbuf);
- default:return 0}}}
- function read_tuple_sep(v,lexbuf)
- {var ocaml_lex_state=271;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_tuple;
- case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}}
- function read_tuple_sep2(v,std,lexbuf)
- {var ocaml_lex_state=276;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:
- if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf);
- throw End_of_tuple;
- case 2:
- if(std)throw End_of_tuple;
- return long_error(cst_Expected_or_but_found$6,v,lexbuf);
- case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}}
- function ocaml_lex_read_abstract_fields
- (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space(v,lexbuf);
- read_object_end(lexbuf);
- var field_name=caml_call2(read_key,v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
- for(;;)
- {read_space(v,lexbuf);
- read_object_sep(v,lexbuf);
- read_space(v,lexbuf);
- var field_name$0=caml_call2(read_key,v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
- continue}}
- catch(_im_)
- {_im_ = caml_wrap_exception(_im_);
- if(_im_ === End_of_object)return acc[1];
- throw _im_}
- case 1:return long_error(cst_Expected_but_found$6,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}}
- function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf)
- {return ocaml_lex_read_abstract_fields
- (read_key,read_field,init_acc,v,lexbuf,282)}
- function read_lcurl(v,lexbuf)
- {var ocaml_lex_state=286;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$7,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}}
- function start_any_tuple(v,lexbuf)
- {var ocaml_lex_state=301;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return 1;
- case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}}
- function read_lpar(v,lexbuf)
- {var ocaml_lex_state=306;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$9,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}}
- function read_rpar(v,lexbuf)
- {var ocaml_lex_state=310;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$10,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}}
- function read_lbr(v,lexbuf)
- {var ocaml_lex_state=314;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$11,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}}
- function read_rbr(v,lexbuf)
- {var ocaml_lex_state=318;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Expected_but_found$12,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}}
- function finish_skip_stringlit(v,lexbuf)
- {var ocaml_lex_state=378;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}}
- function skip_ident(v,lexbuf)
- {var ocaml_lex_state=394;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_skip_stringlit(v,lexbuf);
- case 1:return 0;
- case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}}
- function skip_json$2(counter,v,lexbuf)
- {var _il_=322;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)}
- return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])}
- function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(18 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return 0;
- case 1:return 0;
- case 2:return 0;
- case 3:return 0;
- case 4:return 0;
- case 5:return 0;
- case 6:return finish_skip_stringlit(v,lexbuf);
- case 7:return 0;
- case 8:return 0;
- case 9:
- try
- {read_space(v,lexbuf);
- read_object_end(lexbuf);
- skip_ident(v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- skip_json(v,lexbuf);
- for(;;)
- {read_space(v,lexbuf);
- read_object_sep(v,lexbuf);
- read_space(v,lexbuf);
- skip_ident(v,lexbuf);
- read_space(v,lexbuf);
- read_colon(v,lexbuf);
- read_space(v,lexbuf);
- skip_json(v,lexbuf);
- continue}}
- catch(_ik_)
- {_ik_ = caml_wrap_exception(_ik_);
- if(_ik_ === End_of_object)return 0;
- throw _ik_}
- case 10:
- try
- {read_space(v,lexbuf);
- read_array_end(lexbuf);
- skip_json(v,lexbuf);
- for(;;)
- {read_space(v,lexbuf);
- read_array_sep(v,lexbuf);
- read_space(v,lexbuf);
- skip_json(v,lexbuf);
- continue}}
- catch(_ij_)
- {_ij_ = caml_wrap_exception(_ij_);
- if(_ij_ === End_of_array)return 0;
- throw _ij_}
- case 11:return long_error(cst_Invalid_token$3,v,lexbuf);
- case 12:return long_error(cst_Invalid_token$4,v,lexbuf);
- case 13:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return skip_json$2(counter$0,v,lexbuf)}
- return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
- case 14:
- finish_comment(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return skip_json$2(counter$1,v,lexbuf)}
- return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
- case 15:
- newline(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return skip_json$2(counter$2,v,lexbuf)}
- return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
- case 16:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return skip_json$2(counter$3,v,lexbuf)}
- return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
- case 17:
- return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf);
- default:return long_error(cst_Invalid_token$5,v,lexbuf)}}}
- function skip_json(v,lexbuf)
- {return caml_trampoline(skip_json$2(0,v,lexbuf))}
- function finish_skip_variant(v,lexbuf)
- {var ocaml_lex_state=389;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf);
- case 1:return 0;
- case 2:return long_error(cst_Expected_or_but_found$10,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$36,v,lexbuf)}}}
- function finish_buffer_comment(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=507;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$24);
- case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf);
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a;
- default:add_lexeme(v[1],lexbuf);continue a}}}}
- function buffer_colon(v,lexbuf)
- {var ocaml_lex_state=499;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
- case 1:return long_error(cst_Expected_but_found$13,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}}
- function buffer_array_sep(v,lexbuf)
- {var ocaml_lex_state=487;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
- case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}}
- function buffer_array_end(v,lexbuf)
- {var ocaml_lex_state=485;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_object_sep(v,lexbuf)
- {var ocaml_lex_state=480;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
- case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}}
- function buffer_object_end(v,lexbuf)
- {var ocaml_lex_state=478;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_space(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=471;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a;
- case 1:
- caml_call2(Bi_outbuf[13],v[1],cst$23);
- finish_buffer_comment(v,lexbuf);
- continue a;
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a;
- case 3:add_lexeme(v[1],lexbuf);continue a;
- default:return 0}}}}
- function finish_buffer_stringlit(v,lexbuf)
- {var ocaml_lex_state=450;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf);
- case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}}
- function buffer_ident(v,lexbuf)
- {var ocaml_lex_state=466;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_buffer_stringlit(v,lexbuf);
- case 1:return add_lexeme(v[1],lexbuf);
- case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf);
- default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}}
- function buffer_json$2(counter,v,lexbuf)
- {var _ii_=399;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)}
- return caml_trampoline_return
- (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])}
- function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
- if(11 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return add_lexeme(v[1],lexbuf);
- case 1:return finish_buffer_stringlit(v,lexbuf);
- case 2:
- try
- {caml_call2(Bi_outbuf[15],v[1],123);
- buffer_space(v,lexbuf);
- buffer_object_end(v,lexbuf);
- buffer_ident(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_colon(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_json(v,lexbuf);
- for(;;)
- {buffer_space(v,lexbuf);
- buffer_object_sep(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_ident(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_colon(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_json(v,lexbuf);
- continue}}
- catch(_ih_)
- {_ih_ = caml_wrap_exception(_ih_);
- if(_ih_ === End_of_object)return 0;
- throw _ih_}
- case 3:
- try
- {caml_call2(Bi_outbuf[15],v[1],91);
- buffer_space(v,lexbuf);
- buffer_array_end(v,lexbuf);
- buffer_json(v,lexbuf);
- for(;;)
- {buffer_space(v,lexbuf);
- buffer_array_sep(v,lexbuf);
- buffer_space(v,lexbuf);
- buffer_json(v,lexbuf);
- continue}}
- catch(_ig_)
- {_ig_ = caml_wrap_exception(_ig_);
- if(_ig_ === End_of_array)return 0;
- throw _ig_}
- case 4:return long_error(cst_Invalid_token$6,v,lexbuf);
- case 5:return long_error(cst_Invalid_token$7,v,lexbuf);
- case 6:
- add_lexeme(v[1],lexbuf);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return buffer_json$2(counter$0,v,lexbuf)}
- return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
- case 7:
- caml_call2(Bi_outbuf[13],v[1],cst$22);
- finish_buffer_comment(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return buffer_json$2(counter$1,v,lexbuf)}
- return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
- case 8:
- caml_call2(Bi_outbuf[15],v[1],10);
- newline(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return buffer_json$2(counter$2,v,lexbuf)}
- return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
- case 9:
- add_lexeme(v[1],lexbuf);
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return buffer_json$2(counter$3,v,lexbuf)}
- return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
- case 10:
- return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf);
- default:return long_error(cst_Invalid_token$8,v,lexbuf)}}}
- function buffer_json(v,lexbuf)
- {return caml_trampoline(buffer_json$2(0,v,lexbuf))}
- function junk(lexbuf)
- {var ocaml_lex_state=513;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf);
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- read_junk[1] = junk;
- function read_int8(v,lexbuf)
- {var n=read_int(v,lexbuf);
- if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
- return lexer_error(cst_Int8_overflow,v,lexbuf)}
- function read_list(read_cell,v,lexbuf)
- {var _if_=read_list_rev(read_cell,v,lexbuf);
- return caml_call1(Stdlib_List[9],_if_)}
- function read_array(read_cell,v,lexbuf)
- {var l=read_list_rev(read_cell,v,lexbuf);
- if(l)
- {var
- tl=l[2],
- x=l[1],
- len=caml_call1(Stdlib_List[1],l),
- a=caml_make_vect(len,x),
- r=[0,tl],
- _ic_=len - 2 | 0;
- if(! (_ic_ < 0))
- {var i=_ic_;
- for(;;)
- {var _id_=caml_call1(Stdlib_List[5],r[1]);
- caml_check_bound(a,i)[1 + i] = _id_;
- r[1] = caml_call1(Stdlib_List[6],r[1]);
- var _ie_=i - 1 | 0;
- if(0 !== i){var i=_ie_;continue}
- break}}
- return a}
- return [0]}
- function read_fields(read_field,init_acc,v)
- {return function(_ib_)
- {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}}
- function from_lexbuf(v,opt,lexbuf)
- {if(opt)var sth=opt[1],stream=sth;else var stream=0;
- read_space(v,lexbuf);
- if(read_eof(lexbuf))throw End_of_input;
- var x=read_json(v,lexbuf);
- if(1 - stream)
- {read_space(v,lexbuf);
- if(1 - read_eof(lexbuf))
- long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)}
- return x}
- function from_string$0(buf,fname,lnum,s)
- {try
- {var
- lexbuf=caml_call2(from_string,0,s),
- v=init_lexer(buf,fname,lnum,0),
- _h$_=from_lexbuf(v,0,lexbuf);
- return _h$_}
- catch(_ia_)
- {_ia_ = caml_wrap_exception(_ia_);
- if(_ia_ === End_of_input)return json_error(cst_Blank_input_data);
- throw _ia_}}
- function from_channel$0(buf,fname,lnum,ic)
- {try
- {var
- lexbuf=caml_call2(from_channel,0,ic),
- v=init_lexer(buf,fname,lnum,0),
- _h9_=from_lexbuf(v,0,lexbuf);
- return _h9_}
- catch(_h__)
- {_h__ = caml_wrap_exception(_h__);
- if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0);
- throw _h__}}
- function from_file(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- try
- {var x=from_channel$0(buf,fname,lnum,ic);
- caml_call1(Stdlib[93],ic);
- return x}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
- var Finally=[248,cst_Yojson_Basic_Finally,caml_fresh_oo_id(0)];
- function stream_from_lexbuf(v,opt,lexbuf)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- function f(i)
- {try
- {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_}
- catch(e)
- {e = caml_wrap_exception(e);
- if(e === End_of_input){caml_call1(fin,0);return 0}
- try
- {caml_call1(fin,0)}
- catch(fin_e)
- {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]}
- throw e}}
- return caml_call1(Stdlib_Stream[3],f)}
- function stream_from_string(buf,fname,lnum,s)
- {var v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))}
- function stream_from_channel(buf,fin,fname,lnum,ic)
- {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf(v,fin,lexbuf)}
- function stream_from_file(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var
- fname$0=fname || [0,file],
- lexbuf=caml_call2(from_channel,0,ic),
- v=init_lexer(buf,fname$0,lnum,0);
- return stream_from_lexbuf(v,[0,fin],lexbuf)}
- function linestream_from_channel(buf,opt,fname,_h6_,ic)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1;
- var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
- function f(i)
- {try
- {var
- line=caml_call1(Stdlib[83],ic),
- lnum=lnum0 + i | 0,
- _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]];
- return _h7_}
- catch(e)
- {e = caml_wrap_exception(e);
- return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
- return caml_call1(Stdlib_Stream[3],f)}
- function linestream_from_file(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var fname$0=fname || [0,file];
- return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)}
- function prettify(std,s)
- {return pretty_to_string$0(std,from_string$0(0,0,0,s))}
- function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))}
- function validate_json(path,value){return 0}
- var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)];
- function typerr(msg,js)
- {if(typeof js === "number")
- var _h5_=cst_null$2;
- else
- var
- _h4_=js[1],
- _h5_=
- 708012133 <= _h4_
- ?726928360 === _h4_
- ?cst_tuple
- :848054398 <= _h4_
- ?963043957 <= _h4_?cst_object:cst_array
- :737456202 <= _h4_?cst_bool:cst_variant
- :3654863 <= _h4_
- ?365180284 <= _h4_?cst_float:cst_int
- :-752863768 <= _h4_?cst_intlit:cst_string;
- throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]}
- var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)];
- function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)}
- function assoc(name,obj)
- {try
- {var _h0_=caml_call2(Stdlib_List[46],name,obj);return _h0_}
- catch(_h1_)
- {_h1_ = caml_wrap_exception(_h1_);
- if(_h1_ === Stdlib[8])return 870828711;
- throw _h1_}}
- function member(name,js)
- {if(typeof js !== "number" && 963043957 === js[1])
- {var obj=js[2];return assoc(name,obj)}
- var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type);
- return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)}
- function index(i,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var
- l=js[2],
- len=caml_call1(Stdlib_List[1],l),
- wrapped_index=0 <= i?i:len + i | 0;
- if(0 <= wrapped_index && ! (len <= wrapped_index))
- return caml_call2(Stdlib_List[7],l,wrapped_index);
- var
- _hX_=caml_call1(Stdlib[33],i),
- _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds);
- throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]}
- var
- _hV_=caml_call1(Stdlib[33],i),
- _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type);
- return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)}
- function map(f,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]}
- return typerr(cst_Can_t_map_function_over_no,js)}
- function to_assoc(js)
- {if(typeof js !== "number" && 963043957 === js[1])
- {var obj=js[2];return obj}
- return typerr(cst_Expected_object_got,js)}
- function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]}
- function to_bool(js)
- {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b}
- return typerr(cst_Expected_bool_got,js)}
- function to_bool_option(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(737456202 === js[1]){var b=js[2];return [0,b]}
- return typerr(cst_Expected_bool_or_null_got,js)}
- function to_number(js)
- {if(typeof js !== "number")
- {var _hU_=js[1];
- if(3654863 === _hU_){var i=js[2];return i}
- if(365180284 === _hU_){var f=js[2];return f}}
- return typerr(cst_Expected_number_got,js)}
- function to_number_option(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- {var _hT_=js[1];
- if(3654863 === _hT_){var i=js[2];return [0,i]}
- if(365180284 === _hT_){var f=js[2];return [0,f]}}
- return typerr(cst_Expected_number_or_null_go,js)}
- function to_float(js)
- {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f}
- return typerr(cst_Expected_float_got,js)}
- function to_float_option(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(365180284 === js[1]){var f=js[2];return [0,f]}
- return typerr(cst_Expected_float_or_null_got,js)}
- function to_int(js)
- {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i}
- return typerr(cst_Expected_int_got,js)}
- function to_int_option(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(3654863 === js[1]){var i=js[2];return [0,i]}
- return typerr(cst_Expected_int_or_null_got,js)}
- function to_list(js)
- {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l}
- return typerr(cst_Expected_array_got,js)}
- function to_string$2(js)
- {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s}
- return typerr(cst_Expected_string_got,js)}
- function to_string_option(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(-976970511 === js[1]){var s=js[2];return [0,s]}
- return typerr(cst_Expected_string_or_null_go,js)}
- function convert_each(f,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var l=js[2];return caml_call2(Stdlib_List[19],f,l)}
- return typerr(cst_Can_t_convert_each_element,js)}
- function filter_map(f,l$0)
- {var acc=0,l=l$0;
- for(;;)
- {if(l)
- {var tl=l[2],x=l[1],match=caml_call1(f,x);
- if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue}
- var l=tl;
- continue}
- return caml_call1(Stdlib_List[9],acc)}}
- function flatten(l$0)
- {var acc=0,l=l$0;
- for(;;)
- {if(l)
- {var tl=l[2],x=l[1];
- if(typeof x !== "number" && 848054398 === x[1])
- {var
- l2=x[2],
- acc$0=caml_call2(Stdlib_List[12],l2,acc),
- acc=acc$0,
- l=tl;
- continue}
- var l=tl;
- continue}
- return caml_call1(Stdlib_List[9],acc)}}
- function filter_index(i,l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 848054398 === param[1])
- {var l=param[2];
- try
- {var _hR_=[0,caml_call2(Stdlib_List[7],l,i)];return _hR_}
- catch(_hS_){return 0}}
- return 0},
- l)}
- function filter_list(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 848054398 === param[1])
- {var l=param[2];return [0,l]}
- return 0},
- l)}
- function filter_member(k,l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 963043957 === param[1])
- {var l=param[2];
- try
- {var _hP_=[0,caml_call2(Stdlib_List[46],k,l)];return _hP_}
- catch(_hQ_){return 0}}
- return 0},
- l)}
- function filter_assoc(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 963043957 === param[1])
- {var l=param[2];return [0,l]}
- return 0},
- l)}
- function filter_bool(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 737456202 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_int(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 3654863 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_float(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && 365180284 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_number(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number")
- {var _hO_=param[1];
- if(3654863 === _hO_){var x=param[2];return [0,x]}
- if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}}
- return 0},
- l)}
- function filter_string(l)
- {return filter_map
- (function(param)
- {if(typeof param !== "number" && -976970511 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function keys(o)
- {function _hM_(param){var key=param[1];return key}
- var _hN_=caml_call1(Stdlib_List[19],_hM_);
- return symbol(to_assoc(o),_hN_)}
- function values(o)
- {function _hK_(param){var value=param[2];return value}
- var _hL_=caml_call1(Stdlib_List[19],_hK_);
- return symbol(to_assoc(o),_hL_)}
- function combine(first,second)
- {if
- (typeof first
- !==
- "number"
- &&
- 963043957
- ===
- first[1]
- &&
- typeof second
- !==
- "number"
- &&
- 963043957
- ===
- second[1])
- {var b=second[2],a=first[2];
- return [0,963043957,caml_call2(Stdlib[37],a,b)]}
- throw [0,Stdlib[6],cst_Expected_two_objects_check]}
- function to_basic(x)
- {if(typeof x !== "number")
- {var _hD_=x[1];
- if(726928360 <= _hD_)
- {if(737456202 !== _hD_)
- {if(963043957 <= _hD_)
- {var
- l=x[2],
- _hE_=
- function(param)
- {var v=param[2],k=param[1];return [0,k,to_basic(v)]},
- _hF_=caml_call2(Stdlib_List[21],_hE_,l);
- return [0,963043957,caml_call1(Stdlib_List[9],_hF_)]}
- var l$0=x[2],_hG_=caml_call2(Stdlib_List[21],to_basic,l$0);
- return [0,848054398,caml_call1(Stdlib_List[9],_hG_)]}}
- else
- {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]}
- if(708012133 <= _hD_)
- {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1];
- if(_hI_)
- {var v=_hI_[1];
- return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]}
- return [0,-976970511,_hJ_]}}}
- return x}
- function hex$2(n)
- {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0;
- return caml_call1(Stdlib_Char[1],_hC_)}
- function write_special$1(src,start,stop,ob,str)
- {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
- caml_call2(Bi_outbuf[13],ob,str);
- start[1] = stop + 1 | 0;
- return 0}
- function finish_string$2(src,start,ob)
- {try
- {var
- _hB_=
- caml_call4
- (Bi_outbuf[14],
- ob,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- return _hB_}
- catch(exc)
- {exc = caml_wrap_exception(exc);
- caml_call4
- (Stdlib_Printf[3],
- _bC_,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- throw exc}}
- function write_string$1(ob,s)
- {caml_call2(Bi_outbuf[15],ob,34);
- var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0;
- if(! (_hz_ < 0))
- {var i$0=_hy_;
- for(;;)
- {var c=caml_string_get(s,i$0);
- if(92 === c)
- write_special$1(s,start,i$0,ob,cst$25);
- else
- {var switch$0=0;
- if(35 <= c)
- if(127 === c)switch$0 = 1;else switch$0 = 2;
- else
- if(8 <= c)
- {var switch$1=0;
- switch(c - 8 | 0)
- {case 0:write_special$1(s,start,i$0,ob,cst_b$1);break;
- case 1:write_special$1(s,start,i$0,ob,cst_t$1);break;
- case 2:write_special$1(s,start,i$0,ob,cst_n$1);break;
- case 4:write_special$1(s,start,i$0,ob,cst_f$1);break;
- case 5:write_special$1(s,start,i$0,ob,cst_r$1);break;
- case 26:write_special$1(s,start,i$0,ob,cst$26);break;
- case 24:
- case 25:switch$0 = 2;switch$1 = 1;break;
- default:switch$0 = 1;switch$1 = 1}}
- else
- switch$0 = 1;
- switch(switch$0)
- {case 2:break;
- case 1:
- caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
- var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
- caml_call5(Stdlib_Bytes[12],cst_u00$1,0,dst,i,4);
- caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0));
- caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15));
- start[1] = i$0 + 1 | 0;
- break
- }}
- var _hA_=i$0 + 1 | 0;
- if(_hz_ !== i$0){var i$0=_hA_;continue}
- break}}
- finish_string$2(s,start,ob);
- return caml_call2(Bi_outbuf[15],ob,34)}
- function write_null$1(ob,param)
- {return caml_call2(Bi_outbuf[13],ob,cst_null$3)}
- function write_bool$1(ob,x)
- {var _hx_=x?cst_true$2:cst_false$2;
- return caml_call2(Bi_outbuf[13],ob,_hx_)}
- var
- _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
- _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
- max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_);
- function write_digits$1(s,pos,x)
- {if(0 === x)return pos;
- var
- d=x % 10 | 0,
- pos$0=write_digits$1(s,pos,x / 10 | 0),
- n=caml_call1(Stdlib[18],d);
- caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0));
- return pos$0 + 1 | 0}
- function write_int$1(ob,x)
- {caml_call2(Bi_outbuf[9],ob,max_digits$1);
- if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0}
- if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
- var s=ob[1],pos=ob[3];
- caml_bytes_set(s,pos,45);
- ob[3] = write_digits$1(s,pos + 1 | 0,x);
- return 0}
- function float_needs_period$1(s)
- {try
- {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0;
- if(! (_ht_ < 0))
- {var i=_hs_;
- for(;;)
- {var match=caml_string_get(s,i),switch$0=0;
- if(48 <= match)
- {if(! (58 <= match))switch$0 = 1}
- else
- if(45 === match)switch$0 = 1;
- if(! switch$0)throw Stdlib[3];
- var _hv_=i + 1 | 0;
- if(_ht_ !== i){var i=_hv_;continue}
- break}}
- var _hu_=1;
- return _hu_}
- catch(_hw_)
- {_hw_ = caml_wrap_exception(_hw_);
- if(_hw_ === Stdlib[3])return 0;
- throw _hw_}}
- function write_float_fast$1(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14;
- return caml_call2(Bi_outbuf[13],ob,_hq_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6);
- var s=caml_call2(Stdlib_Printf[4],_bF_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _hr_=float_needs_period$1(s);
- return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_}
- function write_float$1(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _ho_=0. < x?cst_Infinity$15:cst_Infinity$16;
- return caml_call2(Bi_outbuf[13],ob,_ho_)}
- if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7);
- var
- s1=caml_call2(Stdlib_Printf[4],_bG_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bH_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _hp_=float_needs_period$1(s);
- return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_}
- function write_normal_float_prec$1(significant_figures,ob,x)
- {var switcher=significant_figures - 1 | 0;
- if(15 < switcher >>> 0)
- var s=caml_call2(Stdlib_Printf[4],_bI_,x);
- else
- switch(switcher)
- {case 0:var s=caml_call2(Stdlib_Printf[4],_bJ_,x);break;
- case 1:var s=caml_call2(Stdlib_Printf[4],_bK_,x);break;
- case 2:var s=caml_call2(Stdlib_Printf[4],_bL_,x);break;
- case 3:var s=caml_call2(Stdlib_Printf[4],_bM_,x);break;
- case 4:var s=caml_call2(Stdlib_Printf[4],_bN_,x);break;
- case 5:var s=caml_call2(Stdlib_Printf[4],_bO_,x);break;
- case 6:var s=caml_call2(Stdlib_Printf[4],_bP_,x);break;
- case 7:var s=caml_call2(Stdlib_Printf[4],_bQ_,x);break;
- case 8:var s=caml_call2(Stdlib_Printf[4],_bR_,x);break;
- case 9:var s=caml_call2(Stdlib_Printf[4],_bS_,x);break;
- case 10:var s=caml_call2(Stdlib_Printf[4],_bT_,x);break;
- case 11:var s=caml_call2(Stdlib_Printf[4],_bU_,x);break;
- case 12:var s=caml_call2(Stdlib_Printf[4],_bV_,x);break;
- case 13:var s=caml_call2(Stdlib_Printf[4],_bW_,x);break;
- case 14:var s=caml_call2(Stdlib_Printf[4],_bX_,x);break;
- default:var s=caml_call2(Stdlib_Printf[4],_bY_,x)}
- caml_call2(Bi_outbuf[13],ob,s);
- var _hn_=float_needs_period$1(s);
- return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_}
- function write_float_prec$1(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18;
- return caml_call2(Bi_outbuf[13],ob,_hm_)}
- return 4 <= match
- ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8)
- :write_normal_float_prec$1(significant_figures,ob,x)}
- function write_std_float_fast$1(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _hk_=
- 0. < x
- ?cst_Infinity_value_not_allowed$11
- :cst_Infinity_value_not_allowed$12;
- return json_error(_hk_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5);
- var s=caml_call2(Stdlib_Printf[4],_bZ_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _hl_=float_needs_period$1(s);
- return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_}
- function write_std_float$1(ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _hi_=
- 0. < x
- ?cst_Infinity_value_not_allowed$13
- :cst_Infinity_value_not_allowed$14;
- return json_error(_hi_)}
- if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6);
- var
- s1=caml_call2(Stdlib_Printf[4],_b0_,x),
- s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_b1_,x);
- caml_call2(Bi_outbuf[13],ob,s);
- var _hj_=float_needs_period$1(s);
- return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_}
- function write_std_float_prec$1(significant_figures,ob,x)
- {var match=caml_classify_float(x);
- if(3 === match)
- {var
- _hh_=
- 0. < x
- ?cst_Infinity_value_not_allowed$15
- :cst_Infinity_value_not_allowed$16;
- return json_error(_hh_)}
- return 4 <= match
- ?json_error(cst_NaN_value_not_allowed_in_s$7)
- :write_normal_float_prec$1(significant_figures,ob,x)}
- var write_intlit$0=Bi_outbuf[13];
- function iter2$1(f_elt,f_sep,x,param$0)
- {if(param$0)
- {var l$0=param$0[2],y$0=param$0[1];
- caml_call2(f_elt,x,y$0);
- var param=l$0;
- for(;;)
- {if(param)
- {var l=param[2],y=param[1];
- caml_call1(f_sep,x);
- caml_call2(f_elt,x,y);
- var param=l;
- continue}
- return 0}}
- return 0}
- function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)}
- function write_tuple$0(ob,l)
- {caml_call2(Bi_outbuf[15],ob,40);
- iter2$1(write_t$1,f_sep$1,ob,l);
- return caml_call2(Bi_outbuf[15],ob,41)}
- function write_list$1(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2$1(write_t$1,f_sep$1,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_t$1(ob,x)
- {if(typeof x === "number")return write_null$1(ob,0);
- var _hg_=x[1];
- if(708012133 <= _hg_)
- {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)}
- if(848054398 <= _hg_)
- {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)}
- var l$1=x[2];
- return write_list$1(ob,l$1)}
- if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)}
- var match=x[2],o=match[2],s=match[1];
- return write_variant$0(ob,s,o)}
- if(3654863 <= _hg_)
- {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)}
- var i=x[2];
- return write_int$1(ob,i)}
- if(-752863768 <= _hg_)
- {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)}
- var s$1=x[2];
- return write_string$1(ob,s$1)}
- function write_assoc$1(ob,l)
- {function f_elt(ob,param)
- {var x=param[2],s=param[1];
- write_string$1(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_t$1(ob,x)}
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$1(f_elt,f_sep$1,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- function write_variant$0(ob,s,o)
- {caml_call2(Bi_outbuf[15],ob,60);
- write_string$1(ob,s);
- if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)}
- return caml_call2(Bi_outbuf[15],ob,62)}
- function write_std_tuple$0(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2$1(write_std_json$1,f_sep$1,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_std_json$1(ob,x)
- {if(typeof x === "number")return write_null$1(ob,0);
- var _hf_=x[1];
- if(708012133 <= _hf_)
- {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)}
- if(848054398 <= _hf_)
- {if(963043957 <= _hf_)
- {var
- l$0=x[2],
- f_elt=
- function(ob,param)
- {var x=param[2],s=param[1];
- write_string$1(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_std_json$1(ob,x)};
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$1(f_elt,f_sep$1,ob,l$0);
- return caml_call2(Bi_outbuf[15],ob,125)}
- var l$1=x[2];
- caml_call2(Bi_outbuf[15],ob,91);
- iter2$1(write_std_json$1,f_sep$1,ob,l$1);
- return caml_call2(Bi_outbuf[15],ob,93)}
- if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)}
- var match=x[2],o=match[2],s=match[1];
- return write_std_variant$0(ob,s,o)}
- if(3654863 <= _hf_)
- {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)}
- var i=x[2];
- return write_int$1(ob,i)}
- if(-752863768 <= _hf_)
- {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)}
- var s$1=x[2];
- return write_string$1(ob,s$1)}
- function write_std_variant$0(ob,s,o)
- {if(o)
- {var x=o[1];
- caml_call2(Bi_outbuf[15],ob,91);
- write_string$1(ob,s);
- caml_call2(Bi_outbuf[15],ob,44);
- write_std_json$1(ob,x);
- return caml_call2(Bi_outbuf[15],ob,93)}
- return write_string$1(ob,s)}
- function to_outbuf$1(opt,ob,x)
- {if(opt)var sth=opt[1],std=sth;else var std=0;
- return std
- ?is_object_or_array(x)
- ?write_std_json$1(ob,x)
- :json_error(cst_Root_is_not_an_object_or_a$2)
- :write_t$1(ob,x)}
- function to_string$3(buf,opt,std,x)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- to_outbuf$1(std,ob$0,x);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function to_channel$2(buf,len,std,oc,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- to_outbuf$1(std,ob$0,x);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function to_output$1(buf,len,std,out,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
- to_outbuf$1(std,ob$0,x);
- return caml_call1(Bi_outbuf[8],ob$0)}
- function to_file$1(len,std,file,x)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {to_channel$2(0,len,std,oc,x);
- var _he_=caml_call1(Stdlib[76],oc);
- return _he_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function stream_to_outbuf$1(std,ob,st)
- {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)}
- return caml_call2(Stdlib_Stream[8],_hc_,st)}
- function stream_to_string$1(buf,opt,std,st)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- stream_to_outbuf$1(std,ob$0,st);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function stream_to_channel$1(buf,len,std,oc,st)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- stream_to_outbuf$1(std,ob$0,st);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function stream_to_file$1(len,std,file,st)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {stream_to_channel$1(0,len,std,oc,st);
- var _hb_=caml_call1(Stdlib[76],oc);
- return _hb_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function sort$1(x)
- {if(typeof x !== "number")
- {var _g4_=x[1];
- if(726928361 <= _g4_)
- {if(848054398 === _g4_)
- {var l=x[2],_g5_=caml_call2(Stdlib_List[21],sort$1,l);
- return [0,848054398,caml_call1(Stdlib_List[9],_g5_)]}
- if(963043957 === _g4_)
- {var
- l$0=x[2],
- _g6_=
- function(param)
- {var v=param[2],k=param[1];return [0,k,sort$1(v)]},
- _g7_=caml_call2(Stdlib_List[21],_g6_,l$0),
- l$1=caml_call1(Stdlib_List[9],_g7_),
- _g8_=
- function(param,_ha_)
- {var b=_ha_[1],a=param[1];
- return caml_call2(Stdlib_String[9],a,b)};
- return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}}
- else
- if(708012133 === _g4_)
- {var _g9_=x[2],_g__=_g9_[2];
- if(_g__)
- {var v=_g__[1],k=_g9_[1],v$0=sort$1(v);
- return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
- else
- if(726928360 <= _g4_)
- {var l$2=x[2],_g$_=caml_call2(Stdlib_List[21],sort$1,l$2);
- return [0,726928360,caml_call1(Stdlib_List[9],_g$_)]}}
- return x}
- function pp$1(fmt,param)
- {if(typeof param === "number")
- return caml_call2(Stdlib_Format[13],fmt,cst_Null$1);
- var _gX_=param[1];
- if(708012133 <= _gX_)
- {if(726928360 === _gX_)
- {var tup=param[2];
- caml_call2(Stdlib_Format[129],fmt,_b2_);
- caml_call2(Stdlib_Format[129],fmt,_b3_);
- var
- _gY_=0,
- _gZ_=
- function(sep,e)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_);
- pp$1(fmt,e);
- return 1};
- caml_call3(Stdlib_List[25],_gZ_,_gY_,tup);
- caml_call2(Stdlib_Format[129],fmt,_b5_);
- return caml_call2(Stdlib_Format[129],fmt,_b6_)}
- if(848054398 <= _gX_)
- {if(963043957 <= _gX_)
- {var xs=param[2];
- caml_call2(Stdlib_Format[129],fmt,_b7_);
- caml_call2(Stdlib_Format[129],fmt,_b8_);
- var
- _g0_=0,
- _g1_=
- function(sep,param)
- {var value=param[2],key=param[1];
- if(sep)caml_call2(Stdlib_Format[129],fmt,_b9_);
- caml_call2(Stdlib_Format[129],fmt,_b__);
- caml_call3(Stdlib_Format[129],fmt,_b$_,key);
- caml_call2(Stdlib_Format[129],fmt,_ca_);
- pp$1(fmt,value);
- caml_call2(Stdlib_Format[129],fmt,_cb_);
- return 1};
- caml_call3(Stdlib_List[25],_g1_,_g0_,xs);
- caml_call2(Stdlib_Format[129],fmt,_cc_);
- return caml_call2(Stdlib_Format[129],fmt,_cd_)}
- var xs$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_ce_);
- caml_call2(Stdlib_Format[129],fmt,_cf_);
- var
- _g2_=0,
- _g3_=
- function(sep,x)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_);
- pp$1(fmt,x);
- return 1};
- caml_call3(Stdlib_List[25],_g3_,_g2_,xs$0);
- caml_call2(Stdlib_Format[129],fmt,_ch_);
- return caml_call2(Stdlib_Format[129],fmt,_ci_)}
- if(737456202 <= _gX_)
- {var x=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cj_);
- caml_call3(Stdlib_Format[129],fmt,_ck_,x);
- return caml_call2(Stdlib_Format[129],fmt,_cl_)}
- var match=param[2],value=match[2],name=match[1];
- caml_call2(Stdlib_Format[129],fmt,_cm_);
- caml_call2(Stdlib_Format[129],fmt,_cn_);
- caml_call3(Stdlib_Format[129],fmt,_co_,name);
- caml_call2(Stdlib_Format[129],fmt,_cp_);
- if(value)
- {var x$0=value[1];
- caml_call2(Stdlib_Format[13],fmt,cst_Some$0);
- pp$1(fmt,x$0);
- caml_call2(Stdlib_Format[13],fmt,cst$27)}
- else
- caml_call2(Stdlib_Format[13],fmt,cst_None$0);
- caml_call2(Stdlib_Format[129],fmt,_cq_);
- return caml_call2(Stdlib_Format[129],fmt,_cr_)}
- if(3654863 <= _gX_)
- {if(365180284 <= _gX_)
- {var x$1=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cs_);
- caml_call3(Stdlib_Format[129],fmt,_ct_,x$1);
- return caml_call2(Stdlib_Format[129],fmt,_cu_)}
- var x$2=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cv_);
- caml_call3(Stdlib_Format[129],fmt,_cw_,x$2);
- return caml_call2(Stdlib_Format[129],fmt,_cx_)}
- if(-752863768 <= _gX_)
- {var x$3=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cy_);
- caml_call3(Stdlib_Format[129],fmt,_cz_,x$3);
- return caml_call2(Stdlib_Format[129],fmt,_cA_)}
- var x$4=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cB_);
- caml_call3(Stdlib_Format[129],fmt,_cC_,x$4);
- return caml_call2(Stdlib_Format[129],fmt,_cD_)}
- function show$1(x){return caml_call3(Stdlib_Format[133],_cE_,pp$1,x)}
- function equal$1(a,b)
- {var a$0=a,b$0=b;
- for(;;)
- {if(typeof a$0 === "number")
- {if(870828711 === a$0 && 870828711 === b$0)return 1}
- else
- {var _gQ_=a$0[1];
- if(708012133 <= _gQ_)
- {var switch$0=0;
- if(737456203 <= _gQ_)
- {if(848054398 === _gQ_)
- {if(typeof b$0 !== "number" && 848054398 === b$0[1])
- {var ys=b$0[2],xs=a$0[2];switch$0 = 1}}
- else
- if
- (963043957
- ===
- _gQ_
- &&
- typeof b$0
- !==
- "number"
- &&
- 963043957
- ===
- b$0[1])
- {var
- ys$0=b$0[2],
- xs$0=a$0[2],
- compare_keys=
- function(param,_gW_)
- {var key=_gW_[1],key$0=param[1];
- return caml_call2(Stdlib_String[9],key$0,key)},
- xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0),
- ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0);
- try
- {var
- _gR_=
- function(param,_gV_)
- {var
- value=_gV_[2],
- key=_gV_[1],
- value$0=param[2],
- key$0=param[1],
- match=caml_string_equal(key$0,key);
- return match?equal$1(value$0,value):0},
- result$0=caml_call3(Stdlib_List[34],_gR_,xs$1,ys$1);
- return result$0}
- catch(_gU_)
- {_gU_ = caml_wrap_exception(_gU_);
- if(_gU_[1] === Stdlib[6])return 0;
- throw _gU_}}}
- else
- if(726928360 === _gQ_)
- {if(typeof b$0 !== "number" && 726928360 === b$0[1])
- {var ys=b$0[2],xs=a$0[2];switch$0 = 1}}
- else
- if(708012134 <= _gQ_)
- {if
- (737456202
- <=
- _gQ_
- &&
- typeof b$0
- !==
- "number"
- &&
- 737456202
- ===
- b$0[1])
- {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
- else
- if(typeof b$0 !== "number" && 708012133 === b$0[1])
- {var
- _gS_=b$0[2],
- value=_gS_[2],
- name=_gS_[1],
- match=a$0[2],
- value$0=match[2],
- name$0=match[1],
- match$0=caml_equal(name$0,name);
- if(match$0)
- {if(value$0)
- {if(value)
- {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}}
- else
- if(! value)return 1;
- return 0}
- return 0}
- if(switch$0)
- try
- {var result=caml_call3(Stdlib_List[34],equal$1,xs,ys);
- return result}
- catch(_gT_)
- {_gT_ = caml_wrap_exception(_gT_);
- if(_gT_[1] === Stdlib[6])return 0;
- throw _gT_}}
- else
- if(-752863767 <= _gQ_)
- {if(3654863 === _gQ_)
- {if(typeof b$0 !== "number" && 3654863 === b$0[1])
- {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}}
- else
- if
- (365180284
- ===
- _gQ_
- &&
- typeof b$0
- !==
- "number"
- &&
- 365180284
- ===
- b$0[1])
- {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
- else
- if(-976970511 === _gQ_)
- {if(typeof b$0 !== "number" && -976970511 === b$0[1])
- {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}}
- else
- if
- (-752863768
- <=
- _gQ_
- &&
- typeof b$0
- !==
- "number"
- &&
- -752863768
- ===
- b$0[1])
- {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}}
- return 0}}
- function pretty_format$1(std,x){return format(std,x)}
- function pretty_print$1(std,out,x)
- {var _gP_=pretty_format$1(std,x);
- return caml_call2(Easy_format[4][2],out,_gP_)}
- function pretty_to_string$1(std,x){return to_string$0(std,x)}
- function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)}
- var
- from_channel$1=Stdlib_Lexing[2],
- from_string$1=Stdlib_Lexing[3],
- lexeme$0=Stdlib_Lexing[8],
- sub_lexeme$0=Stdlib_Lexing[16],
- sub_lexeme_char$0=Stdlib_Lexing[18];
- function hex$3(c)
- {if(65 <= c)
- {if(97 <= c)
- {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
- else
- if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
- else
- if(! (9 < c - 48 >>> 0))return c - 48 | 0;
- throw [0,Assert_failure,_cF_]}
- function custom_error$0(descr,v,lexbuf)
- {var
- offs=lexbuf[4] - 1 | 0,
- bol=v[3],
- pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
- pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
- _gO_=v[4];
- if(_gO_)
- var s=_gO_[1],file_line=caml_call2(Stdlib_Printf[4],_cG_,s);
- else
- var file_line=cst_Line$0;
- var
- bytes=
- pos1 === pos2
- ?caml_call2(Stdlib_Printf[4],_cH_,pos1 + 1 | 0)
- :caml_call3(Stdlib_Printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0),
- msg=caml_call5(Stdlib_Printf[4],_cI_,file_line,v[2],bytes,descr);
- return json_error(msg)}
- function lexer_error$0(descr,v,lexbuf)
- {var _gN_=caml_call1(lexeme$0,lexbuf);
- return custom_error$0
- (caml_call3(Stdlib_Printf[4],_cK_,descr,_gN_),v,lexbuf)}
- var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}];
- function long_error$0(descr,v,lexbuf)
- {var
- junk=caml_call1(lexeme$0,lexbuf),
- extra_junk=caml_call1(read_junk$0[1],lexbuf);
- return custom_error$0
- (caml_call4(Stdlib_Printf[4],_cM_,descr,junk,extra_junk),
- v,
- lexbuf)}
- var
- _cN_=0 === (Stdlib[20] % 10 | 0)?0:1,
- min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0,
- _cO_=0 === (Stdlib[19] % 10 | 0)?0:1,
- max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0,
- Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)];
- function extract_positive_int$0(lexbuf)
- {var
- start=lexbuf[5],
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _gK_=stop - 1 | 0;
- if(! (_gK_ < start))
- {var i=start;
- for(;;)
- {if(max10$0 <= n[1])throw Int_overflow$0;
- var _gL_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) + _gL_ | 0;
- var _gM_=i + 1 | 0;
- if(_gK_ !== i){var i=_gM_;continue}
- break}}
- if(0 <= n[1])return n[1];
- throw Int_overflow$0}
- function extract_negative_int$0(lexbuf)
- {var
- start=lexbuf[5] + 1 | 0,
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _gH_=stop - 1 | 0;
- if(! (_gH_ < start))
- {var i=start;
- for(;;)
- {if(n[1] <= min10$0)throw Int_overflow$0;
- var _gI_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) - _gI_ | 0;
- var _gJ_=i + 1 | 0;
- if(_gH_ !== i){var i=_gJ_;continue}
- break}}
- if(0 < n[1])throw Int_overflow$0;
- return n[1]}
- function newline$0(v,lexbuf)
- {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
- function add_lexeme$0(buf,lexbuf)
- {var len=lexbuf[6] - lexbuf[5] | 0;
- return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
- function read_colon$0(v,lexbuf)
- {var ocaml_lex_state=297;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}}
- function read_object_sep$0(v,lexbuf)
- {var ocaml_lex_state=292;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_object;
- case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}}
- function read_object_end$0(lexbuf)
- {var ocaml_lex_state=290;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_object;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_tuple_sep$0(v,lexbuf)
- {var ocaml_lex_state=271;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_tuple;
- case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}}
- function read_tuple_end$0(lexbuf)
- {var ocaml_lex_state=266;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_tuple;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_array_sep$0(v,lexbuf)
- {var ocaml_lex_state=257;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_array;
- case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}}
- function read_array_end$0(lexbuf)
- {var ocaml_lex_state=255;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_array;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function finish_escaped_char$0(v,lexbuf)
- {var ocaml_lex_state=68;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(8 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]);
- return caml_call2(Bi_outbuf[15],v[1],c);
- case 1:return caml_call2(Bi_outbuf[15],v[1],8);
- case 2:return caml_call2(Bi_outbuf[15],v[1],12);
- case 3:return caml_call2(Bi_outbuf[15],v[1],10);
- case 4:return caml_call2(Bi_outbuf[15],v[1],13);
- case 5:return caml_call2(Bi_outbuf[15],v[1],9);
- case 6:
- var
- a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0),
- b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0),
- c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0),
- d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0),
- _gB_=hex$3(d),
- _gC_=hex$3(c$0) << 4,
- _gD_=hex$3(b) << 8,
- x=hex$3(a) << 12 | _gD_ | _gC_ | _gB_;
- if(55296 <= x && ! (56319 < x))
- {var ocaml_lex_state$1=82;
- for(;;)
- {var
- ocaml_lex_state$2=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf);
- if(2 < ocaml_lex_state$2 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$1=ocaml_lex_state$2;
- continue}
- switch(ocaml_lex_state$2)
- {case 0:
- var
- a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0),
- b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0),
- c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0),
- d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0),
- _gE_=hex$3(d$0),
- _gF_=hex$3(c$1) << 4,
- _gG_=hex$3(b$0) << 8,
- y=hex$3(a$0) << 12 | _gG_ | _gF_ | _gE_;
- if(56320 <= y && ! (57343 < y))
- return utf8_of_surrogate_pair(v[1],x,y);
- return long_error$0
- (cst_Invalid_low_surrogate_for_$0,v,lexbuf);
- case 1:
- return long_error$0
- (cst_Missing_escape_sequence_re$0,v,lexbuf);
- default:
- return custom_error$0
- (cst_Unexpected_end_of_input$48,v,lexbuf)}}}
- return utf8_of_code(v[1],x);
- case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}}
- function finish_string$3(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=58;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call1(Bi_outbuf[4],v[1]);
- case 1:finish_escaped_char$0(v,lexbuf);continue a;
- case 2:add_lexeme$0(v[1],lexbuf);continue a;
- default:
- return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}}
- function read_ident$0(v,lexbuf)
- {var ocaml_lex_state=237;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf);
- case 1:
- var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s;
- case 2:
- return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}}
- function finish_comment$0(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=125;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf);
- case 2:newline$0(v,lexbuf);continue a;
- default:continue a}}}}
- function read_space$0(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=133;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:newline$0(v,lexbuf);continue a;
- case 1:finish_comment$0(v,lexbuf);continue a;
- case 2:newline$0(v,lexbuf);continue a;
- case 3:continue a;
- default:return 0}}}}
- function read_gt$0(v,lexbuf)
- {var ocaml_lex_state=111;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}}
- function read_json$3(counter,v,lexbuf)
- {var _gA_=0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)}
- return caml_trampoline_return
- (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])}
- function ocaml_lex_read_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(19 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return _cP_;
- case 1:return _cQ_;
- case 2:return 870828711;
- case 3:return [0,365180284,Stdlib[24]];
- case 4:return [0,365180284,Stdlib[22]];
- case 5:return [0,365180284,Stdlib[23]];
- case 6:
- caml_call1(Bi_outbuf[19],v[1]);
- return [0,-976970511,finish_string$3(v,lexbuf)];
- case 7:
- try
- {var _gn_=[0,3654863,extract_positive_int$0(lexbuf)];return _gn_}
- catch(_gz_)
- {_gz_ = caml_wrap_exception(_gz_);
- if(_gz_ === Int_overflow$0)
- return [0,-752863768,caml_call1(lexeme$0,lexbuf)];
- throw _gz_}
- case 8:
- try
- {var _go_=[0,3654863,extract_negative_int$0(lexbuf)];return _go_}
- catch(_gy_)
- {_gy_ = caml_wrap_exception(_gy_);
- if(_gy_ === Int_overflow$0)
- return [0,-752863768,caml_call1(lexeme$0,lexbuf)];
- throw _gy_}
- case 9:
- return [0,
- 365180284,
- caml_float_of_string(caml_call1(lexeme$0,lexbuf))];
- case 10:
- var acc=[0,0];
- try
- {read_space$0(v,lexbuf);
- read_object_end$0(lexbuf);
- var field_name=read_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var _gp_=acc[1];
- acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_gp_];
- for(;;)
- {read_space$0(v,lexbuf);
- read_object_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var field_name$0=read_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var _gq_=acc[1];
- acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gq_];
- continue}}
- catch(_gx_)
- {_gx_ = caml_wrap_exception(_gx_);
- if(_gx_ === End_of_object)
- return [0,963043957,caml_call1(Stdlib_List[9],acc[1])];
- throw _gx_}
- case 11:
- var acc$0=[0,0];
- try
- {read_space$0(v,lexbuf);
- read_array_end$0(lexbuf);
- var _gr_=acc$0[1];
- acc$0[1] = [0,read_json$0(v,lexbuf),_gr_];
- for(;;)
- {read_space$0(v,lexbuf);
- read_array_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var _gs_=acc$0[1];
- acc$0[1] = [0,read_json$0(v,lexbuf),_gs_];
- continue}}
- catch(_gw_)
- {_gw_ = caml_wrap_exception(_gw_);
- if(_gw_ === End_of_array)
- return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])];
- throw _gw_}
- case 12:
- var acc$1=[0,0];
- try
- {read_space$0(v,lexbuf);
- read_tuple_end$0(lexbuf);
- var _gt_=acc$1[1];
- acc$1[1] = [0,read_json$0(v,lexbuf),_gt_];
- for(;;)
- {read_space$0(v,lexbuf);
- read_tuple_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var _gu_=acc$1[1];
- acc$1[1] = [0,read_json$0(v,lexbuf),_gu_];
- continue}}
- catch(_gv_)
- {_gv_ = caml_wrap_exception(_gv_);
- if(_gv_ === End_of_tuple)
- return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])];
- throw _gv_}
- case 13:
- read_space$0(v,lexbuf);
- var cons=read_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]];
- case 14:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return read_json$3(counter$0,v,lexbuf)}
- return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
- case 15:
- finish_comment$0(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return read_json$3(counter$1,v,lexbuf)}
- return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
- case 16:
- newline$0(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return read_json$3(counter$2,v,lexbuf)}
- return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
- case 17:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return read_json$3(counter$3,v,lexbuf)}
- return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
- case 18:
- return custom_error$0(cst_Unexpected_end_of_input$44,v,lexbuf);
- default:return long_error$0(cst_Invalid_token$9,v,lexbuf)}}}
- function finish_variant$0(v,lexbuf)
- {var ocaml_lex_state=102;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var x=read_json$0(v,lexbuf);
- read_space$0(v,lexbuf);
- read_gt$0(v,lexbuf);
- return [0,x];
- case 1:return 0;
- case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}}
- function read_json$0(v,lexbuf)
- {return caml_trampoline(read_json$3(0,v,lexbuf))}
- function map_string$0(v,f,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=63;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var b=v[1],_gm_=b[3];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_);
- case 1:finish_escaped_char$0(v,lexbuf);continue a;
- case 2:add_lexeme$0(v[1],lexbuf);continue a;
- default:
- return custom_error$0(cst_Unexpected_end_of_input$46,v,lexbuf)}}}}
- function finish_stringlit$0(v,lexbuf)
- {var ocaml_lex_state=91;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
- caml_bytes_set(s,0,34);
- caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len);
- return caml_call1(Stdlib_Bytes[6],s);
- case 1:return long_error$0(cst_Invalid_string_literal$2,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}}
- function read_lt$0(v,lexbuf)
- {var ocaml_lex_state=107;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}}
- function read_comma$0(v,lexbuf)
- {var ocaml_lex_state=115;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$16,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}}
- function start_any_variant$0(v,lexbuf)
- {var ocaml_lex_state=119;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return -154522342;
- case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
- case 2:return -124528282;
- case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}}
- function read_eof$0(lexbuf)
- {var ocaml_lex_state=131;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_null$0(v,lexbuf)
- {var ocaml_lex_state=140;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_null_but_found$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}}
- function read_null_if_possible$0(v,lexbuf)
- {var ocaml_lex_state=147;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_bool$0(v,lexbuf)
- {var ocaml_lex_state=152;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(5 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 1;
- case 1:return 0;
- case 2:return 1;
- case 3:return 0;
- case 4:
- return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}}
- function ocaml_lex_read_int_rec$0(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(4 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _gg_=extract_positive_int$0(lexbuf);return _gg_}
- catch(_gl_)
- {_gl_ = caml_wrap_exception(_gl_);
- if(_gl_ === Int_overflow$0)
- return lexer_error$0(cst_Int_overflow$3,v,lexbuf);
- throw _gl_}
- case 1:
- try
- {var _gh_=extract_negative_int$0(lexbuf);return _gh_}
- catch(_gk_)
- {_gk_ = caml_wrap_exception(_gk_);
- if(_gk_ === Int_overflow$0)
- return lexer_error$0(cst_Int_overflow$4,v,lexbuf);
- throw _gk_}
- case 2:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$3(v,lexbuf);
- try
- {var _gi_=caml_int_of_string(s);return _gi_}
- catch(_gj_)
- {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)}
- case 3:
- return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}}
- function read_int$0(v,lexbuf)
- {return ocaml_lex_read_int_rec$0(v,lexbuf,176)}
- function ocaml_lex_read_int32_rec$0(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf));
- return _gc_}
- catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$3(v,lexbuf);
- try
- {var _gd_=caml_int_of_string(s);return _gd_}
- catch(_ge_)
- {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)}
- case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}}
- function read_int32$0(v,lexbuf)
- {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)}
- function ocaml_lex_read_int64_rec$0(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf));
- return _f__}
- catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$3(v,lexbuf);
- try
- {var _f$_=caml_int64_of_string(s);return _f$_}
- catch(_ga_)
- {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)}
- case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}}
- function read_int64$0(v,lexbuf)
- {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)}
- function ocaml_lex_read_number_rec$0(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(6 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return Stdlib[24];
- case 1:return Stdlib[22];
- case 2:return Stdlib[23];
- case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf));
- case 4:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$3(v,lexbuf);
- try
- {var _f8_=caml_float_of_string(s);return _f8_}
- catch(_f9_)
- {return caml_string_notequal(s,cst_Infinity$19)
- ?caml_string_notequal(s,cst_Infinity$20)
- ?caml_string_notequal(s,cst_NaN$9)
- ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf)
- :Stdlib[24]
- :Stdlib[22]
- :Stdlib[23]}
- case 5:
- return long_error$0(cst_Expected_number_but_found$0,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}}
- function read_number$0(v,lexbuf)
- {return ocaml_lex_read_number_rec$0(v,lexbuf,199)}
- function read_string$0(v,lexbuf)
- {var ocaml_lex_state=233;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf);
- case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}}
- function map_ident$0(v,f,lexbuf)
- {var ocaml_lex_state=242;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return map_string$0(v,f,lexbuf);
- case 1:
- var len=lexbuf[6] - lexbuf[5] | 0,_f7_=lexbuf[5];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_f7_,len);
- case 2:
- return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}}
- function ocaml_lex_read_sequence_rec$0
- (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space$0(v,lexbuf);
- read_array_end$0(lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- for(;;)
- {read_space$0(v,lexbuf);
- read_array_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- continue}}
- catch(_f6_)
- {_f6_ = caml_wrap_exception(_f6_);
- if(_f6_ === End_of_array)return acc[1];
- throw _f6_}
- case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}}
- function read_sequence$0(read_cell,init_acc,v,lexbuf)
- {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)}
- function ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,0];
- try
- {read_space$0(v,lexbuf);
- read_array_end$0(lexbuf);
- var _f3_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_];
- for(;;)
- {read_space$0(v,lexbuf);
- read_array_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var _f4_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_];
- continue}}
- catch(_f5_)
- {_f5_ = caml_wrap_exception(_f5_);
- if(_f5_ === End_of_array)return acc[1];
- throw _f5_}
- case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}}
- function read_list_rev$0(read_cell,v,lexbuf)
- {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)}
- function ocaml_lex_read_tuple_rec
- (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var pos=[0,0],acc=[0,init_acc];
- try
- {read_space$0(v,lexbuf);
- read_tuple_end$0(lexbuf);
- acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
- pos[1]++;
- for(;;)
- {read_space$0(v,lexbuf);
- read_tuple_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
- pos[1]++;
- continue}}
- catch(_f2_)
- {_f2_ = caml_wrap_exception(_f2_);
- if(_f2_ === End_of_tuple)return acc[1];
- throw _f2_}
- case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}}
- function read_tuple$0(read_cell,init_acc,v,lexbuf)
- {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)}
- function read_tuple_end2$0(v,std,lexbuf)
- {var ocaml_lex_state=268;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf);
- throw End_of_tuple;
- case 1:
- if(std)throw End_of_tuple;
- return long_error$0(cst_Expected_or_but_found$17,v,lexbuf);
- default:return 0}}}
- function read_tuple_sep2$0(v,std,lexbuf)
- {var ocaml_lex_state=276;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:
- if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf);
- throw End_of_tuple;
- case 2:
- if(std)throw End_of_tuple;
- return long_error$0(cst_Expected_or_but_found$20,v,lexbuf);
- case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}}
- function ocaml_lex_read_abstract_fields$0
- (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space$0(v,lexbuf);
- read_object_end$0(lexbuf);
- var field_name=caml_call2(read_key,v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
- for(;;)
- {read_space$0(v,lexbuf);
- read_object_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- var field_name$0=caml_call2(read_key,v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
- continue}}
- catch(_f1_)
- {_f1_ = caml_wrap_exception(_f1_);
- if(_f1_ === End_of_object)return acc[1];
- throw _f1_}
- case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}}
- function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf)
- {return ocaml_lex_read_abstract_fields$0
- (read_key,read_field,init_acc,v,lexbuf,282)}
- function read_lcurl$0(v,lexbuf)
- {var ocaml_lex_state=286;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}}
- function start_any_tuple$0(v,lexbuf)
- {var ocaml_lex_state=301;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return 1;
- case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}}
- function read_lpar$0(v,lexbuf)
- {var ocaml_lex_state=306;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$24,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}}
- function read_rpar$0(v,lexbuf)
- {var ocaml_lex_state=310;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$25,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}}
- function read_lbr$0(v,lexbuf)
- {var ocaml_lex_state=314;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$26,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}}
- function read_rbr$0(v,lexbuf)
- {var ocaml_lex_state=318;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}}
- function finish_skip_stringlit$0(v,lexbuf)
- {var ocaml_lex_state=378;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}}
- function skip_ident$0(v,lexbuf)
- {var ocaml_lex_state=394;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_skip_stringlit$0(v,lexbuf);
- case 1:return 0;
- case 2:
- return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}}
- function skip_json$3(counter,v,lexbuf)
- {var _f0_=322;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)}
- return caml_trampoline_return
- (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])}
- function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(18 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return 0;
- case 1:return 0;
- case 2:return 0;
- case 3:return 0;
- case 4:return 0;
- case 5:return 0;
- case 6:return finish_skip_stringlit$0(v,lexbuf);
- case 7:return 0;
- case 8:return 0;
- case 9:
- try
- {read_space$0(v,lexbuf);
- read_object_end$0(lexbuf);
- skip_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- skip_json$0(v,lexbuf);
- for(;;)
- {read_space$0(v,lexbuf);
- read_object_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- skip_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- read_colon$0(v,lexbuf);
- read_space$0(v,lexbuf);
- skip_json$0(v,lexbuf);
- continue}}
- catch(_fZ_)
- {_fZ_ = caml_wrap_exception(_fZ_);
- if(_fZ_ === End_of_object)return 0;
- throw _fZ_}
- case 10:
- try
- {read_space$0(v,lexbuf);
- read_array_end$0(lexbuf);
- skip_json$0(v,lexbuf);
- for(;;)
- {read_space$0(v,lexbuf);
- read_array_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- skip_json$0(v,lexbuf);
- continue}}
- catch(_fY_)
- {_fY_ = caml_wrap_exception(_fY_);
- if(_fY_ === End_of_array)return 0;
- throw _fY_}
- case 11:
- try
- {read_space$0(v,lexbuf);
- read_tuple_end$0(lexbuf);
- skip_json$0(v,lexbuf);
- for(;;)
- {read_space$0(v,lexbuf);
- read_tuple_sep$0(v,lexbuf);
- read_space$0(v,lexbuf);
- skip_json$0(v,lexbuf);
- continue}}
- catch(_fX_)
- {_fX_ = caml_wrap_exception(_fX_);
- if(_fX_ === End_of_tuple)return 0;
- throw _fX_}
- case 12:
- read_space$0(v,lexbuf);
- skip_ident$0(v,lexbuf);
- read_space$0(v,lexbuf);
- return finish_skip_variant$0(v,lexbuf);
- case 13:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return skip_json$3(counter$0,v,lexbuf)}
- return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
- case 14:
- finish_comment$0(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return skip_json$3(counter$1,v,lexbuf)}
- return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
- case 15:
- newline$0(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return skip_json$3(counter$2,v,lexbuf)}
- return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
- case 16:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return skip_json$3(counter$3,v,lexbuf)}
- return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
- case 17:
- return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf);
- default:return long_error$0(cst_Invalid_token$10,v,lexbuf)}}}
- function skip_json$0(v,lexbuf)
- {return caml_trampoline(skip_json$3(0,v,lexbuf))}
- function finish_skip_variant$0(v,lexbuf)
- {var ocaml_lex_state=389;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- skip_json$0(v,lexbuf);
- read_space$0(v,lexbuf);
- return read_gt$0(v,lexbuf);
- case 1:return 0;
- case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}}
- function finish_buffer_comment$0(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=507;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30);
- case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf);
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a;
- default:add_lexeme$0(v[1],lexbuf);continue a}}}}
- function buffer_colon$0(v,lexbuf)
- {var ocaml_lex_state=499;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
- case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}}
- function buffer_tuple_sep(v,lexbuf)
- {var ocaml_lex_state=494;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple;
- case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}}
- function buffer_tuple_end(v,lexbuf)
- {var ocaml_lex_state=492;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_array_sep$0(v,lexbuf)
- {var ocaml_lex_state=487;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
- case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}}
- function buffer_array_end$0(v,lexbuf)
- {var ocaml_lex_state=485;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_object_sep$0(v,lexbuf)
- {var ocaml_lex_state=480;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
- case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}}
- function buffer_object_end$0(v,lexbuf)
- {var ocaml_lex_state=478;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_space$0(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=471;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a;
- case 1:
- caml_call2(Bi_outbuf[13],v[1],cst$29);
- finish_buffer_comment$0(v,lexbuf);
- continue a;
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a;
- case 3:add_lexeme$0(v[1],lexbuf);continue a;
- default:return 0}}}}
- function finish_buffer_stringlit$0(v,lexbuf)
- {var ocaml_lex_state=450;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$0(v[1],lexbuf);
- case 1:return long_error$0(cst_Invalid_string_literal$4,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$84,v,lexbuf)}}}
- function buffer_ident$0(v,lexbuf)
- {var ocaml_lex_state=466;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_buffer_stringlit$0(v,lexbuf);
- case 1:return add_lexeme$0(v[1],lexbuf);
- case 2:
- return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}}
- function buffer_json$3(counter,v,lexbuf)
- {var _fW_=399;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)}
- return caml_trampoline_return
- (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])}
- function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
- if(11 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return add_lexeme$0(v[1],lexbuf);
- case 1:return finish_buffer_stringlit$0(v,lexbuf);
- case 2:
- try
- {caml_call2(Bi_outbuf[15],v[1],123);
- buffer_space$0(v,lexbuf);
- buffer_object_end$0(v,lexbuf);
- buffer_ident$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_colon$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_json$0(v,lexbuf);
- for(;;)
- {buffer_space$0(v,lexbuf);
- buffer_object_sep$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_ident$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_colon$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_json$0(v,lexbuf);
- continue}}
- catch(_fV_)
- {_fV_ = caml_wrap_exception(_fV_);
- if(_fV_ === End_of_object)return 0;
- throw _fV_}
- case 3:
- try
- {caml_call2(Bi_outbuf[15],v[1],91);
- buffer_space$0(v,lexbuf);
- buffer_array_end$0(v,lexbuf);
- buffer_json$0(v,lexbuf);
- for(;;)
- {buffer_space$0(v,lexbuf);
- buffer_array_sep$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_json$0(v,lexbuf);
- continue}}
- catch(_fU_)
- {_fU_ = caml_wrap_exception(_fU_);
- if(_fU_ === End_of_array)return 0;
- throw _fU_}
- case 4:
- try
- {caml_call2(Bi_outbuf[15],v[1],40);
- buffer_space$0(v,lexbuf);
- buffer_tuple_end(v,lexbuf);
- buffer_json$0(v,lexbuf);
- for(;;)
- {buffer_space$0(v,lexbuf);
- buffer_tuple_sep(v,lexbuf);
- buffer_space$0(v,lexbuf);
- buffer_json$0(v,lexbuf);
- continue}}
- catch(_fT_)
- {_fT_ = caml_wrap_exception(_fT_);
- if(_fT_ === End_of_tuple)return 0;
- throw _fT_}
- case 5:
- caml_call2(Bi_outbuf[15],v[1],60);
- buffer_space$0(v,lexbuf);
- buffer_ident$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- return finish_buffer_variant(v,lexbuf);
- case 6:
- add_lexeme$0(v[1],lexbuf);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return buffer_json$3(counter$0,v,lexbuf)}
- return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
- case 7:
- caml_call2(Bi_outbuf[13],v[1],cst$28);
- finish_buffer_comment$0(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return buffer_json$3(counter$1,v,lexbuf)}
- return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
- case 8:
- caml_call2(Bi_outbuf[15],v[1],10);
- newline$0(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return buffer_json$3(counter$2,v,lexbuf)}
- return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
- case 9:
- add_lexeme$0(v[1],lexbuf);
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return buffer_json$3(counter$3,v,lexbuf)}
- return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
- case 10:
- return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf);
- default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}}
- function buffer_json$0(v,lexbuf)
- {return caml_trampoline(buffer_json$3(0,v,lexbuf))}
- function finish_buffer_variant(v,lexbuf)
- {var ocaml_lex_state=461;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call2(Bi_outbuf[15],v[1],58);
- buffer_json$0(v,lexbuf);
- buffer_space$0(v,lexbuf);
- var ocaml_lex_state$1=503;
- for(;;)
- {var
- ocaml_lex_state$2=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf);
- if(2 < ocaml_lex_state$2 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$1=ocaml_lex_state$2;
- continue}
- switch(ocaml_lex_state$2)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],62);
- case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}}
- case 1:return caml_call2(Bi_outbuf[15],v[1],62);
- case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf);
- default:
- return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}}
- function junk$0(lexbuf)
- {var ocaml_lex_state=513;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf);
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- read_junk$0[1] = junk$0;
- function read_int8$0(v,lexbuf)
- {var n=read_int$0(v,lexbuf);
- if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
- return lexer_error$0(cst_Int8_overflow$0,v,lexbuf)}
- function read_list$0(read_cell,v,lexbuf)
- {var _fS_=read_list_rev$0(read_cell,v,lexbuf);
- return caml_call1(Stdlib_List[9],_fS_)}
- function read_array$0(read_cell,v,lexbuf)
- {var l=read_list_rev$0(read_cell,v,lexbuf);
- if(l)
- {var
- tl=l[2],
- x=l[1],
- len=caml_call1(Stdlib_List[1],l),
- a=caml_make_vect(len,x),
- r=[0,tl],
- _fP_=len - 2 | 0;
- if(! (_fP_ < 0))
- {var i=_fP_;
- for(;;)
- {var _fQ_=caml_call1(Stdlib_List[5],r[1]);
- caml_check_bound(a,i)[1 + i] = _fQ_;
- r[1] = caml_call1(Stdlib_List[6],r[1]);
- var _fR_=i - 1 | 0;
- if(0 !== i){var i=_fR_;continue}
- break}}
- return a}
- return [0]}
- function read_fields$0(read_field,init_acc,v)
- {return function(_fO_)
- {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}}
- function from_lexbuf$0(v,opt,lexbuf)
- {if(opt)var sth=opt[1],stream=sth;else var stream=0;
- read_space$0(v,lexbuf);
- if(read_eof$0(lexbuf))throw End_of_input;
- var x=read_json$0(v,lexbuf);
- if(1 - stream)
- {read_space$0(v,lexbuf);
- if(1 - read_eof$0(lexbuf))
- long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)}
- return x}
- function from_string$2(buf,fname,lnum,s)
- {try
- {var
- lexbuf=caml_call2(from_string$1,0,s),
- v=init_lexer(buf,fname,lnum,0),
- _fM_=from_lexbuf$0(v,0,lexbuf);
- return _fM_}
- catch(_fN_)
- {_fN_ = caml_wrap_exception(_fN_);
- if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1);
- throw _fN_}}
- function from_channel$2(buf,fname,lnum,ic)
- {try
- {var
- lexbuf=caml_call2(from_channel$1,0,ic),
- v=init_lexer(buf,fname,lnum,0),
- _fK_=from_lexbuf$0(v,0,lexbuf);
- return _fK_}
- catch(_fL_)
- {_fL_ = caml_wrap_exception(_fL_);
- if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2);
- throw _fL_}}
- function from_file$0(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- try
- {var x=from_channel$2(buf,fname,lnum,ic);
- caml_call1(Stdlib[93],ic);
- return x}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
- var Finally$0=[248,cst_Yojson_Safe_Finally,caml_fresh_oo_id(0)];
- function stream_from_lexbuf$0(v,opt,lexbuf)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- function f(i)
- {try
- {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_}
- catch(e)
- {e = caml_wrap_exception(e);
- if(e === End_of_input){caml_call1(fin,0);return 0}
- try
- {caml_call1(fin,0)}
- catch(fin_e)
- {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]}
- throw e}}
- return caml_call1(Stdlib_Stream[3],f)}
- function stream_from_string$0(buf,fname,lnum,s)
- {var v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))}
- function stream_from_channel$0(buf,fin,fname,lnum,ic)
- {var
- lexbuf=caml_call2(from_channel$1,0,ic),
- v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf$0(v,fin,lexbuf)}
- function stream_from_file$0(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var
- fname$0=fname || [0,file],
- lexbuf=caml_call2(from_channel$1,0,ic),
- v=init_lexer(buf,fname$0,lnum,0);
- return stream_from_lexbuf$0(v,[0,fin],lexbuf)}
- function linestream_from_channel$0(buf,opt,fname,_fH_,ic)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1;
- var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
- function f(i)
- {try
- {var
- line=caml_call1(Stdlib[83],ic),
- lnum=lnum0 + i | 0,
- _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]];
- return _fI_}
- catch(e)
- {e = caml_wrap_exception(e);
- return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
- return caml_call1(Stdlib_Stream[3],f)}
- function linestream_from_file$0(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var fname$0=fname || [0,file];
- return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)}
- function prettify$0(std,s)
- {return pretty_to_string$1(std,from_string$2(0,0,0,s))}
- function compact$0(std,s)
- {return to_string$3(0,0,0,from_string$2(0,0,0,s))}
- function validate_json$0(path,value){return 0}
- var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)];
- function typerr$0(msg,js)
- {if(typeof js === "number")
- var _fG_=cst_null$4;
- else
- var
- _fF_=js[1],
- _fG_=
- 708012133 <= _fF_
- ?726928360 === _fF_
- ?cst_tuple$0
- :848054398 <= _fF_
- ?963043957 <= _fF_?cst_object$0:cst_array$0
- :737456202 <= _fF_?cst_bool$0:cst_variant$0
- :3654863 <= _fF_
- ?365180284 <= _fF_?cst_float$0:cst_int$0
- :-752863768 <= _fF_?cst_intlit$0:cst_string$0;
- throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]}
- var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)];
- function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)}
- function assoc$0(name,obj)
- {try
- {var _fB_=caml_call2(Stdlib_List[46],name,obj);return _fB_}
- catch(_fC_)
- {_fC_ = caml_wrap_exception(_fC_);
- if(_fC_ === Stdlib[8])return 870828711;
- throw _fC_}}
- function member$0(name,js)
- {if(typeof js !== "number" && 963043957 === js[1])
- {var obj=js[2];return assoc$0(name,obj)}
- var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0);
- return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)}
- function index$0(i,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var
- l=js[2],
- len=caml_call1(Stdlib_List[1],l),
- wrapped_index=0 <= i?i:len + i | 0;
- if(0 <= wrapped_index && ! (len <= wrapped_index))
- return caml_call2(Stdlib_List[7],l,wrapped_index);
- var
- _fy_=caml_call1(Stdlib[33],i),
- _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0);
- throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]}
- var
- _fw_=caml_call1(Stdlib[33],i),
- _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0);
- return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)}
- function map$0(f,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]}
- return typerr$0(cst_Can_t_map_function_over_no$0,js)}
- function to_assoc$0(js)
- {if(typeof js !== "number" && 963043957 === js[1])
- {var obj=js[2];return obj}
- return typerr$0(cst_Expected_object_got$0,js)}
- function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]}
- function to_bool$0(js)
- {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b}
- return typerr$0(cst_Expected_bool_got$0,js)}
- function to_bool_option$0(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(737456202 === js[1]){var b=js[2];return [0,b]}
- return typerr$0(cst_Expected_bool_or_null_got$0,js)}
- function to_number$0(js)
- {if(typeof js !== "number")
- {var _fv_=js[1];
- if(3654863 === _fv_){var i=js[2];return i}
- if(365180284 === _fv_){var f=js[2];return f}}
- return typerr$0(cst_Expected_number_got$0,js)}
- function to_number_option$0(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- {var _fu_=js[1];
- if(3654863 === _fu_){var i=js[2];return [0,i]}
- if(365180284 === _fu_){var f=js[2];return [0,f]}}
- return typerr$0(cst_Expected_number_or_null_go$0,js)}
- function to_float$0(js)
- {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f}
- return typerr$0(cst_Expected_float_got$0,js)}
- function to_float_option$0(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(365180284 === js[1]){var f=js[2];return [0,f]}
- return typerr$0(cst_Expected_float_or_null_got$0,js)}
- function to_int$0(js)
- {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i}
- return typerr$0(cst_Expected_int_got$0,js)}
- function to_int_option$0(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(3654863 === js[1]){var i=js[2];return [0,i]}
- return typerr$0(cst_Expected_int_or_null_got$0,js)}
- function to_list$0(js)
- {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l}
- return typerr$0(cst_Expected_array_got$0,js)}
- function to_string$4(js)
- {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s}
- return typerr$0(cst_Expected_string_got$0,js)}
- function to_string_option$0(js)
- {if(typeof js === "number")
- {if(870828711 === js)return 0}
- else
- if(-976970511 === js[1]){var s=js[2];return [0,s]}
- return typerr$0(cst_Expected_string_or_null_go$0,js)}
- function convert_each$0(f,js)
- {if(typeof js !== "number" && 848054398 === js[1])
- {var l=js[2];return caml_call2(Stdlib_List[19],f,l)}
- return typerr$0(cst_Can_t_convert_each_element$0,js)}
- function filter_map$0(f,l$0)
- {var acc=0,l=l$0;
- for(;;)
- {if(l)
- {var tl=l[2],x=l[1],match=caml_call1(f,x);
- if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue}
- var l=tl;
- continue}
- return caml_call1(Stdlib_List[9],acc)}}
- function flatten$0(l$0)
- {var acc=0,l=l$0;
- for(;;)
- {if(l)
- {var tl=l[2],x=l[1];
- if(typeof x !== "number" && 848054398 === x[1])
- {var
- l2=x[2],
- acc$0=caml_call2(Stdlib_List[12],l2,acc),
- acc=acc$0,
- l=tl;
- continue}
- var l=tl;
- continue}
- return caml_call1(Stdlib_List[9],acc)}}
- function filter_index$0(i,l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 848054398 === param[1])
- {var l=param[2];
- try
- {var _fs_=[0,caml_call2(Stdlib_List[7],l,i)];return _fs_}
- catch(_ft_){return 0}}
- return 0},
- l)}
- function filter_list$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 848054398 === param[1])
- {var l=param[2];return [0,l]}
- return 0},
- l)}
- function filter_member$0(k,l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 963043957 === param[1])
- {var l=param[2];
- try
- {var _fq_=[0,caml_call2(Stdlib_List[46],k,l)];return _fq_}
- catch(_fr_){return 0}}
- return 0},
- l)}
- function filter_assoc$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 963043957 === param[1])
- {var l=param[2];return [0,l]}
- return 0},
- l)}
- function filter_bool$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 737456202 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_int$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 3654863 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_float$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && 365180284 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function filter_number$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number")
- {var _fp_=param[1];
- if(3654863 === _fp_){var x=param[2];return [0,x]}
- if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}}
- return 0},
- l)}
- function filter_string$0(l)
- {return filter_map$0
- (function(param)
- {if(typeof param !== "number" && -976970511 === param[1])
- {var x=param[2];return [0,x]}
- return 0},
- l)}
- function keys$0(o)
- {function _fn_(param){var key=param[1];return key}
- var _fo_=caml_call1(Stdlib_List[19],_fn_);
- return symbol$0(to_assoc$0(o),_fo_)}
- function values$0(o)
- {function _fl_(param){var value=param[2];return value}
- var _fm_=caml_call1(Stdlib_List[19],_fl_);
- return symbol$0(to_assoc$0(o),_fm_)}
- function combine$0(first,second)
- {if
- (typeof first
- !==
- "number"
- &&
- 963043957
- ===
- first[1]
- &&
- typeof second
- !==
- "number"
- &&
- 963043957
- ===
- second[1])
- {var b=second[2],a=first[2];
- return [0,963043957,caml_call2(Stdlib[37],a,b)]}
- throw [0,Stdlib[6],cst_Expected_two_objects_check$0]}
- function hex$4(n)
- {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0;
- return caml_call1(Stdlib_Char[1],_fk_)}
- function write_special$2(src,start,stop,ob,str)
- {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
- caml_call2(Bi_outbuf[13],ob,str);
- start[1] = stop + 1 | 0;
- return 0}
- function finish_string$4(src,start,ob)
- {try
- {var
- _fj_=
- caml_call4
- (Bi_outbuf[14],
- ob,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- return _fj_}
- catch(exc)
- {exc = caml_wrap_exception(exc);
- caml_call4
- (Stdlib_Printf[3],
- _cR_,
- src,
- start[1],
- caml_ml_string_length(src) - start[1] | 0);
- throw exc}}
- function write_string$2(ob,s)
- {caml_call2(Bi_outbuf[15],ob,34);
- var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0;
- if(! (_fh_ < 0))
- {var i$0=_fg_;
- for(;;)
- {var c=caml_string_get(s,i$0);
- if(92 === c)
- write_special$2(s,start,i$0,ob,cst$31);
- else
- {var switch$0=0;
- if(35 <= c)
- if(127 === c)switch$0 = 1;else switch$0 = 2;
- else
- if(8 <= c)
- {var switch$1=0;
- switch(c - 8 | 0)
- {case 0:write_special$2(s,start,i$0,ob,cst_b$2);break;
- case 1:write_special$2(s,start,i$0,ob,cst_t$2);break;
- case 2:write_special$2(s,start,i$0,ob,cst_n$2);break;
- case 4:write_special$2(s,start,i$0,ob,cst_f$2);break;
- case 5:write_special$2(s,start,i$0,ob,cst_r$2);break;
- case 26:write_special$2(s,start,i$0,ob,cst$32);break;
- case 24:
- case 25:switch$0 = 2;switch$1 = 1;break;
- default:switch$0 = 1;switch$1 = 1}}
- else
- switch$0 = 1;
- switch(switch$0)
- {case 2:break;
- case 1:
- caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
- var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
- caml_call5(Stdlib_Bytes[12],cst_u00$2,0,dst,i,4);
- caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0));
- caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15));
- start[1] = i$0 + 1 | 0;
- break
- }}
- var _fi_=i$0 + 1 | 0;
- if(_fh_ !== i$0){var i$0=_fi_;continue}
- break}}
- finish_string$4(s,start,ob);
- return caml_call2(Bi_outbuf[15],ob,34)}
- function write_null$2(ob,param)
- {return caml_call2(Bi_outbuf[13],ob,cst_null$5)}
- function write_bool$2(ob,x)
- {var _ff_=x?cst_true$3:cst_false$3;
- return caml_call2(Bi_outbuf[13],ob,_ff_)}
- var
- _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
- _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19]));
- caml_call2(Stdlib[17],_cT_,_cS_);
- var
- write_intlit$1=Bi_outbuf[13],
- write_floatlit$0=Bi_outbuf[13],
- write_stringlit$0=Bi_outbuf[13];
- function iter2$2(f_elt,f_sep,x,param$0)
- {if(param$0)
- {var l$0=param$0[2],y$0=param$0[1];
- caml_call2(f_elt,x,y$0);
- var param=l$0;
- for(;;)
- {if(param)
- {var l=param[2],y=param[1];
- caml_call1(f_sep,x);
- caml_call2(f_elt,x,y);
- var param=l;
- continue}
- return 0}}
- return 0}
- function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)}
- function write_tuple$1(ob,l)
- {caml_call2(Bi_outbuf[15],ob,40);
- iter2$2(write_t$2,f_sep$2,ob,l);
- return caml_call2(Bi_outbuf[15],ob,41)}
- function write_list$2(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2$2(write_t$2,f_sep$2,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_t$2(ob,x)
- {if(typeof x === "number")return write_null$2(ob,0);
- var _fe_=x[1];
- if(737456202 <= _fe_)
- {if(928231259 <= _fe_)
- {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)}
- var s=x[2];
- return caml_call2(Bi_outbuf[13],ob,s)}
- if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)}
- var b=x[2];
- return write_bool$2(ob,b)}
- if(708012133 <= _fe_)
- {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)}
- var match=x[2],o=match[2],s$0=match[1];
- return write_variant$1(ob,s$0,o)}
- if(-375152890 <= _fe_)
- {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
- var s$2=x[2];
- return caml_call2(Bi_outbuf[13],ob,s$2)}
- function write_assoc$2(ob,l)
- {function f_elt(ob,param)
- {var x=param[2],s=param[1];
- write_string$2(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_t$2(ob,x)}
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$2(f_elt,f_sep$2,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- function write_variant$1(ob,s,o)
- {caml_call2(Bi_outbuf[15],ob,60);
- write_string$2(ob,s);
- if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)}
- return caml_call2(Bi_outbuf[15],ob,62)}
- function write_std_tuple$1(ob,l)
- {caml_call2(Bi_outbuf[15],ob,91);
- iter2$2(write_std_json$2,f_sep$2,ob,l);
- return caml_call2(Bi_outbuf[15],ob,93)}
- function write_std_json$2(ob,x)
- {if(typeof x === "number")return write_null$2(ob,0);
- var _fd_=x[1];
- if(737456202 <= _fd_)
- {if(928231259 <= _fd_)
- {if(963043957 <= _fd_)
- {var
- l=x[2],
- f_elt=
- function(ob,param)
- {var x=param[2],s=param[1];
- write_string$2(ob,s);
- caml_call2(Bi_outbuf[15],ob,58);
- return write_std_json$2(ob,x)};
- caml_call2(Bi_outbuf[15],ob,123);
- iter2$2(f_elt,f_sep$2,ob,l);
- return caml_call2(Bi_outbuf[15],ob,125)}
- var s=x[2];
- return caml_call2(Bi_outbuf[13],ob,s)}
- if(848054398 <= _fd_)
- {var l$0=x[2];
- caml_call2(Bi_outbuf[15],ob,91);
- iter2$2(write_std_json$2,f_sep$2,ob,l$0);
- return caml_call2(Bi_outbuf[15],ob,93)}
- var b=x[2];
- return write_bool$2(ob,b)}
- if(708012133 <= _fd_)
- {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)}
- var match=x[2],o=match[2],s$0=match[1];
- return write_std_variant$1(ob,s$0,o)}
- if(-375152890 <= _fd_)
- {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
- var s$2=x[2];
- return caml_call2(Bi_outbuf[13],ob,s$2)}
- function write_std_variant$1(ob,s,o)
- {if(o)
- {var x=o[1];
- caml_call2(Bi_outbuf[15],ob,91);
- write_string$2(ob,s);
- caml_call2(Bi_outbuf[15],ob,44);
- write_std_json$2(ob,x);
- return caml_call2(Bi_outbuf[15],ob,93)}
- return write_string$2(ob,s)}
- function to_outbuf$2(opt,ob,x)
- {if(opt)var sth=opt[1],std=sth;else var std=0;
- return std
- ?is_object_or_array(x)
- ?write_std_json$2(ob,x)
- :json_error(cst_Root_is_not_an_object_or_a$3)
- :write_t$2(ob,x)}
- function to_string$5(buf,opt,std,x)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- to_outbuf$2(std,ob$0,x);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function to_channel$3(buf,len,std,oc,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- to_outbuf$2(std,ob$0,x);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function to_output$2(buf,len,std,out,x)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
- to_outbuf$2(std,ob$0,x);
- return caml_call1(Bi_outbuf[8],ob$0)}
- function to_file$2(len,std,file,x)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {to_channel$3(0,len,std,oc,x);
- var _fc_=caml_call1(Stdlib[76],oc);
- return _fc_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function stream_to_outbuf$2(std,ob,st)
- {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)}
- return caml_call2(Stdlib_Stream[8],_fa_,st)}
- function stream_to_string$2(buf,opt,std,st)
- {if(opt)var sth=opt[1],len=sth;else var len=256;
- if(buf)
- {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
- else
- var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
- stream_to_outbuf$2(std,ob$0,st);
- var s=caml_call1(Bi_outbuf[4],ob$0);
- caml_call1(Bi_outbuf[19],ob$0);
- return s}
- function stream_to_channel$2(buf,len,std,oc,st)
- {if(buf)
- var ob=buf[1],ob$0=ob;
- else
- var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
- stream_to_outbuf$2(std,ob$0,st);
- return caml_call1(Bi_outbuf[6],ob$0)}
- function stream_to_file$2(len,std,file,st)
- {var oc=caml_call1(Stdlib[60],file);
- try
- {stream_to_channel$2(0,len,std,oc,st);
- var _e$_=caml_call1(Stdlib[76],oc);
- return _e$_}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
- function sort$2(x)
- {if(typeof x !== "number")
- {var _e2_=x[1];
- if(726928361 <= _e2_)
- {if(848054398 === _e2_)
- {var l=x[2],_e3_=caml_call2(Stdlib_List[21],sort$2,l);
- return [0,848054398,caml_call1(Stdlib_List[9],_e3_)]}
- if(963043957 === _e2_)
- {var
- l$0=x[2],
- _e4_=
- function(param)
- {var v=param[2],k=param[1];return [0,k,sort$2(v)]},
- _e5_=caml_call2(Stdlib_List[21],_e4_,l$0),
- l$1=caml_call1(Stdlib_List[9],_e5_),
- _e6_=
- function(param,_e__)
- {var b=_e__[1],a=param[1];
- return caml_call2(Stdlib_String[9],a,b)};
- return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}}
- else
- if(708012133 === _e2_)
- {var _e7_=x[2],_e8_=_e7_[2];
- if(_e8_)
- {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v);
- return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
- else
- if(726928360 <= _e2_)
- {var l$2=x[2],_e9_=caml_call2(Stdlib_List[21],sort$2,l$2);
- return [0,726928360,caml_call1(Stdlib_List[9],_e9_)]}}
- return x}
- function pp$2(fmt,param)
- {if(typeof param === "number")
- return caml_call2(Stdlib_Format[13],fmt,cst_Null$2);
- var _eV_=param[1];
- if(737456202 <= _eV_)
- {if(928231259 <= _eV_)
- {if(963043957 <= _eV_)
- {var xs=param[2];
- caml_call2(Stdlib_Format[129],fmt,_cU_);
- caml_call2(Stdlib_Format[129],fmt,_cV_);
- var
- _eW_=0,
- _eX_=
- function(sep,param)
- {var value=param[2],key=param[1];
- if(sep)caml_call2(Stdlib_Format[129],fmt,_cW_);
- caml_call2(Stdlib_Format[129],fmt,_cX_);
- caml_call3(Stdlib_Format[129],fmt,_cY_,key);
- caml_call2(Stdlib_Format[129],fmt,_cZ_);
- pp$2(fmt,value);
- caml_call2(Stdlib_Format[129],fmt,_c0_);
- return 1};
- caml_call3(Stdlib_List[25],_eX_,_eW_,xs);
- caml_call2(Stdlib_Format[129],fmt,_c1_);
- return caml_call2(Stdlib_Format[129],fmt,_c2_)}
- var x=param[2];
- caml_call2(Stdlib_Format[129],fmt,_c3_);
- caml_call3(Stdlib_Format[129],fmt,_c4_,x);
- return caml_call2(Stdlib_Format[129],fmt,_c5_)}
- if(848054398 <= _eV_)
- {var xs$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_c6_);
- caml_call2(Stdlib_Format[129],fmt,_c7_);
- var
- _eY_=0,
- _eZ_=
- function(sep,x)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_);
- pp$2(fmt,x);
- return 1};
- caml_call3(Stdlib_List[25],_eZ_,_eY_,xs$0);
- caml_call2(Stdlib_Format[129],fmt,_c9_);
- return caml_call2(Stdlib_Format[129],fmt,_c__)}
- var x$0=param[2];
- caml_call2(Stdlib_Format[129],fmt,_c$_);
- caml_call3(Stdlib_Format[129],fmt,_da_,x$0);
- return caml_call2(Stdlib_Format[129],fmt,_db_)}
- if(708012133 <= _eV_)
- {if(726928360 <= _eV_)
- {var tup=param[2];
- caml_call2(Stdlib_Format[129],fmt,_dc_);
- caml_call2(Stdlib_Format[129],fmt,_dd_);
- var
- _e0_=0,
- _e1_=
- function(sep,e)
- {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_);
- pp$2(fmt,e);
- return 1};
- caml_call3(Stdlib_List[25],_e1_,_e0_,tup);
- caml_call2(Stdlib_Format[129],fmt,_df_);
- return caml_call2(Stdlib_Format[129],fmt,_dg_)}
- var match=param[2],value=match[2],name=match[1];
- caml_call2(Stdlib_Format[129],fmt,_dh_);
- caml_call2(Stdlib_Format[129],fmt,_di_);
- caml_call3(Stdlib_Format[129],fmt,_dj_,name);
- caml_call2(Stdlib_Format[129],fmt,_dk_);
- if(value)
- {var x$1=value[1];
- caml_call2(Stdlib_Format[13],fmt,cst_Some$1);
- pp$2(fmt,x$1);
- caml_call2(Stdlib_Format[13],fmt,cst$33)}
- else
- caml_call2(Stdlib_Format[13],fmt,cst_None$1);
- caml_call2(Stdlib_Format[129],fmt,_dl_);
- return caml_call2(Stdlib_Format[129],fmt,_dm_)}
- if(-375152890 <= _eV_)
- {var x$2=param[2];
- caml_call2(Stdlib_Format[129],fmt,_dn_);
- caml_call3(Stdlib_Format[129],fmt,_do_,x$2);
- return caml_call2(Stdlib_Format[129],fmt,_dp_)}
- var x$3=param[2];
- caml_call2(Stdlib_Format[129],fmt,_dq_);
- caml_call3(Stdlib_Format[129],fmt,_dr_,x$3);
- return caml_call2(Stdlib_Format[129],fmt,_ds_)}
- function show$2(x){return caml_call3(Stdlib_Format[133],_dt_,pp$2,x)}
- function equal$2(a,b)
- {var a$0=a,b$0=b;
- for(;;)
- {if(typeof a$0 === "number")
- {if(870828711 === a$0 && 870828711 === b$0)return 1}
- else
- {var _eO_=a$0[1],switch$0=0;
- if(726928361 <= _eO_)
- {if(848054399 <= _eO_)
- {if(928231259 === _eO_)
- {if(typeof b$0 !== "number" && 928231259 === b$0[1])
- {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
- else
- if
- (963043957
- ===
- _eO_
- &&
- typeof b$0
- !==
- "number"
- &&
- 963043957
- ===
- b$0[1])
- {var
- ys=b$0[2],
- xs=a$0[2],
- compare_keys=
- function(param,_eU_)
- {var key=_eU_[1],key$0=param[1];
- return caml_call2(Stdlib_String[9],key$0,key)},
- xs$0=caml_call2(Stdlib_List[57],compare_keys,xs),
- ys$0=caml_call2(Stdlib_List[57],compare_keys,ys);
- try
- {var
- _eP_=
- function(param,_eT_)
- {var
- value=_eT_[2],
- key=_eT_[1],
- value$0=param[2],
- key$0=param[1],
- match=caml_string_equal(key$0,key);
- return match?equal$2(value$0,value):0},
- result=caml_call3(Stdlib_List[34],_eP_,xs$0,ys$0);
- return result}
- catch(_eS_)
- {_eS_ = caml_wrap_exception(_eS_);
- if(_eS_[1] === Stdlib[6])return 0;
- throw _eS_}}}
- else
- if(737456202 === _eO_)
- {if(typeof b$0 !== "number" && 737456202 === b$0[1])
- {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}}
- else
- if
- (848054398
- <=
- _eO_
- &&
- typeof b$0
- !==
- "number"
- &&
- 848054398
- ===
- b$0[1])
- {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
- else
- if(-375152889 <= _eO_)
- {if(708012133 === _eO_)
- {if(typeof b$0 !== "number" && 708012133 === b$0[1])
- {var
- _eQ_=b$0[2],
- value=_eQ_[2],
- name=_eQ_[1],
- match=a$0[2],
- value$0=match[2],
- name$0=match[1],
- match$0=caml_equal(name$0,name);
- if(match$0)
- {if(value$0)
- {if(value)
- {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}}
- else
- if(! value)return 1;
- return 0}
- return 0}}
- else
- if
- (726928360
- <=
- _eO_
- &&
- typeof b$0
- !==
- "number"
- &&
- 726928360
- ===
- b$0[1])
- {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
- else
- if(-752863768 === _eO_)
- {if(typeof b$0 !== "number" && -752863768 === b$0[1])
- {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
- else
- if
- (-375152890
- <=
- _eO_
- &&
- typeof b$0
- !==
- "number"
- &&
- -375152890
- ===
- b$0[1])
- {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}
- if(switch$0)
- try
- {var result$0=caml_call3(Stdlib_List[34],equal$2,xs$1,ys$1);
- return result$0}
- catch(_eR_)
- {_eR_ = caml_wrap_exception(_eR_);
- if(_eR_[1] === Stdlib[6])return 0;
- throw _eR_}}
- return 0}}
- function pretty_format$2(std,x){return format(std,x)}
- function pretty_print$2(std,out,x)
- {var _eN_=pretty_format$2(std,x);
- return caml_call2(Easy_format[4][2],out,_eN_)}
- function pretty_to_string$2(std,x){return to_string$0(std,x)}
- function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)}
- var
- from_channel$3=Stdlib_Lexing[2],
- from_string$3=Stdlib_Lexing[3],
- lexeme$1=Stdlib_Lexing[8],
- sub_lexeme$1=Stdlib_Lexing[16],
- sub_lexeme_char$1=Stdlib_Lexing[18];
- function hex$5(c)
- {if(65 <= c)
- {if(97 <= c)
- {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
- else
- if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
- else
- if(! (9 < c - 48 >>> 0))return c - 48 | 0;
- throw [0,Assert_failure,_du_]}
- function custom_error$1(descr,v,lexbuf)
- {var
- offs=lexbuf[4] - 1 | 0,
- bol=v[3],
- pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
- pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
- _eM_=v[4];
- if(_eM_)
- var s=_eM_[1],file_line=caml_call2(Stdlib_Printf[4],_dv_,s);
- else
- var file_line=cst_Line$1;
- var
- bytes=
- pos1 === pos2
- ?caml_call2(Stdlib_Printf[4],_dw_,pos1 + 1 | 0)
- :caml_call3(Stdlib_Printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0),
- msg=caml_call5(Stdlib_Printf[4],_dx_,file_line,v[2],bytes,descr);
- return json_error(msg)}
- function lexer_error$1(descr,v,lexbuf)
- {var _eL_=caml_call1(lexeme$1,lexbuf);
- return custom_error$1
- (caml_call3(Stdlib_Printf[4],_dz_,descr,_eL_),v,lexbuf)}
- var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}];
- function long_error$1(descr,v,lexbuf)
- {var
- junk=caml_call1(lexeme$1,lexbuf),
- extra_junk=caml_call1(read_junk$1[1],lexbuf);
- return custom_error$1
- (caml_call4(Stdlib_Printf[4],_dB_,descr,junk,extra_junk),
- v,
- lexbuf)}
- var
- _dC_=0 === (Stdlib[20] % 10 | 0)?0:1,
- min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0,
- _dD_=0 === (Stdlib[19] % 10 | 0)?0:1,
- max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0,
- Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)];
- function extract_positive_int$1(lexbuf)
- {var
- start=lexbuf[5],
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _eI_=stop - 1 | 0;
- if(! (_eI_ < start))
- {var i=start;
- for(;;)
- {if(max10$1 <= n[1])throw Int_overflow$1;
- var _eJ_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) + _eJ_ | 0;
- var _eK_=i + 1 | 0;
- if(_eI_ !== i){var i=_eK_;continue}
- break}}
- if(0 <= n[1])return n[1];
- throw Int_overflow$1}
- function make_positive_int(v,lexbuf)
- {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]}
- function extract_negative_int$1(lexbuf)
- {var
- start=lexbuf[5] + 1 | 0,
- stop=lexbuf[6],
- s=lexbuf[2],
- n=[0,0],
- _eF_=stop - 1 | 0;
- if(! (_eF_ < start))
- {var i=start;
- for(;;)
- {if(n[1] <= min10$1)throw Int_overflow$1;
- var _eG_=caml_bytes_get(s,i) - 48 | 0;
- n[1] = (10 * n[1] | 0) - _eG_ | 0;
- var _eH_=i + 1 | 0;
- if(_eF_ !== i){var i=_eH_;continue}
- break}}
- if(0 < n[1])throw Int_overflow$1;
- return n[1]}
- function make_negative_int(v,lexbuf)
- {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]}
- function newline$1(v,lexbuf)
- {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
- function add_lexeme$1(buf,lexbuf)
- {var len=lexbuf[6] - lexbuf[5] | 0;
- return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
- function read_colon$1(v,lexbuf)
- {var ocaml_lex_state=297;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}}
- function read_object_sep$1(v,lexbuf)
- {var ocaml_lex_state=292;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_object;
- case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}}
- function read_object_end$1(lexbuf)
- {var ocaml_lex_state=290;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_object;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_tuple_sep$1(v,lexbuf)
- {var ocaml_lex_state=271;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_tuple;
- case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}}
- function read_tuple_end$1(lexbuf)
- {var ocaml_lex_state=266;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_tuple;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_array_sep$1(v,lexbuf)
- {var ocaml_lex_state=257;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:throw End_of_array;
- case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}}
- function read_array_end$1(lexbuf)
- {var ocaml_lex_state=255;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)throw End_of_array;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function finish_escaped_char$1(v,lexbuf)
- {var ocaml_lex_state=68;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(8 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]);
- return caml_call2(Bi_outbuf[15],v[1],c);
- case 1:return caml_call2(Bi_outbuf[15],v[1],8);
- case 2:return caml_call2(Bi_outbuf[15],v[1],12);
- case 3:return caml_call2(Bi_outbuf[15],v[1],10);
- case 4:return caml_call2(Bi_outbuf[15],v[1],13);
- case 5:return caml_call2(Bi_outbuf[15],v[1],9);
- case 6:
- var
- a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0),
- b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0),
- c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0),
- d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0),
- _ez_=hex$5(d),
- _eA_=hex$5(c$0) << 4,
- _eB_=hex$5(b) << 8,
- x=hex$5(a) << 12 | _eB_ | _eA_ | _ez_;
- if(55296 <= x && ! (56319 < x))
- {var ocaml_lex_state$1=82;
- for(;;)
- {var
- ocaml_lex_state$2=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf);
- if(2 < ocaml_lex_state$2 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$1=ocaml_lex_state$2;
- continue}
- switch(ocaml_lex_state$2)
- {case 0:
- var
- a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0),
- b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0),
- c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0),
- d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0),
- _eC_=hex$5(d$0),
- _eD_=hex$5(c$1) << 4,
- _eE_=hex$5(b$0) << 8,
- y=hex$5(a$0) << 12 | _eE_ | _eD_ | _eC_;
- if(56320 <= y && ! (57343 < y))
- return utf8_of_surrogate_pair(v[1],x,y);
- return long_error$1
- (cst_Invalid_low_surrogate_for_$1,v,lexbuf);
- case 1:
- return long_error$1
- (cst_Missing_escape_sequence_re$1,v,lexbuf);
- default:
- return custom_error$1
- (cst_Unexpected_end_of_input$96,v,lexbuf)}}}
- return utf8_of_code(v[1],x);
- case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}}
- function finish_string$5(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=58;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call1(Bi_outbuf[4],v[1]);
- case 1:finish_escaped_char$1(v,lexbuf);continue a;
- case 2:add_lexeme$1(v[1],lexbuf);continue a;
- default:
- return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}}
- function read_ident$1(v,lexbuf)
- {var ocaml_lex_state=237;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf);
- case 1:
- var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s;
- case 2:
- return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}}
- function finish_comment$1(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=125;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf);
- case 2:newline$1(v,lexbuf);continue a;
- default:continue a}}}}
- function read_space$1(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=133;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:newline$1(v,lexbuf);continue a;
- case 1:finish_comment$1(v,lexbuf);continue a;
- case 2:newline$1(v,lexbuf);continue a;
- case 3:continue a;
- default:return 0}}}}
- function read_gt$1(v,lexbuf)
- {var ocaml_lex_state=111;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}}
- function finish_stringlit$1(v,lexbuf)
- {var ocaml_lex_state=91;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
- caml_bytes_set(s,0,34);
- caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len);
- return caml_call1(Stdlib_Bytes[6],s);
- case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}}
- function read_json$4(counter,v,lexbuf)
- {var _ey_=0;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_ey_)}
- return caml_trampoline_return
- (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_ey_])}
- function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(19 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return _dE_;
- case 1:return _dF_;
- case 2:return 870828711;
- case 3:return _dG_;
- case 4:return _dH_;
- case 5:return _dI_;
- case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)];
- case 7:return make_positive_int(v,lexbuf);
- case 8:return make_negative_int(v,lexbuf);
- case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)];
- case 10:
- var acc=[0,0];
- try
- {read_space$1(v,lexbuf);
- read_object_end$1(lexbuf);
- var field_name=read_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var _ep_=acc[1];
- acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_ep_];
- for(;;)
- {read_space$1(v,lexbuf);
- read_object_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var field_name$0=read_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var _eq_=acc[1];
- acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_eq_];
- continue}}
- catch(_ex_)
- {_ex_ = caml_wrap_exception(_ex_);
- if(_ex_ === End_of_object)
- return [0,963043957,caml_call1(Stdlib_List[9],acc[1])];
- throw _ex_}
- case 11:
- var acc$0=[0,0];
- try
- {read_space$1(v,lexbuf);
- read_array_end$1(lexbuf);
- var _er_=acc$0[1];
- acc$0[1] = [0,read_json$1(v,lexbuf),_er_];
- for(;;)
- {read_space$1(v,lexbuf);
- read_array_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var _es_=acc$0[1];
- acc$0[1] = [0,read_json$1(v,lexbuf),_es_];
- continue}}
- catch(_ew_)
- {_ew_ = caml_wrap_exception(_ew_);
- if(_ew_ === End_of_array)
- return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])];
- throw _ew_}
- case 12:
- var acc$1=[0,0];
- try
- {read_space$1(v,lexbuf);
- read_tuple_end$1(lexbuf);
- var _et_=acc$1[1];
- acc$1[1] = [0,read_json$1(v,lexbuf),_et_];
- for(;;)
- {read_space$1(v,lexbuf);
- read_tuple_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var _eu_=acc$1[1];
- acc$1[1] = [0,read_json$1(v,lexbuf),_eu_];
- continue}}
- catch(_ev_)
- {_ev_ = caml_wrap_exception(_ev_);
- if(_ev_ === End_of_tuple)
- return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])];
- throw _ev_}
- case 13:
- read_space$1(v,lexbuf);
- var cons=read_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]];
- case 14:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return read_json$4(counter$0,v,lexbuf)}
- return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
- case 15:
- finish_comment$1(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return read_json$4(counter$1,v,lexbuf)}
- return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
- case 16:
- newline$1(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return read_json$4(counter$2,v,lexbuf)}
- return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
- case 17:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return read_json$4(counter$3,v,lexbuf)}
- return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
- case 18:
- return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf);
- default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}}
- function finish_variant$1(v,lexbuf)
- {var ocaml_lex_state=102;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var x=read_json$1(v,lexbuf);
- read_space$1(v,lexbuf);
- read_gt$1(v,lexbuf);
- return [0,x];
- case 1:return 0;
- case 2:return long_error$1(cst_Expected_or_but_found$29,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$98,v,lexbuf)}}}
- function read_json$1(v,lexbuf)
- {return caml_trampoline(read_json$4(0,v,lexbuf))}
- function map_string$1(v,f,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=63;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- var b=v[1],_eo_=b[3];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_eo_);
- case 1:finish_escaped_char$1(v,lexbuf);continue a;
- case 2:add_lexeme$1(v[1],lexbuf);continue a;
- default:
- return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}}
- function read_lt$1(v,lexbuf)
- {var ocaml_lex_state=107;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$30,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}}
- function read_comma$1(v,lexbuf)
- {var ocaml_lex_state=115;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$32,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}}
- function start_any_variant$1(v,lexbuf)
- {var ocaml_lex_state=119;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return -154522342;
- case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
- case 2:return -124528282;
- case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}}
- function read_eof$1(lexbuf)
- {var ocaml_lex_state=131;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_null$1(v,lexbuf)
- {var ocaml_lex_state=140;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_null_but_found$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}}
- function read_null_if_possible$1(v,lexbuf)
- {var ocaml_lex_state=147;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return 1;
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function read_bool$1(v,lexbuf)
- {var ocaml_lex_state=152;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(5 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 1;
- case 1:return 0;
- case 2:return 1;
- case 3:return 0;
- case 4:
- return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}}
- function ocaml_lex_read_int_rec$1(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(4 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _ei_=extract_positive_int$1(lexbuf);return _ei_}
- catch(_en_)
- {_en_ = caml_wrap_exception(_en_);
- if(_en_ === Int_overflow$1)
- return lexer_error$1(cst_Int_overflow$5,v,lexbuf);
- throw _en_}
- case 1:
- try
- {var _ej_=extract_negative_int$1(lexbuf);return _ej_}
- catch(_em_)
- {_em_ = caml_wrap_exception(_em_);
- if(_em_ === Int_overflow$1)
- return lexer_error$1(cst_Int_overflow$6,v,lexbuf);
- throw _em_}
- case 2:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$5(v,lexbuf);
- try
- {var _ek_=caml_int_of_string(s);return _ek_}
- catch(_el_)
- {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)}
- case 3:
- return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}}
- function read_int$1(v,lexbuf)
- {return ocaml_lex_read_int_rec$1(v,lexbuf,176)}
- function ocaml_lex_read_int32_rec$1(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf));
- return _ee_}
- catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$5(v,lexbuf);
- try
- {var _ef_=caml_int_of_string(s);return _ef_}
- catch(_eg_)
- {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)}
- case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}}
- function read_int32$1(v,lexbuf)
- {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)}
- function ocaml_lex_read_int64_rec$1(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(3 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- try
- {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf));
- return _ea_}
- catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)}
- case 1:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$5(v,lexbuf);
- try
- {var _eb_=caml_int64_of_string(s);return _eb_}
- catch(_ec_)
- {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)}
- case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}}
- function read_int64$1(v,lexbuf)
- {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)}
- function ocaml_lex_read_number_rec$1(v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(6 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return Stdlib[24];
- case 1:return Stdlib[22];
- case 2:return Stdlib[23];
- case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf));
- case 4:
- caml_call1(Bi_outbuf[19],v[1]);
- var s=finish_string$5(v,lexbuf);
- try
- {var _d__=caml_float_of_string(s);return _d__}
- catch(_d$_)
- {return caml_string_notequal(s,cst_Infinity$21)
- ?caml_string_notequal(s,cst_Infinity$22)
- ?caml_string_notequal(s,cst_NaN$10)
- ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf)
- :Stdlib[24]
- :Stdlib[22]
- :Stdlib[23]}
- case 5:
- return long_error$1(cst_Expected_number_but_found$1,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}}
- function read_number$1(v,lexbuf)
- {return ocaml_lex_read_number_rec$1(v,lexbuf,199)}
- function read_string$1(v,lexbuf)
- {var ocaml_lex_state=233;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf);
- case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}}
- function map_ident$1(v,f,lexbuf)
- {var ocaml_lex_state=242;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call1(Bi_outbuf[19],v[1]);return map_string$1(v,f,lexbuf);
- case 1:
- var len=lexbuf[6] - lexbuf[5] | 0,_d9_=lexbuf[5];
- return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_d9_,len);
- case 2:
- return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}}
- function ocaml_lex_read_sequence_rec$1
- (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space$1(v,lexbuf);
- read_array_end$1(lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- for(;;)
- {read_space$1(v,lexbuf);
- read_array_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
- continue}}
- catch(_d8_)
- {_d8_ = caml_wrap_exception(_d8_);
- if(_d8_ === End_of_array)return acc[1];
- throw _d8_}
- case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}}
- function read_sequence$1(read_cell,init_acc,v,lexbuf)
- {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)}
- function ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,0];
- try
- {read_space$1(v,lexbuf);
- read_array_end$1(lexbuf);
- var _d5_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_];
- for(;;)
- {read_space$1(v,lexbuf);
- read_array_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var _d6_=acc[1];
- acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_];
- continue}}
- catch(_d7_)
- {_d7_ = caml_wrap_exception(_d7_);
- if(_d7_ === End_of_array)return acc[1];
- throw _d7_}
- case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}}
- function read_list_rev$1(read_cell,v,lexbuf)
- {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)}
- function ocaml_lex_read_tuple_rec$0
- (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var pos=[0,0],acc=[0,init_acc];
- try
- {read_space$1(v,lexbuf);
- read_tuple_end$1(lexbuf);
- acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
- pos[1]++;
- for(;;)
- {read_space$1(v,lexbuf);
- read_tuple_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
- pos[1]++;
- continue}}
- catch(_d4_)
- {_d4_ = caml_wrap_exception(_d4_);
- if(_d4_ === End_of_tuple)return acc[1];
- throw _d4_}
- case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}}
- function read_tuple$1(read_cell,init_acc,v,lexbuf)
- {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)}
- function read_tuple_end2$1(v,std,lexbuf)
- {var ocaml_lex_state=268;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf);
- throw End_of_tuple;
- case 1:
- if(std)throw End_of_tuple;
- return long_error$1(cst_Expected_or_but_found$33,v,lexbuf);
- default:return 0}}}
- function read_tuple_sep2$1(v,std,lexbuf)
- {var ocaml_lex_state=276;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:
- if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf);
- throw End_of_tuple;
- case 2:
- if(std)throw End_of_tuple;
- return long_error$1(cst_Expected_or_but_found$36,v,lexbuf);
- case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}}
- function ocaml_lex_read_abstract_fields$1
- (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(2 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:
- var acc=[0,init_acc];
- try
- {read_space$1(v,lexbuf);
- read_object_end$1(lexbuf);
- var field_name=caml_call2(read_key,v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
- for(;;)
- {read_space$1(v,lexbuf);
- read_object_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- var field_name$0=caml_call2(read_key,v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
- continue}}
- catch(_d3_)
- {_d3_ = caml_wrap_exception(_d3_);
- if(_d3_ === End_of_object)return acc[1];
- throw _d3_}
- case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}}
- function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf)
- {return ocaml_lex_read_abstract_fields$1
- (read_key,read_field,init_acc,v,lexbuf,282)}
- function read_lcurl$1(v,lexbuf)
- {var ocaml_lex_state=286;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}}
- function start_any_tuple$1(v,lexbuf)
- {var ocaml_lex_state=301;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return 1;
- case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}}
- function read_lpar$1(v,lexbuf)
- {var ocaml_lex_state=306;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$40,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}}
- function read_rpar$1(v,lexbuf)
- {var ocaml_lex_state=310;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$41,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}}
- function read_lbr$1(v,lexbuf)
- {var ocaml_lex_state=314;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$42,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}}
- function read_rbr$1(v,lexbuf)
- {var ocaml_lex_state=318;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}}
- function finish_skip_stringlit$1(v,lexbuf)
- {var ocaml_lex_state=378;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return 0;
- case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}}
- function skip_ident$1(v,lexbuf)
- {var ocaml_lex_state=394;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_skip_stringlit$1(v,lexbuf);
- case 1:return 0;
- case 2:
- return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}}
- function skip_json$4(counter,v,lexbuf)
- {var _d2_=322;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)}
- return caml_trampoline_return
- (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])}
- function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(18 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return 0;
- case 1:return 0;
- case 2:return 0;
- case 3:return 0;
- case 4:return 0;
- case 5:return 0;
- case 6:return finish_skip_stringlit$1(v,lexbuf);
- case 7:return 0;
- case 8:return 0;
- case 9:
- try
- {read_space$1(v,lexbuf);
- read_object_end$1(lexbuf);
- skip_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- skip_json$1(v,lexbuf);
- for(;;)
- {read_space$1(v,lexbuf);
- read_object_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- skip_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- read_colon$1(v,lexbuf);
- read_space$1(v,lexbuf);
- skip_json$1(v,lexbuf);
- continue}}
- catch(_d1_)
- {_d1_ = caml_wrap_exception(_d1_);
- if(_d1_ === End_of_object)return 0;
- throw _d1_}
- case 10:
- try
- {read_space$1(v,lexbuf);
- read_array_end$1(lexbuf);
- skip_json$1(v,lexbuf);
- for(;;)
- {read_space$1(v,lexbuf);
- read_array_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- skip_json$1(v,lexbuf);
- continue}}
- catch(_d0_)
- {_d0_ = caml_wrap_exception(_d0_);
- if(_d0_ === End_of_array)return 0;
- throw _d0_}
- case 11:
- try
- {read_space$1(v,lexbuf);
- read_tuple_end$1(lexbuf);
- skip_json$1(v,lexbuf);
- for(;;)
- {read_space$1(v,lexbuf);
- read_tuple_sep$1(v,lexbuf);
- read_space$1(v,lexbuf);
- skip_json$1(v,lexbuf);
- continue}}
- catch(_dZ_)
- {_dZ_ = caml_wrap_exception(_dZ_);
- if(_dZ_ === End_of_tuple)return 0;
- throw _dZ_}
- case 12:
- read_space$1(v,lexbuf);
- skip_ident$1(v,lexbuf);
- read_space$1(v,lexbuf);
- return finish_skip_variant$1(v,lexbuf);
- case 13:
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return skip_json$4(counter$0,v,lexbuf)}
- return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
- case 14:
- finish_comment$1(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return skip_json$4(counter$1,v,lexbuf)}
- return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
- case 15:
- newline$1(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return skip_json$4(counter$2,v,lexbuf)}
- return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
- case 16:
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return skip_json$4(counter$3,v,lexbuf)}
- return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
- case 17:
- return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf);
- default:return long_error$1(cst_Invalid_token$13,v,lexbuf)}}}
- function skip_json$1(v,lexbuf)
- {return caml_trampoline(skip_json$4(0,v,lexbuf))}
- function finish_skip_variant$1(v,lexbuf)
- {var ocaml_lex_state=389;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- skip_json$1(v,lexbuf);
- read_space$1(v,lexbuf);
- return read_gt$1(v,lexbuf);
- case 1:return 0;
- case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}}
- function finish_buffer_comment$1(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=507;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36);
- case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf);
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a;
- default:add_lexeme$1(v[1],lexbuf);continue a}}}}
- function buffer_colon$1(v,lexbuf)
- {var ocaml_lex_state=499;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
- case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}}
- function buffer_tuple_sep$0(v,lexbuf)
- {var ocaml_lex_state=494;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple;
- case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}}
- function buffer_tuple_end$0(v,lexbuf)
- {var ocaml_lex_state=492;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_array_sep$1(v,lexbuf)
- {var ocaml_lex_state=487;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
- case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}}
- function buffer_array_end$1(v,lexbuf)
- {var ocaml_lex_state=485;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_object_sep$1(v,lexbuf)
- {var ocaml_lex_state=480;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
- case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
- case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}}
- function buffer_object_end$1(v,lexbuf)
- {var ocaml_lex_state=478;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)
- {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
- if(1 === ocaml_lex_state$0)return 0;
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- function buffer_space$1(v,lexbuf)
- {a:
- for(;;)
- {var ocaml_lex_state=471;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(4 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a;
- case 1:
- caml_call2(Bi_outbuf[13],v[1],cst$35);
- finish_buffer_comment$1(v,lexbuf);
- continue a;
- case 2:
- caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a;
- case 3:add_lexeme$1(v[1],lexbuf);continue a;
- default:return 0}}}}
- function finish_buffer_stringlit$1(v,lexbuf)
- {var ocaml_lex_state=450;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(2 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$1(v[1],lexbuf);
- case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}}
- function buffer_ident$1(v,lexbuf)
- {var ocaml_lex_state=466;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:return finish_buffer_stringlit$1(v,lexbuf);
- case 1:return add_lexeme$1(v[1],lexbuf);
- case 2:
- return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}}
- function buffer_json$4(counter,v,lexbuf)
- {var _dY_=399;
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)}
- return caml_trampoline_return
- (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])}
- function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
- {var ocaml_lex_state$0=ocaml_lex_state;
- for(;;)
- {var
- ocaml_lex_state$1=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
- if(11 < ocaml_lex_state$1 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$0=ocaml_lex_state$1;
- continue}
- switch(ocaml_lex_state$1)
- {case 0:return add_lexeme$1(v[1],lexbuf);
- case 1:return finish_buffer_stringlit$1(v,lexbuf);
- case 2:
- try
- {caml_call2(Bi_outbuf[15],v[1],123);
- buffer_space$1(v,lexbuf);
- buffer_object_end$1(v,lexbuf);
- buffer_ident$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_colon$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_json$1(v,lexbuf);
- for(;;)
- {buffer_space$1(v,lexbuf);
- buffer_object_sep$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_ident$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_colon$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_json$1(v,lexbuf);
- continue}}
- catch(_dX_)
- {_dX_ = caml_wrap_exception(_dX_);
- if(_dX_ === End_of_object)return 0;
- throw _dX_}
- case 3:
- try
- {caml_call2(Bi_outbuf[15],v[1],91);
- buffer_space$1(v,lexbuf);
- buffer_array_end$1(v,lexbuf);
- buffer_json$1(v,lexbuf);
- for(;;)
- {buffer_space$1(v,lexbuf);
- buffer_array_sep$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_json$1(v,lexbuf);
- continue}}
- catch(_dW_)
- {_dW_ = caml_wrap_exception(_dW_);
- if(_dW_ === End_of_array)return 0;
- throw _dW_}
- case 4:
- try
- {caml_call2(Bi_outbuf[15],v[1],40);
- buffer_space$1(v,lexbuf);
- buffer_tuple_end$0(v,lexbuf);
- buffer_json$1(v,lexbuf);
- for(;;)
- {buffer_space$1(v,lexbuf);
- buffer_tuple_sep$0(v,lexbuf);
- buffer_space$1(v,lexbuf);
- buffer_json$1(v,lexbuf);
- continue}}
- catch(_dV_)
- {_dV_ = caml_wrap_exception(_dV_);
- if(_dV_ === End_of_tuple)return 0;
- throw _dV_}
- case 5:
- caml_call2(Bi_outbuf[15],v[1],60);
- buffer_space$1(v,lexbuf);
- buffer_ident$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- return finish_buffer_variant$0(v,lexbuf);
- case 6:
- add_lexeme$1(v[1],lexbuf);
- if(counter < 50)
- {var counter$0=counter + 1 | 0;
- return buffer_json$4(counter$0,v,lexbuf)}
- return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
- case 7:
- caml_call2(Bi_outbuf[13],v[1],cst$34);
- finish_buffer_comment$1(v,lexbuf);
- if(counter < 50)
- {var counter$1=counter + 1 | 0;
- return buffer_json$4(counter$1,v,lexbuf)}
- return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
- case 8:
- caml_call2(Bi_outbuf[15],v[1],10);
- newline$1(v,lexbuf);
- if(counter < 50)
- {var counter$2=counter + 1 | 0;
- return buffer_json$4(counter$2,v,lexbuf)}
- return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
- case 9:
- add_lexeme$1(v[1],lexbuf);
- if(counter < 50)
- {var counter$3=counter + 1 | 0;
- return buffer_json$4(counter$3,v,lexbuf)}
- return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
- case 10:
- return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf);
- default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}}
- function buffer_json$1(v,lexbuf)
- {return caml_trampoline(buffer_json$4(0,v,lexbuf))}
- function finish_buffer_variant$0(v,lexbuf)
- {var ocaml_lex_state=461;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(3 < ocaml_lex_state$0 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}
- switch(ocaml_lex_state$0)
- {case 0:
- caml_call2(Bi_outbuf[15],v[1],58);
- buffer_json$1(v,lexbuf);
- buffer_space$1(v,lexbuf);
- var ocaml_lex_state$1=503;
- for(;;)
- {var
- ocaml_lex_state$2=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf);
- if(2 < ocaml_lex_state$2 >>> 0)
- {caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state$1=ocaml_lex_state$2;
- continue}
- switch(ocaml_lex_state$2)
- {case 0:return caml_call2(Bi_outbuf[15],v[1],62);
- case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf);
- default:
- return custom_error$1
- (cst_Unexpected_end_of_input$139,v,lexbuf)}}
- case 1:return caml_call2(Bi_outbuf[15],v[1],62);
- case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf);
- default:
- return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}}
- function junk$1(lexbuf)
- {var ocaml_lex_state=513;
- for(;;)
- {var
- ocaml_lex_state$0=
- caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
- if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf);
- caml_call1(lexbuf[1],lexbuf);
- var ocaml_lex_state=ocaml_lex_state$0;
- continue}}
- read_junk$1[1] = junk$1;
- function read_int8$1(v,lexbuf)
- {var n=read_int$1(v,lexbuf);
- if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
- return lexer_error$1(cst_Int8_overflow$1,v,lexbuf)}
- function read_list$1(read_cell,v,lexbuf)
- {var _dU_=read_list_rev$1(read_cell,v,lexbuf);
- return caml_call1(Stdlib_List[9],_dU_)}
- function read_array$1(read_cell,v,lexbuf)
- {var l=read_list_rev$1(read_cell,v,lexbuf);
- if(l)
- {var
- tl=l[2],
- x=l[1],
- len=caml_call1(Stdlib_List[1],l),
- a=caml_make_vect(len,x),
- r=[0,tl],
- _dR_=len - 2 | 0;
- if(! (_dR_ < 0))
- {var i=_dR_;
- for(;;)
- {var _dS_=caml_call1(Stdlib_List[5],r[1]);
- caml_check_bound(a,i)[1 + i] = _dS_;
- r[1] = caml_call1(Stdlib_List[6],r[1]);
- var _dT_=i - 1 | 0;
- if(0 !== i){var i=_dT_;continue}
- break}}
- return a}
- return [0]}
- function read_fields$1(read_field,init_acc,v)
- {return function(_dQ_)
- {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}}
- function from_lexbuf$1(v,opt,lexbuf)
- {if(opt)var sth=opt[1],stream=sth;else var stream=0;
- read_space$1(v,lexbuf);
- if(read_eof$1(lexbuf))throw End_of_input;
- var x=read_json$1(v,lexbuf);
- if(1 - stream)
- {read_space$1(v,lexbuf);
- if(1 - read_eof$1(lexbuf))
- long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)}
- return x}
- function from_string$4(buf,fname,lnum,s)
- {try
- {var
- lexbuf=caml_call2(from_string$3,0,s),
- v=init_lexer(buf,fname,lnum,0),
- _dO_=from_lexbuf$1(v,0,lexbuf);
- return _dO_}
- catch(_dP_)
- {_dP_ = caml_wrap_exception(_dP_);
- if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3);
- throw _dP_}}
- function from_channel$4(buf,fname,lnum,ic)
- {try
- {var
- lexbuf=caml_call2(from_channel$3,0,ic),
- v=init_lexer(buf,fname,lnum,0),
- _dM_=from_lexbuf$1(v,0,lexbuf);
- return _dM_}
- catch(_dN_)
- {_dN_ = caml_wrap_exception(_dN_);
- if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4);
- throw _dN_}}
- function from_file$1(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- try
- {var x=from_channel$4(buf,fname,lnum,ic);
- caml_call1(Stdlib[93],ic);
- return x}
- catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
- var Finally$1=[248,cst_Yojson_Raw_Finally,caml_fresh_oo_id(0)];
- function stream_from_lexbuf$1(v,opt,lexbuf)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- function f(i)
- {try
- {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_}
- catch(e)
- {e = caml_wrap_exception(e);
- if(e === End_of_input){caml_call1(fin,0);return 0}
- try
- {caml_call1(fin,0)}
- catch(fin_e)
- {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]}
- throw e}}
- return caml_call1(Stdlib_Stream[3],f)}
- function stream_from_string$1(buf,fname,lnum,s)
- {var v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))}
- function stream_from_channel$1(buf,fin,fname,lnum,ic)
- {var
- lexbuf=caml_call2(from_channel$3,0,ic),
- v=init_lexer(buf,fname,lnum,0);
- return stream_from_lexbuf$1(v,fin,lexbuf)}
- function stream_from_file$1(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var
- fname$0=fname || [0,file],
- lexbuf=caml_call2(from_channel$3,0,ic),
- v=init_lexer(buf,fname$0,lnum,0);
- return stream_from_lexbuf$1(v,[0,fin],lexbuf)}
- function linestream_from_channel$1(buf,opt,fname,_dJ_,ic)
- {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
- if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1;
- var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
- function f(i)
- {try
- {var
- line=caml_call1(Stdlib[83],ic),
- lnum=lnum0 + i | 0,
- _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]];
- return _dK_}
- catch(e)
- {e = caml_wrap_exception(e);
- return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
- return caml_call1(Stdlib_Stream[3],f)}
- function linestream_from_file$1(buf,fname,lnum,file)
- {var ic=caml_call1(Stdlib[79],file);
- function fin(param){return caml_call1(Stdlib[93],ic)}
- var fname$0=fname || [0,file];
- return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)}
- function prettify$1(std,s)
- {return pretty_to_string$2(std,from_string$4(0,0,0,s))}
- function compact$1(std,s)
- {return to_string$5(0,0,0,from_string$4(0,0,0,s))}
- function validate_json$1(path,value){return 0}
- var
- Yojson=
- [0,
- version,
- Json_error,
- json_error,
- Lexer_state,
- init_lexer,
- End_of_array,
- End_of_object,
- End_of_tuple,
- End_of_input,
- [0,
- to_string$1,
- to_channel$1,
- to_output$0,
- to_file$0,
- to_outbuf$0,
- stream_to_string$0,
- stream_to_channel$0,
- stream_to_file$0,
- stream_to_outbuf$0,
- write_t$0,
- sort$0,
- write_null$0,
- write_bool$0,
- write_int$0,
- write_float$0,
- write_std_float$0,
- write_float_fast$0,
- write_std_float_fast$0,
- write_float_prec$0,
- write_std_float_prec$0,
- write_string$0,
- write_assoc$0,
- write_list$0,
- write_t$0,
- write_std_json$0,
- pp$0,
- show$0,
- equal$0,
- pretty_format$0,
- pretty_print$0,
- pretty_to_string$0,
- pretty_to_channel$0,
- prettify,
- compact,
- Finally,
- from_string$0,
- from_channel$0,
- from_file,
- init_lexer,
- from_lexbuf,
- stream_from_string,
- stream_from_channel,
- stream_from_file,
- stream_from_lexbuf,
- linestream_from_channel,
- linestream_from_file,
- read_json,
- finish_string$1,
- read_string,
- read_ident,
- map_string,
- map_ident,
- start_any_variant,
- finish_variant,
- finish_skip_variant,
- read_lt,
- read_gt,
- read_comma,
- finish_stringlit,
- finish_skip_stringlit,
- finish_escaped_char,
- finish_comment,
- read_space,
- read_eof,
- read_null,
- read_null_if_possible,
- read_bool,
- read_int,
- read_int8,
- read_int32,
- read_int64,
- read_number,
- skip_ident,
- read_sequence,
- read_list,
- read_list_rev,
- read_array_end,
- read_array_sep,
- read_array,
- read_tuple,
- start_any_tuple,
- read_lpar,
- read_rpar,
- read_tuple_end,
- read_tuple_end2,
- read_tuple_sep,
- read_tuple_sep2,
- read_lbr,
- read_rbr,
- read_fields,
- read_abstract_fields,
- read_lcurl,
- read_object_end,
- read_object_sep,
- read_colon,
- read_json,
- skip_json,
- buffer_json,
- validate_json,
- [0,
- Type_error,
- Undefined,
- symbol,
- keys,
- values,
- combine,
- member,
- index,
- map,
- to_assoc,
- to_option,
- to_bool,
- to_bool_option,
- to_number,
- to_number_option,
- to_float,
- to_float_option,
- to_int,
- to_int_option,
- to_list,
- to_string$2,
- to_string_option,
- convert_each,
- filter_map,
- flatten,
- filter_index,
- filter_list,
- filter_member,
- filter_assoc,
- filter_bool,
- filter_int,
- filter_float,
- filter_number,
- filter_string]],
- [0,
- pp$1,
- show$1,
- equal$1,
- to_basic,
- to_string$3,
- to_channel$2,
- to_output$1,
- to_file$1,
- to_outbuf$1,
- stream_to_string$1,
- stream_to_channel$1,
- stream_to_file$1,
- stream_to_outbuf$1,
- write_t$1,
- sort$1,
- write_null$1,
- write_bool$1,
- write_int$1,
- write_float$1,
- write_std_float$1,
- write_float_fast$1,
- write_std_float_fast$1,
- write_float_prec$1,
- write_std_float_prec$1,
- write_string$1,
- write_intlit$0,
- write_assoc$1,
- write_list$1,
- write_tuple$0,
- write_std_tuple$0,
- write_variant$0,
- write_std_variant$0,
- write_t$1,
- write_std_json$1,
- pretty_format$1,
- pretty_print$1,
- pretty_to_string$1,
- pretty_to_channel$1,
- prettify$0,
- compact$0,
- Finally$0,
- from_string$2,
- from_channel$2,
- from_file$0,
- init_lexer,
- from_lexbuf$0,
- stream_from_string$0,
- stream_from_channel$0,
- stream_from_file$0,
- stream_from_lexbuf$0,
- linestream_from_channel$0,
- linestream_from_file$0,
- read_json$0,
- finish_string$3,
- read_string$0,
- read_ident$0,
- map_string$0,
- map_ident$0,
- start_any_variant$0,
- finish_variant$0,
- finish_skip_variant$0,
- read_lt$0,
- read_gt$0,
- read_comma$0,
- finish_stringlit$0,
- finish_skip_stringlit$0,
- finish_escaped_char$0,
- finish_comment$0,
- read_space$0,
- read_eof$0,
- read_null$0,
- read_null_if_possible$0,
- read_bool$0,
- read_int$0,
- read_int8$0,
- read_int32$0,
- read_int64$0,
- read_number$0,
- skip_ident$0,
- read_sequence$0,
- read_list$0,
- read_list_rev$0,
- read_array_end$0,
- read_array_sep$0,
- read_array$0,
- read_tuple$0,
- start_any_tuple$0,
- read_lpar$0,
- read_rpar$0,
- read_tuple_end$0,
- read_tuple_end2$0,
- read_tuple_sep$0,
- read_tuple_sep2$0,
- read_lbr$0,
- read_rbr$0,
- read_fields$0,
- read_abstract_fields$0,
- read_lcurl$0,
- read_object_end$0,
- read_object_sep$0,
- read_colon$0,
- read_json$0,
- skip_json$0,
- buffer_json$0,
- validate_json$0,
- [0,
- Type_error$0,
- Undefined$0,
- symbol$0,
- keys$0,
- values$0,
- combine$0,
- member$0,
- index$0,
- map$0,
- to_assoc$0,
- to_option$0,
- to_bool$0,
- to_bool_option$0,
- to_number$0,
- to_number_option$0,
- to_float$0,
- to_float_option$0,
- to_int$0,
- to_int_option$0,
- to_list$0,
- to_string$4,
- to_string_option$0,
- convert_each$0,
- filter_map$0,
- flatten$0,
- filter_index$0,
- filter_list$0,
- filter_member$0,
- filter_assoc$0,
- filter_bool$0,
- filter_int$0,
- filter_float$0,
- filter_number$0,
- filter_string$0]],
- [0,
- pp$2,
- show$2,
- equal$2,
- to_string$5,
- to_channel$3,
- to_output$2,
- to_file$2,
- to_outbuf$2,
- stream_to_string$2,
- stream_to_channel$2,
- stream_to_file$2,
- stream_to_outbuf$2,
- write_t$2,
- sort$2,
- write_null$2,
- write_bool$2,
- write_intlit$1,
- write_floatlit$0,
- write_stringlit$0,
- write_assoc$2,
- write_list$2,
- write_tuple$1,
- write_std_tuple$1,
- write_variant$1,
- write_std_variant$1,
- write_t$2,
- write_std_json$2,
- pretty_format$2,
- pretty_print$2,
- pretty_to_string$2,
- pretty_to_channel$2,
- prettify$1,
- compact$1,
- Finally$1,
- from_string$4,
- from_channel$4,
- from_file$1,
- init_lexer,
- from_lexbuf$1,
- stream_from_string$1,
- stream_from_channel$1,
- stream_from_file$1,
- stream_from_lexbuf$1,
- linestream_from_channel$1,
- linestream_from_file$1,
- read_json$1,
- finish_string$5,
- read_string$1,
- read_ident$1,
- map_string$1,
- map_ident$1,
- start_any_variant$1,
- finish_variant$1,
- finish_skip_variant$1,
- read_lt$1,
- read_gt$1,
- read_comma$1,
- finish_stringlit$1,
- finish_skip_stringlit$1,
- finish_escaped_char$1,
- finish_comment$1,
- read_space$1,
- read_eof$1,
- read_null$1,
- read_null_if_possible$1,
- read_bool$1,
- read_int$1,
- read_int8$1,
- read_int32$1,
- read_int64$1,
- read_number$1,
- skip_ident$1,
- read_sequence$1,
- read_list$1,
- read_list_rev$1,
- read_array_end$1,
- read_array_sep$1,
- read_array$1,
- read_tuple$1,
- start_any_tuple$1,
- read_lpar$1,
- read_rpar$1,
- read_tuple_end$1,
- read_tuple_end2$1,
- read_tuple_sep$1,
- read_tuple_sep2$1,
- read_lbr$1,
- read_rbr$1,
- read_fields$1,
- read_abstract_fields$1,
- read_lcurl$1,
- read_object_end$1,
- read_object_sep$1,
- read_colon$1,
- read_json$1,
- skip_json$1,
- buffer_json$1,
- validate_json$1],
- pp,
- show,
- equal,
- to_string,
- to_channel,
- to_output,
- to_file,
- to_outbuf,
- stream_to_string,
- stream_to_channel,
- stream_to_file,
- stream_to_outbuf,
- write_t,
- sort,
- write_null,
- write_bool,
- write_int,
- write_float,
- write_std_float,
- write_float_fast,
- write_std_float_fast,
- write_float_prec,
- write_std_float_prec,
- write_string,
- write_intlit,
- write_floatlit,
- write_stringlit,
- write_assoc,
- write_list,
- write_tuple,
- write_std_tuple,
- write_variant,
- write_std_variant,
- write_t,
- write_std_json,
- pretty_format,
- pretty_print,
- pretty_to_string,
- pretty_to_channel];
- caml_register_global(1035,Yojson,"Yojson");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_check_bound=runtime.caml_check_bound,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_int_of_string=runtime.caml_int_of_string,
- caml_register_global=runtime.caml_register_global,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_fun_of_yojson_cannot_conve=
- caml_string_of_jsbytes("fun_of_yojson: cannot convert function values"),
- cst_opaque_of_yojson_cannot_co=
- caml_string_of_jsbytes("opaque_of_yojson: cannot convert opaque values"),
- cst_hashtbl_of_yojson_tuple_li=
- caml_string_of_jsbytes("hashtbl_of_yojson: tuple list needed"),
- cst_hashtbl_of_yojson_list_nee=
- caml_string_of_jsbytes("hashtbl_of_yojson: list needed"),
- cst_array_of_yojson_list_neede=
- caml_string_of_jsbytes("array_of_yojson: list needed"),
- cst_list_of_yojson_list_needed=
- caml_string_of_jsbytes("list_of_yojson: list needed"),
- cst_triple_of_yojson_invalid_f=
- caml_string_of_jsbytes("triple_of_yojson: invalid format"),
- cst_pair_of_yojson_invalid_for=
- caml_string_of_jsbytes("pair_of_yojson: invalid format"),
- cst_nativeint_of_yojson_intege=
- caml_string_of_jsbytes("nativeint_of_yojson: integer needed"),
- cst_int64_of_yojson_integer_ne=
- caml_string_of_jsbytes("int64_of_yojson: integer needed"),
- cst_int32_of_yojson_integer_ne=
- caml_string_of_jsbytes("int32_of_yojson: integer needed"),
- cst_float_of_yojson_float_need=
- caml_string_of_jsbytes("float_of_yojson: float needed"),
- cst_int_of_yojson_integer_need=
- caml_string_of_jsbytes("int_of_yojson: integer needed"),
- cst_char_of_yojson_string_must=
- caml_string_of_jsbytes
- ("char_of_yojson: string must contain one character only"),
- cst_char_of_yojson_string_of_s=
- caml_string_of_jsbytes("char_of_yojson: string of size one needed"),
- cst_bytes_of_yojson_string_nee=
- caml_string_of_jsbytes("bytes_of_yojson: string needed"),
- cst_string_of_yojson_string_ne=
- caml_string_of_jsbytes("string_of_yojson: string needed"),
- cst_bool_of_yojson_true_false_=
- caml_string_of_jsbytes("bool_of_yojson: true/false needed"),
- cst_unit_of_yojson_Null_needed=
- caml_string_of_jsbytes("unit_of_yojson: `Null needed"),
- cst_Ppx_yojson_conv_lib_Yojson=
- caml_string_of_jsbytes
- ("Ppx_yojson_conv_lib__Yojson_conv.Of_yojson_error"),
- cst$0=caml_string_of_jsbytes(" "),
- cst_of_yojson_trying_to_conver=
- caml_string_of_jsbytes("_of_yojson: trying to convert an empty type"),
- cst_of_yojson_the_empty_list_i$0=
- caml_string_of_jsbytes
- ("_of_yojson: the empty list is an invalid polymorphic variant"),
- cst_of_yojson_a_nested_list_is$0=
- caml_string_of_jsbytes
- ("_of_yojson: a nested list is an invalid polymorphic variant"),
- cst_of_yojson_polymorphic_vari$0=
- caml_string_of_jsbytes
- ("_of_yojson: polymorphic variant tag takes an argument"),
- cst_of_yojson_polymorphic_vari=
- caml_string_of_jsbytes
- ("_of_yojson: polymorphic variant does not take arguments"),
- cst_of_yojson_no_matching_vari=
- caml_string_of_jsbytes("_of_yojson: no matching variant found"),
- cst_of_yojson_cannot_convert_v=
- caml_string_of_jsbytes
- ("_of_yojson: cannot convert values of types resulting from polymorphic record fields"),
- cst_of_yojson_list_instead_of_=
- caml_string_of_jsbytes
- ("_of_yojson: list instead of atom for record expected"),
- cst_extra_fields=caml_string_of_jsbytes("extra fields"),
- cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"),
- cst=caml_string_of_jsbytes(" "),
- cst_of_yojson_unexpected_sum_t=
- caml_string_of_jsbytes("_of_yojson: unexpected sum tag"),
- cst_of_yojson_the_empty_list_i=
- caml_string_of_jsbytes("_of_yojson: the empty list is an invalid sum"),
- cst_of_yojson_a_nested_list_is=
- caml_string_of_jsbytes("_of_yojson: a nested list is an invalid sum"),
- cst_of_yojson_sum_tag_must_be_=
- caml_string_of_jsbytes("_of_yojson: sum tag must be a structured value"),
- cst_of_yojson_sum_tag_does_not=
- caml_string_of_jsbytes("_of_yojson: sum tag does not take arguments"),
- cst_Ppx_yojson_conv_lib_Yojson$0=
- caml_string_of_jsbytes
- ("Ppx_yojson_conv_lib__Yojson_conv_error.No_variant_match"),
- Stdlib_MoreLabels=global_data.Stdlib__MoreLabels,
- Stdlib_ListLabels=global_data.Stdlib__ListLabels,
- Stdlib_Lazy=global_data.Stdlib__Lazy,
- Stdlib_BytesLabels=global_data.Stdlib__BytesLabels,
- Stdlib=global_data.Stdlib,
- CamlinternalLazy=global_data.CamlinternalLazy,
- Stdlib_Nativeint=global_data.Stdlib__Nativeint,
- Stdlib_Int64=global_data.Stdlib__Int64,
- Stdlib_Int32=global_data.Stdlib__Int32,
- Stdlib_StringLabels=global_data.Stdlib__StringLabels,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Ppx_yojson_conv_lib=[0];
- caml_register_global(45,Ppx_yojson_conv_lib,"Ppx_yojson_conv_lib__");
- var Ppx_yojson_conv_lib_Yojsonable=[0];
- caml_register_global
- (46,
- Ppx_yojson_conv_lib_Yojsonable,
- "Ppx_yojson_conv_lib__Yojsonable_intf");
- var
- _b_=[0,-976970511,caml_string_of_jsbytes("")],
- _a_=[0,-976970511,caml_string_of_jsbytes("")],
- _g_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("_of_yojson: polymorphic variant tag "),
- [3,
- 0,
- [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]],
- caml_string_of_jsbytes
- ("%s_of_yojson: polymorphic variant tag %S has incorrect number of arguments")],
- _f_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("_of_yojson: the following record elements were undefined: "),
- [2,0,0]]],
- caml_string_of_jsbytes
- ("%s_of_yojson: the following record elements were undefined: %s")],
- _e_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("_of_yojson: "),
- [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]],
- caml_string_of_jsbytes("%s_of_yojson: %s: %s")],
- _d_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("_of_yojson: sum tag "),
- [3,
- 0,
- [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]],
- caml_string_of_jsbytes
- ("%s_of_yojson: sum tag %S has incorrect number of arguments")],
- _c_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("_of_yojson: tuple of size "),
- [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]],
- caml_string_of_jsbytes("%s_of_yojson: tuple of size %d expected")];
- function yojson_of_unit(param){return 870828711}
- function yojson_of_bool(b){return [0,737456202,b]}
- function yojson_of_string(str){return [0,-976970511,str]}
- function yojson_of_bytes(bytes)
- {return [0,-976970511,caml_call1(Stdlib_BytesLabels[6],bytes)]}
- function yojson_of_char(c)
- {return [0,-976970511,caml_call2(Stdlib_StringLabels[1],1,c)]}
- function yojson_of_int(n){return [0,3654863,n]}
- function yojson_of_float(n){return [0,365180284,n]}
- function yojson_of_int32(n)
- {return [0,-752863768,caml_call1(Stdlib_Int32[14],n)]}
- function yojson_of_int64(n)
- {return [0,-752863768,caml_call1(Stdlib_Int64[14],n)]}
- function yojson_of_nativeint(n)
- {return [0,-752863768,caml_call1(Stdlib_Nativeint[15],n)]}
- function yojson_of_ref(yojson_of_a,rf)
- {return caml_call1(yojson_of_a,rf[1])}
- function yojson_of_lazy_t(yojson_of_a,lv)
- {var
- _I_=runtime.caml_obj_tag(lv),
- _J_=250 === _I_?lv[1]:246 === _I_?caml_call1(CamlinternalLazy[2],lv):lv;
- return caml_call1(yojson_of_a,_J_)}
- function yojson_of_option(yojson_of_a,param)
- {if(param){var x=param[1];return caml_call1(yojson_of_a,x)}
- return 870828711}
- function yojson_of_pair(yojson_of_a,yojson_of_b,param)
- {var b=param[2],a=param[1],_H_=[0,caml_call1(yojson_of_b,b),0];
- return [0,848054398,[0,caml_call1(yojson_of_a,a),_H_]]}
- function yojson_of_triple(yojson_of_a,yojson_of_b,yojson_of_c,param)
- {var
- c=param[3],
- b=param[2],
- a=param[1],
- _F_=[0,caml_call1(yojson_of_c,c),0],
- _G_=[0,caml_call1(yojson_of_b,b),_F_];
- return [0,848054398,[0,caml_call1(yojson_of_a,a),_G_]]}
- function yojson_of_list(yojson_of_a,lst)
- {var _E_=caml_call2(Stdlib_ListLabels[21],yojson_of_a,lst);
- return [0,848054398,caml_call1(Stdlib_ListLabels[9],_E_)]}
- function yojson_of_array(yojson_of_a,ar)
- {var lst_ref=[0,0],_B_=ar.length - 1 - 1 | 0;
- if(! (_B_ < 0))
- {var i=_B_;
- for(;;)
- {var _C_=lst_ref[1];
- lst_ref[1]
- =
- [0,caml_call1(yojson_of_a,caml_check_bound(ar,i)[1 + i]),_C_];
- var _D_=i - 1 | 0;
- if(0 !== i){var i=_D_;continue}
- break}}
- return [0,848054398,lst_ref[1]]}
- function yojson_of_hashtbl(yojson_of_key,yojson_of_val,htbl)
- {function coll(k,v,acc)
- {var _A_=[0,caml_call1(yojson_of_val,v),0];
- return [0,[0,848054398,[0,caml_call1(yojson_of_key,k),_A_]],acc]}
- return [0,848054398,caml_call3(Stdlib_MoreLabels[1][14],coll,htbl,0)]}
- function yojson_of_opaque(param){return _a_}
- function yojson_of_fun(param){return _b_}
- var
- Of_yojson_error=[248,cst_Ppx_yojson_conv_lib_Yojson,caml_fresh_oo_id(0)],
- record_check_extra_fields=[0,1];
- function of_yojson_error_exn(exc,yojson)
- {throw [0,Of_yojson_error,exc,yojson]}
- function of_yojson_error(what,yojson)
- {throw [0,Of_yojson_error,[0,Stdlib[7],what],yojson]}
- function unit_of_yojson(yojson)
- {return 870828711 === yojson
- ?0
- :of_yojson_error(cst_unit_of_yojson_Null_needed,yojson)}
- function bool_of_yojson(yojson)
- {if(typeof yojson !== "number" && 737456202 === yojson[1])
- {var v=yojson[2];return v}
- return of_yojson_error(cst_bool_of_yojson_true_false_,yojson)}
- function string_of_yojson(yojson)
- {if(typeof yojson !== "number" && -976970511 === yojson[1])
- {var str=yojson[2];return str}
- return of_yojson_error(cst_string_of_yojson_string_ne,yojson)}
- function bytes_of_yojson(yojson)
- {if(typeof yojson !== "number" && -976970511 === yojson[1])
- {var str=yojson[2];return caml_call1(Stdlib_BytesLabels[5],str)}
- return of_yojson_error(cst_bytes_of_yojson_string_nee,yojson)}
- function char_of_yojson(yojson)
- {if(typeof yojson !== "number" && -976970511 === yojson[1])
- {var str=yojson[2];
- if(1 !== runtime.caml_ml_string_length(str))
- of_yojson_error(cst_char_of_yojson_string_must,yojson);
- return runtime.caml_string_get(str,0)}
- return of_yojson_error(cst_char_of_yojson_string_of_s,yojson)}
- function int_of_yojson(yojson)
- {if(typeof yojson !== "number" && 3654863 === yojson[1])
- {var v=yojson[2];return v}
- return of_yojson_error(cst_int_of_yojson_integer_need,yojson)}
- function float_of_yojson(yojson)
- {if(typeof yojson !== "number")
- {var _z_=yojson[1];
- if(-752863768 === _z_)
- {var str=yojson[2];return runtime.caml_float_of_string(str)}
- if(3654863 === _z_){var i=yojson[2];return i}
- if(365180284 === _z_){var v=yojson[2];return v}}
- return of_yojson_error(cst_float_of_yojson_float_need,yojson)}
- function int32_of_yojson(yojson)
- {if(typeof yojson !== "number")
- {var _y_=yojson[1];
- if(-752863768 === _y_)
- {var str=yojson[2];return caml_int_of_string(str)}
- if(3654863 === _y_){var v=yojson[2];return v}}
- return of_yojson_error(cst_int32_of_yojson_integer_ne,yojson)}
- function int64_of_yojson(yojson)
- {if(typeof yojson !== "number")
- {var _x_=yojson[1];
- if(-752863768 === _x_)
- {var str=yojson[2];return runtime.caml_int64_of_string(str)}
- if(3654863 === _x_)
- {var v=yojson[2];return runtime.caml_int64_of_int32(v)}}
- return of_yojson_error(cst_int64_of_yojson_integer_ne,yojson)}
- function nativeint_of_yojson(yojson)
- {if(typeof yojson !== "number")
- {var _w_=yojson[1];
- if(-752863768 === _w_)
- {var str=yojson[2];return caml_int_of_string(str)}
- if(3654863 === _w_){var v=yojson[2];return v}}
- return of_yojson_error(cst_nativeint_of_yojson_intege,yojson)}
- function ref_of_yojson(a_of_yojson,yojson)
- {return [0,caml_call1(a_of_yojson,yojson)]}
- function lazy_t_of_yojson(a_of_yojson,yojson)
- {var _v_=caml_call1(a_of_yojson,yojson);
- return caml_call1(Stdlib_Lazy[4],_v_)}
- function option_of_yojson(a_of_yojson,yojson)
- {return 870828711 === yojson?0:[0,caml_call1(a_of_yojson,yojson)]}
- function pair_of_yojson(a_of_yojson,b_of_yojson,yojson)
- {if(typeof yojson !== "number" && 848054398 === yojson[1])
- {var _t_=yojson[2];
- if(_t_)
- {var _u_=_t_[2];
- if(_u_ && ! _u_[2])
- {var
- b_yojson=_u_[1],
- a_yojson=_t_[1],
- a=caml_call1(a_of_yojson,a_yojson),
- b=caml_call1(b_of_yojson,b_yojson);
- return [0,a,b]}}}
- return of_yojson_error(cst_pair_of_yojson_invalid_for,yojson)}
- function triple_of_yojson(a_of_yojson,b_of_yojson,c_of_yojson,yojson)
- {if(typeof yojson !== "number" && 848054398 === yojson[1])
- {var _q_=yojson[2];
- if(_q_)
- {var _r_=_q_[2];
- if(_r_)
- {var _s_=_r_[2];
- if(_s_ && ! _s_[2])
- {var
- c_yojson=_s_[1],
- b_yojson=_r_[1],
- a_yojson=_q_[1],
- a=caml_call1(a_of_yojson,a_yojson),
- b=caml_call1(b_of_yojson,b_yojson),
- c=caml_call1(c_of_yojson,c_yojson);
- return [0,a,b,c]}}}}
- return of_yojson_error(cst_triple_of_yojson_invalid_f,yojson)}
- function list_of_yojson(a_of_yojson,yojson)
- {if(typeof yojson !== "number" && 848054398 === yojson[1])
- {var
- lst=yojson[2],
- rev_lst=caml_call2(Stdlib_ListLabels[21],a_of_yojson,lst);
- return caml_call1(Stdlib_ListLabels[9],rev_lst)}
- return of_yojson_error(cst_list_of_yojson_list_needed,yojson)}
- function array_of_yojson(a_of_yojson,yojson)
- {if(typeof yojson !== "number" && 848054398 === yojson[1])
- {var _o_=yojson[2];
- if(_o_)
- {var
- t=_o_[2],
- h=_o_[1],
- len=caml_call1(Stdlib_ListLabels[1],t) + 1 | 0,
- res=runtime.caml_make_vect(len,caml_call1(a_of_yojson,h)),
- i=1,
- param=t;
- for(;;)
- {if(param)
- {var t$0=param[2],h$0=param[1],_p_=caml_call1(a_of_yojson,h$0);
- caml_check_bound(res,i)[1 + i] = _p_;
- var i$0=i + 1 | 0,i=i$0,param=t$0;
- continue}
- return res}}
- return [0]}
- return of_yojson_error(cst_array_of_yojson_list_neede,yojson)}
- function hashtbl_of_yojson(key_of_yojson,val_of_yojson,yojson)
- {if(typeof yojson !== "number" && 848054398 === yojson[1])
- {var
- lst=yojson[2],
- htbl=caml_call2(Stdlib_MoreLabels[1][1],0,0),
- act=
- function(param)
- {if(typeof param !== "number" && 848054398 === param[1])
- {var _k_=param[2];
- if(_k_)
- {var _l_=_k_[2];
- if(_l_ && ! _l_[2])
- {var
- v_yojson=_l_[1],
- k_yojson=_k_[1],
- _m_=caml_call1(val_of_yojson,v_yojson),
- _n_=caml_call1(key_of_yojson,k_yojson);
- return caml_call3(Stdlib_MoreLabels[1][5],htbl,_n_,_m_)}}}
- return of_yojson_error(cst_hashtbl_of_yojson_tuple_li,yojson)};
- caml_call2(Stdlib_ListLabels[17],act,lst);
- return htbl}
- return of_yojson_error(cst_hashtbl_of_yojson_list_nee,yojson)}
- function opaque_of_yojson(yojson)
- {return of_yojson_error(cst_opaque_of_yojson_cannot_co,yojson)}
- function fun_of_yojson(yojson)
- {return of_yojson_error(cst_fun_of_yojson_cannot_conve,yojson)}
- var
- Ppx_yojson_conv_lib_Yojson_con=
- [0,
- yojson_of_unit,
- yojson_of_bool,
- yojson_of_string,
- yojson_of_bytes,
- yojson_of_char,
- yojson_of_int,
- yojson_of_float,
- yojson_of_int32,
- yojson_of_int64,
- yojson_of_nativeint,
- yojson_of_ref,
- yojson_of_lazy_t,
- yojson_of_option,
- yojson_of_pair,
- yojson_of_triple,
- yojson_of_list,
- yojson_of_array,
- yojson_of_hashtbl,
- yojson_of_opaque,
- yojson_of_fun,
- Of_yojson_error,
- record_check_extra_fields,
- of_yojson_error,
- of_yojson_error_exn,
- unit_of_yojson,
- bool_of_yojson,
- string_of_yojson,
- bytes_of_yojson,
- char_of_yojson,
- int_of_yojson,
- float_of_yojson,
- int32_of_yojson,
- int64_of_yojson,
- nativeint_of_yojson,
- ref_of_yojson,
- lazy_t_of_yojson,
- option_of_yojson,
- pair_of_yojson,
- triple_of_yojson,
- list_of_yojson,
- array_of_yojson,
- hashtbl_of_yojson,
- opaque_of_yojson,
- fun_of_yojson,
- [0,
- yojson_of_unit,
- yojson_of_bool,
- yojson_of_string,
- yojson_of_bytes,
- yojson_of_char,
- yojson_of_int,
- yojson_of_float,
- yojson_of_int32,
- yojson_of_int64,
- yojson_of_nativeint,
- yojson_of_ref,
- yojson_of_lazy_t,
- yojson_of_option,
- yojson_of_list,
- yojson_of_array,
- yojson_of_hashtbl,
- unit_of_yojson,
- bool_of_yojson,
- string_of_yojson,
- bytes_of_yojson,
- char_of_yojson,
- int_of_yojson,
- float_of_yojson,
- int32_of_yojson,
- int64_of_yojson,
- nativeint_of_yojson,
- ref_of_yojson,
- lazy_t_of_yojson,
- option_of_yojson,
- list_of_yojson,
- array_of_yojson,
- hashtbl_of_yojson]];
- caml_register_global
- (57,Ppx_yojson_conv_lib_Yojson_con,"Ppx_yojson_conv_lib__Yojson_conv");
- var sprintf=Stdlib_Printf[4];
- function tuple_of_size_n_expected(loc,n,yojson)
- {return of_yojson_error(caml_call3(sprintf,_c_,loc,n),yojson)}
- function stag_no_args(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_sum_tag_does_not),
- yojson)}
- function stag_incorrect_n_args(loc,tag,yojson)
- {var msg=caml_call3(sprintf,_d_,loc,tag);
- return of_yojson_error(msg,yojson)}
- function stag_takes_args(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_sum_tag_must_be_),
- yojson)}
- function nested_list_invalid_sum(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is),
- yojson)}
- function empty_list_invalid_sum(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i),
- yojson)}
- function unexpected_stag(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_unexpected_sum_t),
- yojson)}
- function record_superfluous_fields(what,loc,rev_fld_names,yojson)
- {var
- _j_=caml_call1(Stdlib_ListLabels[9],rev_fld_names),
- fld_names_str=caml_call2(Stdlib_StringLabels[6],cst,_j_),
- msg=caml_call4(sprintf,_e_,loc,what,fld_names_str);
- return of_yojson_error(msg,yojson)}
- function record_duplicate_fields(loc,rev_fld_names,yojson)
- {return record_superfluous_fields
- (cst_duplicate_fields,loc,rev_fld_names,yojson)}
- function record_extra_fields(loc,rev_fld_names,yojson)
- {return record_superfluous_fields
- (cst_extra_fields,loc,rev_fld_names,yojson)}
- function record_get_undefined_loop(fields,param)
- {var fields$0=fields,param$0=param;
- for(;;)
- {if(param$0)
- {var _h_=param$0[1];
- if(_h_[1])
- {var
- param$1=param$0[2],
- field=_h_[2],
- fields$1=[0,field,fields$0],
- fields$0=fields$1,
- param$0=param$1;
- continue}
- var param$2=param$0[2],param$0=param$2;
- continue}
- var _i_=caml_call1(Stdlib_ListLabels[9],fields$0);
- return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}}
- function record_undefined_elements(loc,yojson,lst)
- {var
- undefined$0=record_get_undefined_loop(0,lst),
- msg=caml_call3(sprintf,_f_,loc,undefined$0);
- return of_yojson_error(msg,yojson)}
- function record_list_instead_atom(loc,yojson)
- {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_list_instead_of_);
- return of_yojson_error(msg,yojson)}
- function record_poly_field_value(loc,yojson)
- {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_cannot_convert_v);
- return of_yojson_error(msg,yojson)}
- var
- No_variant_match=
- [248,cst_Ppx_yojson_conv_lib_Yojson$0,caml_fresh_oo_id(0)];
- function no_variant_match(param){throw No_variant_match}
- function no_matching_variant_found(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_no_matching_vari),
- yojson)}
- function ptag_no_args(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari),
- yojson)}
- function ptag_incorrect_n_args(loc,cnstr,yojson)
- {var msg=caml_call3(sprintf,_g_,loc,cnstr);
- return of_yojson_error(msg,yojson)}
- function ptag_takes_args(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari$0),
- yojson)}
- function nested_list_invalid_poly_var(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is$0),
- yojson)}
- function empty_list_invalid_poly_var(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i$0),
- yojson)}
- function empty_type(loc,yojson)
- {return of_yojson_error
- (caml_call2(Stdlib[28],loc,cst_of_yojson_trying_to_conver),
- yojson)}
- var
- Ppx_yojson_conv_lib_Yojson_con$0=
- [0,
- sprintf,
- tuple_of_size_n_expected,
- stag_no_args,
- stag_incorrect_n_args,
- stag_takes_args,
- nested_list_invalid_sum,
- empty_list_invalid_sum,
- unexpected_stag,
- record_superfluous_fields,
- record_duplicate_fields,
- record_extra_fields,
- record_get_undefined_loop,
- record_undefined_elements,
- record_list_instead_atom,
- record_poly_field_value,
- No_variant_match,
- no_variant_match,
- no_matching_variant_found,
- ptag_no_args,
- ptag_incorrect_n_args,
- ptag_takes_args,
- nested_list_invalid_poly_var,
- empty_list_invalid_poly_var,
- empty_type];
- caml_register_global
- (59,
- Ppx_yojson_conv_lib_Yojson_con$0,
- "Ppx_yojson_conv_lib__Yojson_conv_error");
- var Option=[0];
- function symbol(x){return x[1]}
- var Ppx_yojson_conv_lib$0=[0,Option,symbol];
- caml_register_global(60,Ppx_yojson_conv_lib$0,"Ppx_yojson_conv_lib");
- return}
- (globalThis));
-
-
-//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_equal=runtime.caml_equal,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_mul=runtime.caml_mul,
- caml_register_global=runtime.caml_register_global,
- caml_string_equal=runtime.caml_string_equal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
- {return f.length == 7
- ?f(a0,a1,a2,a3,a4,a5,a6)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
- function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
- {return f.length == 9
- ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
- var
- global_data=runtime.caml_get_global_data(),
- cst$3=caml_string_of_jsbytes("."),
- cst$4=caml_string_of_jsbytes("."),
- partial=
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [12,
- 91,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [17,
- [0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],
- [12,93,[17,0,[12,32,[17,0,0]]]]]]]]]],
- cst$5=caml_string_of_jsbytes("."),
- cst$6=caml_string_of_jsbytes("."),
- partial$0=[11,caml_string_of_jsbytes(""),0],
- partial$1=
- [12,
- 91,
- [17,
- [0,caml_string_of_jsbytes("@,"),0,0],
- [15,
- [12,
- 93,
- [17,
- 0,
- [17,
- [0,caml_string_of_jsbytes("@,"),0,0],
- [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]],
- partial$2=[0,caml_string_of_jsbytes("@ "),1,0],
- partial$3=
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [12,
- 44,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [11,
- caml_string_of_jsbytes("output:"),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [12,
- 44,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [11,caml_string_of_jsbytes("body:"),[17,partial$2,partial$1]]]]]]]]]]],
- cst$7=caml_string_of_jsbytes("."),
- partial$4=[11,caml_string_of_jsbytes(""),0],
- partial$5=
- [12,
- 91,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [12,
- 93,
- [17,
- 0,
- [17,0,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]]],
- partial$6=
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- partial$7=
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [12,
- 91,
- [17,
- [0,caml_string_of_jsbytes("@,"),0,0],
- [15,
- [17,
- 0,
- [11,
- caml_string_of_jsbytes("],"),
- [17,
- [0,caml_string_of_jsbytes("@,"),0,0],
- [11,
- caml_string_of_jsbytes("body:"),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [18,partial$6,partial$5]]]]]]]]]]],
- cst_unreachable_due_to_the_is_=
- caml_string_of_jsbytes("unreachable due to the [is_subscope_call] test"),
- cst_unreachable_due_to_the_is_$0=
- caml_string_of_jsbytes
- ("unreachable due to the [is_subscope_input_var_def] test"),
- cst$13=caml_string_of_jsbytes("]"),
- cst$14=caml_string_of_jsbytes("["),
- cst_expected_variable_definiti=
- caml_string_of_jsbytes
- (" ]): expected variable definition (function output), found: "),
- cst$15=caml_string_of_jsbytes(", "),
- cst_Invalid_function_call=
- caml_string_of_jsbytes("Invalid function call ([ "),
- cst_expected_variable_definiti$0=
- caml_string_of_jsbytes
- (" ]): expected variable definition (function output), found: end of tokens"),
- cst$16=caml_string_of_jsbytes(", "),
- cst_Invalid_function_call$0=
- caml_string_of_jsbytes("Invalid function call ([ "),
- cst_Unexpected_event=caml_string_of_jsbytes("Unexpected event: "),
- cst_Missing_function_output_va=
- caml_string_of_jsbytes("Missing function output variable definition."),
- cst_Invalid_start_of_function_=
- caml_string_of_jsbytes("Invalid start of function call."),
- cst_input$0=caml_string_of_jsbytes("input"),
- cst_output$0=caml_string_of_jsbytes("output"),
- cst$8=caml_string_of_jsbytes(" ])"),
- cst$9=caml_string_of_jsbytes(", "),
- cst$10=caml_string_of_jsbytes(" ])"),
- cst$11=caml_string_of_jsbytes(", "),
- cst$12=caml_string_of_jsbytes(", "),
- cst_body=caml_string_of_jsbytes("body"),
- cst_inputs=caml_string_of_jsbytes("inputs"),
- cst_name=caml_string_of_jsbytes("name"),
- cst_fun_calls=caml_string_of_jsbytes("fun_calls"),
- cst_value=caml_string_of_jsbytes("value"),
- cst_name$0=caml_string_of_jsbytes("name"),
- cst_pos=caml_string_of_jsbytes("pos"),
- cst_output=caml_string_of_jsbytes("output"),
- cst_body$0=caml_string_of_jsbytes("body"),
- cst_input=caml_string_of_jsbytes("input"),
- cst_fun_name=caml_string_of_jsbytes("fun_name"),
- cst_days=caml_string_of_jsbytes("days"),
- cst_months=caml_string_of_jsbytes("months"),
- cst_years=caml_string_of_jsbytes("years"),
- cst_empty_duration=caml_string_of_jsbytes("empty duration"),
- cst=caml_string_of_jsbytes("\xe2\x80\xa6"),
- cst$2=caml_string_of_jsbytes(""),
- cst$1=caml_string_of_jsbytes("-"),
- cst$0=caml_string_of_jsbytes(""),
- cst_law_headings=caml_string_of_jsbytes("law_headings"),
- cst_end_column=caml_string_of_jsbytes("end_column"),
- cst_end_line=caml_string_of_jsbytes("end_line"),
- cst_start_column=caml_string_of_jsbytes("start_column"),
- cst_start_line=caml_string_of_jsbytes("start_line"),
- cst_filename=caml_string_of_jsbytes("filename"),
- cst_Runtime_ocaml_Runtime_Empt=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.EmptyError"),
- cst_Runtime_ocaml_Runtime_Asse=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.AssertionFailed"),
- cst_Runtime_ocaml_Runtime_Conf=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.ConflictError"),
- cst_Runtime_ocaml_Runtime_Unco=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.UncomparableDurations"),
- cst_Runtime_ocaml_Runtime_Indi=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.IndivisableDurations"),
- cst_Runtime_ocaml_Runtime_Impo=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.ImpossibleDate"),
- cst_Runtime_ocaml_Runtime_NoVa=
- caml_string_of_jsbytes("Runtime_ocaml.Runtime.NoValueProvided"),
- Stdlib_String=global_data.Stdlib__String,
- Stdlib_Format=global_data.Stdlib__Format,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib_Option=global_data.Stdlib__Option,
- Stdlib=global_data.Stdlib,
- Stdlib_List=global_data.Stdlib__List,
- CalendarLib=global_data.CalendarLib,
- Q=global_data.Q,
- Z=global_data.Z,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Yojson=global_data.Yojson,
- Ppx_yojson_conv_lib_Yojson_con=
- global_data.Ppx_yojson_conv_lib__Yojson_conv,
- Stdlib_Map=global_data.Stdlib__Map,
- Runtime_ocaml=[0];
- caml_register_global(117,Runtime_ocaml,"Runtime_ocaml");
- var
- _v_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [11,
- caml_string_of_jsbytes("@ %s:@ %a@]")],
- _w_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" line "),
- [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]],
- caml_string_of_jsbytes("%s line %d to %d")],
- _x_=
- [0,
- [11,caml_string_of_jsbytes("no_pos"),0],
- caml_string_of_jsbytes("no_pos")],
- _y_=
- [0,
- [17,[0,caml_string_of_jsbytes("@ "),1,0],0],
- caml_string_of_jsbytes("@ ")],
- _z_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _A_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [11,
- caml_string_of_jsbytes(""),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(": "),
- [15,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [11,
- caml_string_of_jsbytes("computed from"),
- [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,58,partial]]]]]]]]]],
- caml_string_of_jsbytes
- ("@[@ %s: %a@ computed from@ :@ @[[@ %a@;<1 -2>]@] @]")],
- _N_=
- [0,
- [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(";@ ")],
- _L_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]],
- caml_string_of_jsbytes(",@,")],
- _K_=
- [0,
- [2,0,[11,caml_string_of_jsbytes(": "),[15,0]]],
- caml_string_of_jsbytes("%s: %a")],
- _B_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")],
- _C_=
- [0,[11,caml_string_of_jsbytes("fun"),0],caml_string_of_jsbytes("fun")],
- _D_=[0,[9,0,0],caml_string_of_jsbytes("%b")],
- _E_=
- [0,
- [2,0,[11,caml_string_of_jsbytes("\xe2\x82\xac"),0]],
- caml_string_of_jsbytes("%s\xe2\x82\xac")],
- _F_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
- _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _H_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _I_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _J_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
- _M_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" = {"),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,[17,0,0]]]]]]]],
- caml_string_of_jsbytes("@[%s = {@ %a@;<1 -2>}@]")],
- _O_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [12,
- 91,
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [15,
- [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,[17,0,0]]]]]]],
- caml_string_of_jsbytes("@[[@ %a@;<1 -2>]@]")],
- _P_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _Q_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _R_=[0,0],
- _S_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [11,
- caml_string_of_jsbytes(""),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" :="),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [12,
- 123,
- [18,
- [1,[0,partial$0,caml_string_of_jsbytes("")]],
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [11,caml_string_of_jsbytes("input:"),partial$3]]]]]]]]]],
- caml_string_of_jsbytes
- ("@[@ %s :=@ {@[@ input:@ %a,@ output:@ %a,@ body:@ [@,%a]@]@,@]@,}")],
- _T_=[0,0],
- _U_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [11,
- caml_string_of_jsbytes(""),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" :="),
- [17,
- [0,caml_string_of_jsbytes("@ "),1,0],
- [12,
- 123,
- [18,
- [1,[0,partial$4,caml_string_of_jsbytes("")]],
- [17,
- [0,caml_string_of_jsbytes("@,"),0,0],
- [11,caml_string_of_jsbytes("inputs:"),partial$7]]]]]]]]]],
- caml_string_of_jsbytes
- ("@[@ %s :=@ {@[@,inputs:@ @[[@,%a@]],@,body:@ @[[@ %a@ ]@]@]@]@,}")],
- _V_=
- [0,
- [17,[0,caml_string_of_jsbytes("@ "),1,0],0],
- caml_string_of_jsbytes("@ ")],
- _W_=[0,[17,4,0],caml_string_of_jsbytes("@.")],
- _Y_=[0,0,caml_string_of_jsbytes("")],
- _X_=
- [0,
- [18,
- [1,
- [0,
- [11,caml_string_of_jsbytes(""),0],
- caml_string_of_jsbytes("")]],
- [15,[17,0,0]]],
- caml_string_of_jsbytes("@[%a@]")],
- _ad_=[0,0],
- _ae_=[0,0],
- _af_=[0,0],
- _ac_=
- [0,
- [11,
- caml_string_of_jsbytes("An error occurred while parsing raw events: "),
- [2,0,[12,10,0]]],
- caml_string_of_jsbytes
- ("An error occurred while parsing raw events: %s\n")],
- ___=
- [0,
- [11,caml_string_of_jsbytes("BeginCall([ "),0],
- caml_string_of_jsbytes("BeginCall([ ")],
- _$_=
- [0,
- [11,caml_string_of_jsbytes("EndCall([ "),0],
- caml_string_of_jsbytes("EndCall([ ")],
- _aa_=
- [0,
- [11,
- caml_string_of_jsbytes("VariableDefinition([ "),
- [2,0,[11,caml_string_of_jsbytes(" ], "),[2,0,[12,41,0]]]]],
- caml_string_of_jsbytes("VariableDefinition([ %s ], %s)")],
- _ab_=
- [0,
- [11,caml_string_of_jsbytes("DecisionTaken(_)"),0],
- caml_string_of_jsbytes("DecisionTaken(_)")],
- _s_=[0,-976970511,caml_string_of_jsbytes("VarComputation")],
- _t_=[0,-976970511,caml_string_of_jsbytes("FunCall")],
- _u_=[0,-976970511,caml_string_of_jsbytes("SubScopeCall")],
- _h_=[0,848054398,[0,[0,-976970511,caml_string_of_jsbytes("Unit")],0]],
- _i_=
- [0,
- 848054398,
- [0,[0,-976970511,caml_string_of_jsbytes("Unembeddable")],0]],
- _j_=[0,-976970511,caml_string_of_jsbytes("Bool")],
- _k_=[0,-976970511,caml_string_of_jsbytes("Money")],
- _l_=[0,-976970511,caml_string_of_jsbytes("Integer")],
- _m_=[0,-976970511,caml_string_of_jsbytes("Decimal")],
- _n_=[0,-976970511,caml_string_of_jsbytes("Date")],
- _o_=[0,-976970511,caml_string_of_jsbytes("Duration")],
- _p_=[0,-976970511,caml_string_of_jsbytes("Enum")],
- _q_=[0,-976970511,caml_string_of_jsbytes("Struct")],
- _r_=[0,-976970511,caml_string_of_jsbytes("Array")],
- _f_=
- [0,
- [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
- caml_string_of_jsbytes(",@ ")],
- _e_=[0,[4,0,0,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%d %s")],
- _g_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _c_=[0,[15,0],caml_string_of_jsbytes("%a")],
- _b_=[0,-1014801911,0],
- _d_=
- [0,[2,0,[15,[12,46,[15,[2,0,0]]]]],caml_string_of_jsbytes("%s%a.%a%s")],
- _a_=[0,[8,[0,0,0],0,[0,2],0],caml_string_of_jsbytes("%.2f")];
- function yojson_of_source_position(param)
- {var
- v_law_headings=param[6],
- v_end_column=param[5],
- v_end_line=param[4],
- v_start_column=param[3],
- v_start_line=param[2],
- v_filename=param[1],
- arg=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],
- Ppx_yojson_conv_lib_Yojson_con[45][3],
- v_law_headings),
- bnds=[0,[0,cst_law_headings,arg],0],
- arg$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_column),
- bnds$0=[0,[0,cst_end_column,arg$0],bnds],
- arg$1=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_line),
- bnds$1=[0,[0,cst_end_line,arg$1],bnds$0],
- arg$2=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_column),
- bnds$2=[0,[0,cst_start_column,arg$2],bnds$1],
- arg$3=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_line),
- bnds$3=[0,[0,cst_start_line,arg$3],bnds$2],
- arg$4=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v_filename),
- bnds$4=[0,[0,cst_filename,arg$4],bnds$3];
- return [0,963043957,bnds$4]}
- var
- EmptyError=[248,cst_Runtime_ocaml_Runtime_Empt,caml_fresh_oo_id(0)],
- AssertionFailed=[248,cst_Runtime_ocaml_Runtime_Asse,caml_fresh_oo_id(0)],
- ConflictError=[248,cst_Runtime_ocaml_Runtime_Conf,caml_fresh_oo_id(0)],
- UncomparableDurations=
- [248,cst_Runtime_ocaml_Runtime_Unco,caml_fresh_oo_id(0)],
- IndivisableDurations=
- [248,cst_Runtime_ocaml_Runtime_Indi,caml_fresh_oo_id(0)],
- ImpossibleDate=[248,cst_Runtime_ocaml_Runtime_Impo,caml_fresh_oo_id(0)],
- NoValueProvided=[248,cst_Runtime_ocaml_Runtime_NoVa,caml_fresh_oo_id(0)];
- function money_of_cents_string(cents){return caml_call1(Z[5],cents)}
- function money_of_units_int(units){return caml_call2(Z[54],units,100)}
- function money_of_cents_integer(cents){return cents}
- function money_to_float(m){return caml_call1(Z[30],m) / 100.}
- function money_of_decimal(d)
- {var _cE_=caml_call1(Q[9],100),_cF_=caml_call2(Q[40],d,_cE_);
- return caml_call1(Q[29],_cF_)}
- function money_to_string(m)
- {var
- _cA_=caml_call1(Q[9],100),
- _cB_=caml_call1(Q[8],m),
- _cC_=caml_call2(Q[55],_cB_,_cA_),
- _cD_=caml_call1(Q[35],_cC_);
- return caml_call2(Stdlib_Format[133],_a_,_cD_)}
- function money_to_cents(m){return m}
- function money_round(m)
- {var match=runtime.ml_z_div_rem(m,100),cents=match[2],units=match[1];
- if(runtime.caml_lessthan(caml_call1(Z[10],cents),50))
- return caml_call2(Z[54],units,100);
- var _cy_=runtime.ml_z_sign(units),_cz_=caml_call2(Z[52],units,_cy_);
- return caml_call2(Z[54],_cz_,100)}
- function decimal_of_string(d){return caml_call1(Q[15],d)}
- function decimal_to_float(d){return caml_call1(Q[35],d)}
- function decimal_of_float(d){return caml_call1(Q[14],d)}
- function decimal_of_integer(d){return caml_call1(Q[8],d)}
- function decimal_to_string(max_prec_digits,i)
- {var
- sign=caml_call1(Q[20],i),
- _cl_=caml_call1(Q[16],i),
- n=caml_call1(Z[10],_cl_),
- _cm_=caml_call1(Q[17],i),
- d=caml_call1(Z[10],_cm_),
- int_part=caml_call2(Z[18],n,d),
- n$0=[0,caml_call2(Z[19],n,d)],
- digits=[0,0];
- function leading_zeroes(digits)
- {function _cx_(digit,num_leading_zeroes)
- {if(3455931 <= num_leading_zeroes[1])return num_leading_zeroes;
- var i=num_leading_zeroes[2];
- return caml_equal(digit,Z[2])
- ?[0,-1014801911,i + 1 | 0]
- :[0,3455931,i]}
- var match=caml_call3(Stdlib_List[26],_cx_,digits,_b_);
- if(3455931 <= match[1]){var i=match[2];return i}
- var i$0=match[2];
- return i$0}
- for(;;)
- {if(runtime.caml_notequal(n$0[1],Z[2]))
- {var _cn_=leading_zeroes(digits[1]);
- if
- ((caml_call1(Stdlib_List[1],digits[1]) - _cn_ | 0)
- <
- max_prec_digits)
- {n$0[1] = caml_call2(Z[14],n$0[1],10);
- var _co_=digits[1];
- digits[1] = [0,caml_call2(Z[18],n$0[1],d),_co_];
- n$0[1] = caml_call2(Z[19],n$0[1],d);
- continue}}
- var
- _cp_=leading_zeroes(digits[1]),
- _cq_=
- (caml_call1(Stdlib_List[1],digits[1]) - _cp_ | 0)
- ===
- max_prec_digits
- ?cst
- :cst$2,
- _cr_=caml_call1(Stdlib_List[9],digits[1]),
- _cs_=
- function(fmt,digit)
- {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)},
- _ct_=[0,function(fmt,param){return 0}],
- _cu_=caml_call2(Stdlib_Format[123],_ct_,_cs_),
- _cv_=Z[36],
- _cw_=0 <= sign?cst$0:cst$1;
- return caml_call7
- (Stdlib_Format[133],_d_,_cw_,_cv_,int_part,_cu_,_cr_,_cq_)}}
- function decimal_round(q)
- {var
- n=caml_call1(Q[16],q),
- d=caml_call1(Q[17],q),
- _ci_=caml_call2(Z[54],2,d),
- _cj_=caml_call2(Z[54],2,n),
- _ck_=runtime.ml_z_fdiv(caml_call2(Z[52],_cj_,d),_ci_);
- return caml_call1(Q[8],_ck_)}
- function decimal_of_money(m)
- {var _cg_=caml_call1(Q[9],100),_ch_=caml_call1(Q[8],m);
- return caml_call2(Q[42],_ch_,_cg_)}
- function integer_of_string(s){return caml_call1(Z[5],s)}
- function integer_to_string(i){return caml_call1(Z[31],i)}
- function integer_to_int(i){return caml_call1(Z[29],i)}
- function integer_of_int(i){return i}
- function integer_exponentiation(i,e){return runtime.ml_z_pow(i,e)}
- var integer_log2=Z[47];
- function year_of_date(d){return caml_call1(CalendarLib[9][17],d)}
- function month_number_of_date(d)
- {var _cf_=caml_call1(CalendarLib[9][16],d);
- return caml_call1(CalendarLib[9][35],_cf_)}
- function day_of_month_of_date(d){return caml_call1(CalendarLib[9][13],d)}
- function date_of_numbers(year,month,day)
- {try
- {var _cd_=caml_call3(CalendarLib[9][3],year,month,day);return _cd_}
- catch(_ce_){throw ImpossibleDate}}
- function date_to_string(d){return caml_call1(CalendarLib[13][8][5],d)}
- function first_day_of_month(d)
- {var
- _cb_=caml_call1(CalendarLib[9][16],d),
- _cc_=caml_call1(CalendarLib[9][35],_cb_);
- return date_of_numbers(caml_call1(CalendarLib[9][17],d),_cc_,1)}
- function last_day_of_month(d)
- {var
- _b__=caml_call1(CalendarLib[9][11],d),
- _b$_=caml_call1(CalendarLib[9][16],d),
- _ca_=caml_call1(CalendarLib[9][35],_b$_);
- return date_of_numbers(caml_call1(CalendarLib[9][17],d),_ca_,_b__)}
- function duration_of_numbers(year,month,day)
- {return caml_call3(CalendarLib[9][37][8],year,month,day)}
- function duration_to_string(d)
- {var
- match=caml_call1(CalendarLib[9][37][17],d),
- z=match[3],
- y=match[2],
- x=match[1],
- _b5_=[0,[0,x,cst_years],[0,[0,y,cst_months],[0,[0,z,cst_days],0]]];
- function _b6_(param){var a=param[1];return 0 !== a?1:0}
- var to_print=caml_call2(Stdlib_List[41],_b6_,_b5_);
- if(to_print)
- {var
- _b7_=
- function(fmt,param)
- {var l=param[2],d=param[1];
- return caml_call4(Stdlib_Format[129],fmt,_e_,d,l)},
- _b8_=
- [0,
- function(fmt,param){return caml_call2(Stdlib_Format[129],fmt,_f_)}],
- _b9_=caml_call2(Stdlib_Format[123],_b8_,_b7_);
- return caml_call3(Stdlib_Format[133],_g_,_b9_,to_print)}
- return cst_empty_duration}
- function duration_to_years_months_days(d)
- {return caml_call1(CalendarLib[9][37][17],d)}
- function yojson_of_runtime_value(param)
- {if(typeof param === "number")
- return 0 === param?_h_:_i_;
- else
- switch(param[0])
- {case 0:
- var
- v0$4=param[1],
- v0$5=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][2],v0$4);
- return [0,848054398,[0,_j_,[0,v0$5,0]]];
- case 1:
- var v0$6=param[1],v0=[0,365180284,money_to_float(v0$6)];
- return [0,848054398,[0,_k_,[0,v0,0]]];
- case 2:
- var v0$7=param[1],v0$0=[0,3654863,integer_to_int(v0$7)];
- return [0,848054398,[0,_l_,[0,v0$0,0]]];
- case 3:
- var v0$8=param[1],v0$1=[0,365180284,decimal_to_float(v0$8)];
- return [0,848054398,[0,_m_,[0,v0$1,0]]];
- case 4:
- var v0$9=param[1],v0$2=[0,-976970511,date_to_string(v0$9)];
- return [0,848054398,[0,_n_,[0,v0$2,0]]];
- case 5:
- var v0$10=param[1],v0$3=[0,-976970511,duration_to_string(v0$10)];
- return [0,848054398,[0,_o_,[0,v0$3,0]]];
- case 6:
- var
- v1=param[2],
- v0$11=param[1],
- v0$12=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],
- Ppx_yojson_conv_lib_Yojson_con[45][3],
- v0$11),
- v1$0=v1[2],
- v0$13=v1[1],
- v0$14=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0$13),
- v1$1=yojson_of_runtime_value(v1$0),
- v1$2=[0,848054398,[0,v0$14,[0,v1$1,0]]];
- return [0,848054398,[0,_p_,[0,v0$12,[0,v1$2,0]]]];
- case 7:
- var
- v1$3=param[2],
- v0$15=param[1],
- v0$16=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],
- Ppx_yojson_conv_lib_Yojson_con[45][3],
- v0$15),
- _b4_=
- function(param)
- {var
- v1=param[2],
- v0=param[1],
- v0$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0),
- v1$0=yojson_of_runtime_value(v1);
- return [0,848054398,[0,v0$0,[0,v1$0,0]]]},
- v1$4=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][14],_b4_,v1$3);
- return [0,848054398,[0,_q_,[0,v0$16,[0,v1$4,0]]]];
- default:
- var
- v0$17=param[1],
- v0$18=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][15],
- yojson_of_runtime_value,
- v0$17);
- return [0,848054398,[0,_r_,[0,v0$18,0]]]}}
- function unembeddable(param){return 1}
- function embed_unit(param){return 0}
- function embed_bool(x){return [0,x]}
- function embed_money(x){return [1,x]}
- function embed_integer(x){return [2,x]}
- function embed_decimal(x){return [3,x]}
- function embed_date(x){return [4,x]}
- function embed_duration(x){return [5,x]}
- function embed_array(f,x){return [8,caml_call2(Stdlib_Array[15],f,x)]}
- function yojson_of_information(v)
- {return caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],
- Ppx_yojson_conv_lib_Yojson_con[45][3],
- v)}
- function yojson_of_var_def(param)
- {var
- v_fun_calls=param[4],
- v_value=param[3],
- v_name=param[2],
- v_pos=param[1],
- _b3_=
- caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_fun_call),
- arg=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][13],_b3_,v_fun_calls),
- bnds=[0,[0,cst_fun_calls,arg],0],
- arg$0=yojson_of_runtime_value(v_value),
- bnds$0=[0,[0,cst_value,arg$0],bnds],
- arg$1=yojson_of_information(v_name),
- bnds$1=[0,[0,cst_name$0,arg$1],bnds$0],
- arg$2=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][13],
- yojson_of_source_position,
- v_pos),
- bnds$2=[0,[0,cst_pos,arg$2],bnds$1];
- return [0,963043957,bnds$2]}
- function yojson_of_fun_call(param)
- {var
- v_output=param[4],
- v_body=param[3],
- v_input=param[2],
- v_fun_name=param[1],
- arg=yojson_of_var_def(v_output),
- bnds=[0,[0,cst_output,arg],0],
- arg$0=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body),
- bnds$0=[0,[0,cst_body$0,arg$0],bnds],
- arg$1=yojson_of_var_def(v_input),
- bnds$1=[0,[0,cst_input,arg$1],bnds$0],
- arg$2=yojson_of_information(v_fun_name),
- bnds$2=[0,[0,cst_fun_name,arg$2],bnds$1];
- return [0,963043957,bnds$2]}
- function yojson_of_event(param)
- {switch(param[0])
- {case 0:
- var v0=param[1],v0$0=yojson_of_var_def(v0);
- return [0,848054398,[0,_s_,[0,v0$0,0]]];
- case 1:
- var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1);
- return [0,848054398,[0,_t_,[0,v0$2,0]]];
- default:
- var
- v_body=param[3],
- v_inputs=param[2],
- v_name=param[1],
- arg=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body),
- bnds=[0,[0,cst_body,arg],0],
- arg$0=
- caml_call2
- (Ppx_yojson_conv_lib_Yojson_con[45][14],
- yojson_of_var_def,
- v_inputs),
- bnds$0=[0,[0,cst_inputs,arg$0],bnds],
- arg$1=yojson_of_information(v_name),
- bnds$1=[0,[0,cst_name,arg$1],bnds$0];
- return [0,848054398,[0,_u_,[0,[0,963043957,bnds$1],0]]]}}
- var log_ref=[0,0];
- function reset_log(param){log_ref[1] = 0;return 0}
- function retrieve_log(param){return caml_call1(Stdlib_List[9],log_ref[1])}
- function log_begin_call(info,f)
- {log_ref[1] = [0,[0,info],log_ref[1]];return f}
- function log_end_call(info,x)
- {log_ref[1] = [0,[1,info],log_ref[1]];return x}
- function log_variable_definition(info,embed,x)
- {var _b2_=log_ref[1];
- log_ref[1] = [0,[2,info,caml_call1(embed,x)],_b2_];
- return x}
- function log_decision_taken(pos,x)
- {if(x)log_ref[1] = [0,[3,pos],log_ref[1]];return x}
- function pp_events(opt,ppf,events)
- {if(opt)var sth=opt[1],is_first_call=sth;else var is_first_call=1;
- function format_var_def(ppf,var$0)
- {var _b0_=var$0[3],_b1_=caml_call2(Stdlib_String[6],cst$3,var$0[2]);
- return caml_call7
- (Stdlib_Format[129],
- ppf,
- _v_,
- format_pos_opt,
- var$0[1],
- _b1_,
- format_value,
- _b0_)}
- function format_pos_opt(ppf,param)
- {if(param)
- {var pos=param[1];
- return caml_call5(Stdlib_Format[129],ppf,_w_,pos[1],pos[2],pos[4])}
- return caml_call2(Stdlib_Format[129],ppf,_x_)}
- function format_var_defs(ppf)
- {var
- _bZ_=
- [0,
- function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_y_)}];
- return caml_call3(Stdlib_Format[123],_bZ_,format_var_def,ppf)}
- function format_var_def_with_fun_calls(ppf,var_with_fun)
- {var _bS_=var_with_fun[4];
- if(_bS_)
- {var _bT_=_bS_[1];
- if(_bT_)
- {var
- _bU_=
- function(ppf,fun_call){return format_event(ppf,[1,fun_call])},
- _bV_=
- [0,
- function(ppf,param)
- {return caml_call2(Stdlib_Format[129],ppf,_z_)}],
- _bW_=caml_call2(Stdlib_Format[123],_bV_,_bU_),
- _bX_=var_with_fun[3],
- _bY_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]);
- return caml_call7
- (Stdlib_Format[129],
- ppf,
- _A_,
- _bY_,
- format_value,
- _bX_,
- _bW_,
- _bT_)}}
- return format_var_def(ppf,var_with_fun)}
- function format_value(ppf,param)
- {if(typeof param === "number")
- return 0 === param
- ?caml_call2(Stdlib_Format[129],ppf,_B_)
- :caml_call2(Stdlib_Format[129],ppf,_C_);
- else
- switch(param[0])
- {case 0:
- var x=param[1];return caml_call3(Stdlib_Format[129],ppf,_D_,x);
- case 1:
- var x$0=param[1],_bG_=money_to_string(x$0);
- return caml_call3(Stdlib_Format[129],ppf,_E_,_bG_);
- case 2:
- var x$1=param[1],_bH_=integer_to_int(x$1);
- return caml_call3(Stdlib_Format[129],ppf,_F_,_bH_);
- case 3:
- var x$2=param[1],_bI_=decimal_to_string(10,x$2);
- return caml_call3(Stdlib_Format[129],ppf,_G_,_bI_);
- case 4:
- var x$3=param[1],_bJ_=date_to_string(x$3);
- return caml_call3(Stdlib_Format[129],ppf,_H_,_bJ_);
- case 5:
- var x$4=param[1],_bK_=duration_to_string(x$4);
- return caml_call3(Stdlib_Format[129],ppf,_I_,_bK_);
- case 6:
- var match=param[2],name=match[1];
- return caml_call3(Stdlib_Format[129],ppf,_J_,name);
- case 7:
- var
- attrs=param[2],
- name$0=param[1],
- _bL_=
- function(fmt,param)
- {var value=param[2],name=param[1];
- return caml_call5
- (Stdlib_Format[129],fmt,_K_,name,format_value,value)},
- _bM_=
- [0,
- function(ppf,param)
- {return caml_call2(Stdlib_Format[129],ppf,_L_)}],
- _bN_=caml_call2(Stdlib_Format[123],_bM_,_bL_),
- _bO_=caml_call2(Stdlib_String[6],cst$5,name$0);
- return caml_call5(Stdlib_Format[129],ppf,_M_,_bO_,_bN_,attrs);
- default:
- var
- elts=param[1],
- _bP_=caml_call1(Stdlib_Array[11],elts),
- _bQ_=
- [0,
- function(ppf,param)
- {return caml_call2(Stdlib_Format[129],ppf,_N_)}],
- _bR_=caml_call2(Stdlib_Format[123],_bQ_,format_value);
- return caml_call4(Stdlib_Format[129],ppf,_O_,_bR_,_bP_)}}
- function format_event(ppf,param)
- {switch(param[0])
- {case 0:
- var var_def_with_fun=param[1];
- return caml_call1(Stdlib_Option[11],var_def_with_fun[4])
- ?caml_call4
- (Stdlib_Format[129],
- ppf,
- _P_,
- format_var_def_with_fun_calls,
- var_def_with_fun)
- :caml_call4
- (Stdlib_Format[129],ppf,_Q_,format_var_def,var_def_with_fun);
- case 1:
- var
- match=param[1],
- output=match[4],
- body=match[3],
- input=match[2],
- fun_name=match[1],
- _by_=function(_bC_,_bD_){return pp_events(_R_,_bC_,_bD_)},
- _bz_=caml_call2(Stdlib_String[6],cst$6,fun_name);
- return caml_call9
- (Stdlib_Format[129],
- ppf,
- _S_,
- _bz_,
- format_var_def,
- input,
- format_var_def_with_fun_calls,
- output,
- _by_,
- body);
- default:
- var
- body$0=param[3],
- inputs=param[2],
- name=param[1],
- _bA_=function(_bE_,_bF_){return pp_events(_T_,_bE_,_bF_)},
- _bB_=caml_call2(Stdlib_String[6],cst$7,name);
- return caml_call7
- (Stdlib_Format[129],
- ppf,
- _U_,
- _bB_,
- format_var_defs,
- inputs,
- _bA_,
- body$0)}}
- var
- _bu_=
- [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_V_)}],
- _bv_=caml_call2(Stdlib_Format[123],_bu_,format_event),
- _bw_=is_first_call?_W_:_Y_,
- _bx_=caml_call2(Stdlib[98],_X_,_bw_);
- return caml_call4(Stdlib_Format[129],ppf,_bx_,_bv_,events)}
- var
- StringMap=caml_call1(Stdlib_Map[1],[0,Stdlib_String[9]]),
- empty=StringMap[1],
- empty_ctx=[0,empty,0,0],
- _Z_=0;
- function raw_event_to_string(param)
- {switch(param[0])
- {case 0:
- var
- name=param[1],
- _bl_=caml_call2(Stdlib_String[6],cst$9,name),
- _bm_=caml_call2(Stdlib[28],_bl_,cst$8),
- _bn_=caml_call1(Stdlib_Printf[4],___);
- return caml_call2(Stdlib[28],_bn_,_bm_);
- case 1:
- var
- name$0=param[1],
- _bo_=caml_call2(Stdlib_String[6],cst$11,name$0),
- _bp_=caml_call2(Stdlib[28],_bo_,cst$10),
- _bq_=caml_call1(Stdlib_Printf[4],_$_);
- return caml_call2(Stdlib[28],_bq_,_bp_);
- case 2:
- var
- value=param[2],
- name$1=param[1],
- _br_=yojson_of_runtime_value(value),
- _bs_=caml_call4(Yojson[11][5],0,0,0,_br_),
- _bt_=caml_call2(Stdlib_String[6],cst$12,name$1);
- return caml_call3(Stdlib_Printf[4],_aa_,_bt_,_bs_);
- default:return caml_call1(Stdlib_Printf[4],_ab_)}}
- function parse_raw_events(raw_events)
- {var nb_raw_events=caml_call1(Stdlib_List[1],raw_events);
- function is_function_call(infos)
- {return 2 === caml_call1(Stdlib_List[1],infos)?1:0}
- function is_var_def(name)
- {return 2 === caml_call1(Stdlib_List[1],name)?1:0}
- function parse_fun_call(events)
- {if(events)
- {var _bh_=events[1];
- if(2 === _bh_[0])
- {var _bi_=events[2];
- if(_bi_)
- {var _bj_=_bi_[1];
- if(0 === _bj_[0])
- {var rest=_bi_[2],infos=_bj_[1],value=_bh_[2],name=_bh_[1];
- if(is_function_call(infos))
- {var
- _bf_=3 === caml_call1(Stdlib_List[1],name)?1:0,
- _bg_=
- _bf_
- ?caml_string_equal
- (cst_input$0,caml_call2(Stdlib_List[7],name,2))
- :_bf_;
- if(_bg_)
- {var
- body_ctx=parse_events([0,empty,0,rest]),
- body_rev=caml_call1(Stdlib_List[9],body_ctx[2]),
- output=caml_call1(Stdlib_List[5],body_rev),
- _bk_=caml_call1(Stdlib_List[6],body_rev),
- body=caml_call1(Stdlib_List[9],_bk_),
- rest$0=body_ctx[3];
- if(0 === output[0])
- var var_def=output[1],output$0=var_def;
- else
- var
- output$0=
- caml_call1(Stdlib[2],cst_Missing_function_output_va);
- return [0,rest$0,[0,infos,[0,0,name,value,0],body,output$0]]}}}}}}
- return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)}
- function parse_events(ctx)
- {var ctx$0=ctx;
- a:
- for(;;)
- {var _aG_=ctx$0[3];
- if(_aG_)
- {var _aH_=_aG_[1];
- switch(_aH_[0])
- {case 0:
- var rest=_aG_[2],infos=_aH_[1];
- if(3 === caml_call1(Stdlib_List[1],infos))
- {if(infos)
- {var _aI_=infos[2];
- if(_aI_)
- {var _aJ_=_aI_[2];
- if(_aJ_ && ! _aJ_[2])
- {var
- var_name=_aI_[1],
- body_ctx=parse_events([0,empty,_Z_,rest]),
- match$0=caml_call2(StringMap[29],var_name,ctx$0[1]);
- if(match$0)
- var ls$0=match$0[1],inputs=ls$0;
- else
- var inputs=0;
- var
- ctx$1=
- [0,
- ctx$0[1],
- [0,[2,infos,inputs,body_ctx[2]],ctx$0[2]],
- body_ctx[3]],
- ctx$0=ctx$1;
- continue}}}
- return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)}
- break;
- case 1:
- var rest$0=_aG_[2],_aM_=caml_call1(Stdlib_List[9],ctx$0[2]);
- return [0,ctx$0[1],_aM_,rest$0];
- case 2:
- var rest$1=_aG_[2],name=_aH_[1];
- if(is_var_def(name))
- {var ctx$2=[0,ctx$0[1],ctx$0[2],rest$1],ctx$0=ctx$2;continue}
- if(rest$1)
- {var _aN_=rest$1[1];
- if(0 === _aN_[0])
- {var infos$0=_aN_[1];
- if(is_function_call(infos$0))
- {var
- match$1=parse_fun_call(ctx$0[3]),
- fun_call=match$1[2],
- rest$2=match$1[1],
- ctx$3=[0,ctx$0[1],[0,[1,fun_call],ctx$0[2]],rest$2],
- ctx$0=ctx$3;
- continue}}}
- break;
- default:
- var _aO_=_aG_[2];
- if(_aO_)
- {var _aP_=_aO_[1];
- if(2 === _aP_[0])
- {var
- rest$3=_aO_[2],
- value=_aP_[2],
- name$0=_aP_[1],
- pos=_aH_[1],
- _aE_=2 === caml_call1(Stdlib_List[1],name$0)?1:0;
- if(_aE_)
- var
- _aF_=caml_call2(Stdlib_List[7],name$0,1),
- _aQ_=caml_call2(Stdlib_String[14],_aF_,46);
- else
- var _aQ_=_aE_;
- if(_aQ_)
- {if(name$0)
- {var _aR_=name$0[2];
- if(_aR_ && ! _aR_[2])
- {var
- var_dot_subscope_var_name=_aR_[1],
- _aS_=
- caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name),
- name$1=caml_call2(Stdlib_List[7],_aS_,0),
- _aU_=ctx$0[1],
- v=[0,[0,pos],name$0,value,0],
- _aT_=ctx$0[2],
- match=caml_call2(StringMap[29],name$1,_aU_);
- if(match)
- var
- ls=match[1],
- _be_=caml_call3(StringMap[4],name$1,[0,v,ls],_aU_);
- else
- var _be_=caml_call3(StringMap[4],name$1,[0,v,0],_aU_);
- var ctx$4=[0,_be_,_aT_,rest$3],ctx$0=ctx$4;
- continue}}
- return caml_call1
- (Stdlib[2],cst_unreachable_due_to_the_is_$0)}
- var switch$0=0;
- if(is_var_def(name$0))
- switch$0 = 1;
- else
- {var
- _aC_=3 === caml_call1(Stdlib_List[1],name$0)?1:0,
- _aD_=
- _aC_
- ?caml_string_equal
- (cst_output$0,caml_call2(Stdlib_List[7],name$0,2))
- :_aC_;
- if(_aD_)
- switch$0 = 1;
- else
- if(rest$3)
- {var _aV_=rest$3[1];
- if(0 === _aV_[0])
- {var infos$1=_aV_[1];
- if(is_function_call(infos$1))
- {var
- raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]),
- fun_calls=0,
- rest$4=raw_events$0;
- for(;;)
- {if(rest$4 && 2 === rest$4[1][0])
- {var _aW_=rest$4[2];
- if(_aW_)
- {var _aX_=_aW_[1];
- if(0 === _aX_[0])
- {var infos$2=_aX_[1];
- if(is_function_call(infos$2))
- {var
- match$2=parse_fun_call(rest$4),
- fun_call$0=match$2[2],
- raw_events=match$2[1],
- fun_calls$1=[0,fun_call$0,fun_calls],
- fun_calls=fun_calls$1,
- rest$4=raw_events;
- continue}}}}
- var fun_calls$0=caml_call1(Stdlib_List[9],fun_calls);
- if(rest$4)
- {var _aY_=rest$4[1];
- if(2 === _aY_[0])
- var
- rest$6=rest$4[2],
- value$0=_aY_[2],
- name$2=_aY_[1],
- var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$0]]],
- rest$5=rest$6;
- else
- var
- _aZ_=
- (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0)
- +
- 1
- |
- 0,
- _a0_=caml_call1(Stdlib[33],_aZ_),
- _a1_=caml_call2(Stdlib[28],_a0_,cst$13),
- _a2_=caml_call2(Stdlib[28],cst$14,_a1_),
- _a3_=raw_event_to_string(_aY_),
- _a4_=caml_call2(Stdlib[28],_a3_,_a2_),
- _a5_=
- caml_call2(Stdlib[28],cst_expected_variable_definiti,_a4_),
- _a6_=caml_call2(Stdlib_String[6],cst$15,infos$1),
- _a7_=caml_call2(Stdlib[28],_a6_,_a5_),
- _a8_=caml_call2(Stdlib[28],cst_Invalid_function_call,_a7_),
- _a9_=caml_call1(Stdlib[2],_a8_),
- var_comp=_a9_[2],
- rest$5=_a9_[1]}
- else
- var
- _a__=caml_call2(Stdlib_String[6],cst$16,infos$1),
- _a$_=
- caml_call2(Stdlib[28],_a__,cst_expected_variable_definiti$0),
- _ba_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_a$_),
- _bb_=caml_call1(Stdlib[2],_ba_),
- var_comp=_bb_[2],
- rest$5=_bb_[1];
- var
- ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5],
- ctx$0=ctx$6;
- continue a}}}}}
- if(switch$0)
- {var
- ctx$5=
- [0,
- ctx$0[1],
- [0,[0,[0,[0,pos],name$0,value,0]],ctx$0[2]],
- rest$3],
- ctx$0=ctx$5;
- continue}}}}
- var
- _aK_=raw_event_to_string(_aH_),
- _aL_=caml_call2(Stdlib[28],cst_Unexpected_event,_aK_);
- return caml_call1(Stdlib[2],_aL_)}
- var _bc_=ctx$0[3],_bd_=caml_call1(Stdlib_List[9],ctx$0[2]);
- return [0,ctx$0[1],_bd_,_bc_]}}
- try
- {var _aB_=parse_events([0,empty,_Z_,raw_events]),ctx=_aB_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] !== Stdlib[7])throw exn;
- var msg=exn[2];
- caml_call2(Stdlib_Printf[3],_ac_,msg);
- var ctx=empty_ctx}
- return ctx[2]}
- function handle_default(pos,exceptions,just,cons)
- {var _ax_=0;
- function _ay_(acc,except)
- {try
- {var _az_=[0,caml_call1(except,0)],new_val=_az_}
- catch(_aA_)
- {_aA_ = caml_wrap_exception(_aA_);
- if(_aA_ !== EmptyError)throw _aA_;
- var new_val=0}
- if(acc){if(new_val)throw [0,ConflictError,pos];return acc}
- return new_val}
- var except=caml_call3(Stdlib_Array[17],_ay_,_ax_,exceptions);
- if(except){var x=except[1];return x}
- if(caml_call1(just,0))return caml_call1(cons,0);
- throw EmptyError}
- function handle_default_opt(pos,exceptions,just,cons)
- {function _aw_(acc,except)
- {if(0 === acc[0])return except;
- if(0 === except[0])return acc;
- throw [0,ConflictError,pos]}
- var except=caml_call3(Stdlib_Array[17],_aw_,_ad_,exceptions);
- if(0 === except[0])
- {if(0 === just[0])return _ae_;var b=just[1];return b?cons:_af_}
- return except}
- function no_input(param){throw EmptyError}
- function symbol(i1,i2)
- {var
- i1_abs=caml_call1(Z[10],i1),
- i2_abs=caml_call1(Q[37],i2),
- _ar_=caml_call1(Q[20],i2),
- sign_int=caml_mul(runtime.ml_z_sign(i1),_ar_),
- _as_=caml_call1(Q[8],i1_abs),
- rat_result=caml_call2(Q[40],_as_,i2_abs),
- _at_=caml_call1(Q[17],rat_result),
- match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_at_),
- remainder=match[2],
- res=match[1],
- _au_=caml_call1(Q[17],rat_result);
- if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_au_))
- {var _av_=caml_call2(Z[12],res,1);
- return caml_call2(Z[54],_av_,sign_int)}
- return caml_call2(Z[54],res,sign_int)}
- function symbol$0(m1,m2)
- {if(caml_equal(Z[2],m2))throw Stdlib[13];
- var _ap_=caml_call1(Q[8],m2),_aq_=caml_call1(Q[8],m1);
- return caml_call2(Q[42],_aq_,_ap_)}
- function symbol$1(m1,m2){return caml_call2(Z[12],m1,m2)}
- function symbol$2(m1,m2){return caml_call2(Z[13],m1,m2)}
- function symbol$3(m1){return caml_call2(Z[13],Z[2],m1)}
- function symbol$4(i1,i2){return caml_call2(Z[12],i1,i2)}
- function symbol$5(i1,i2){return caml_call2(Z[13],i1,i2)}
- function symbol$6(i1){return caml_call2(Z[13],Z[2],i1)}
- function symbol$7(i1,i2){return caml_call2(Z[14],i1,i2)}
- function symbol$8(i1,i2)
- {if(caml_equal(Z[2],i2))throw Stdlib[13];return caml_call2(Z[15],i1,i2)}
- function symbol$9(i1,i2){return caml_call2(Q[38],i1,i2)}
- function symbol$10(i1,i2){return caml_call2(Q[39],i1,i2)}
- function symbol$11(i1){return caml_call2(Q[39],Q[2],i1)}
- function symbol$12(i1,i2){return caml_call2(Q[40],i1,i2)}
- function symbol$13(i1,i2)
- {if(caml_equal(Q[2],i2))throw Stdlib[13];return caml_call2(Q[42],i1,i2)}
- function symbol$14(d1,d2){return caml_call2(CalendarLib[9][38],d1,d2)}
- function symbol$15(d1,d2){return caml_call2(CalendarLib[9][39],d1,d2)}
- function symbol$16(d1,d2){return caml_call2(CalendarLib[9][37][2],d1,d2)}
- function symbol$17(d1,d2){return caml_call2(CalendarLib[9][37][3],d1,d2)}
- function symbol$18(d1,d2)
- {try
- {var
- nb_day1=caml_call1(CalendarLib[9][37][15],d1),
- nb_day2=caml_call1(CalendarLib[9][37][15],d2);
- if(0 === nb_day2)throw Stdlib[13];
- var _an_=caml_call2(Q[59],nb_day1,nb_day2);
- return _an_}
- catch(_ao_)
- {_ao_ = caml_wrap_exception(_ao_);
- if(_ao_ === CalendarLib[9][37][14])throw IndivisableDurations;
- throw _ao_}}
- function symbol$19(d1,i1)
- {var
- match=caml_call1(CalendarLib[9][37][17],d1),
- d=match[3],
- m=match[2],
- y=match[1],
- _ak_=caml_mul(d,integer_to_int(i1)),
- _al_=caml_mul(m,integer_to_int(i1)),
- _am_=caml_mul(y,integer_to_int(i1));
- return caml_call3(CalendarLib[9][37][8],_am_,_al_,_ak_)}
- function symbol$20(m1,m2){return runtime.ml_z_compare(m1,m2) <= 0?1:0}
- function symbol$21(m1,m2){return 0 <= runtime.ml_z_compare(m1,m2)?1:0}
- function symbol$22(m1,m2){return runtime.ml_z_compare(m1,m2) < 0?1:0}
- function symbol$23(m1,m2){return 0 < runtime.ml_z_compare(m1,m2)?1:0}
- function symbol$24(m1,m2){return 0 === runtime.ml_z_compare(m1,m2)?1:0}
- function symbol$25(i1,i2){return 0 <= runtime.ml_z_compare(i1,i2)?1:0}
- function symbol$26(i1,i2){return runtime.ml_z_compare(i1,i2) <= 0?1:0}
- function symbol$27(i1,i2){return 0 < runtime.ml_z_compare(i1,i2)?1:0}
- function symbol$28(i1,i2){return runtime.ml_z_compare(i1,i2) < 0?1:0}
- function symbol$29(i1,i2){return 0 === runtime.ml_z_compare(i1,i2)?1:0}
- function symbol$30(i1,i2){return 0 <= caml_call2(Q[21],i1,i2)?1:0}
- function symbol$31(i1,i2){return caml_call2(Q[21],i1,i2) <= 0?1:0}
- function symbol$32(i1,i2){return 0 < caml_call2(Q[21],i1,i2)?1:0}
- function symbol$33(i1,i2){return caml_call2(Q[21],i1,i2) < 0?1:0}
- function symbol$34(i1,i2){return 0 === caml_call2(Q[21],i1,i2)?1:0}
- function symbol$35(d1,d2)
- {return 0 <= caml_call2(CalendarLib[9][21],d1,d2)?1:0}
- function symbol$36(d1,d2)
- {return caml_call2(CalendarLib[9][21],d1,d2) <= 0?1:0}
- function symbol$37(d1,d2)
- {return 0 < caml_call2(CalendarLib[9][21],d1,d2)?1:0}
- function symbol$38(d1,d2)
- {return caml_call2(CalendarLib[9][21],d1,d2) < 0?1:0}
- function symbol$39(d1,d2)
- {return 0 === caml_call2(CalendarLib[9][21],d1,d2)?1:0}
- function compare_periods(p1,p2)
- {try
- {var
- p1_days=caml_call1(CalendarLib[9][37][15],p1),
- p2_days=caml_call1(CalendarLib[9][37][15],p2),
- _ai_=runtime.caml_int_compare(p1_days,p2_days);
- return _ai_}
- catch(_aj_)
- {_aj_ = caml_wrap_exception(_aj_);
- if(_aj_ === CalendarLib[9][37][14])throw UncomparableDurations;
- throw _aj_}}
- function symbol$40(d1,d2){return 0 <= compare_periods(d1,d2)?1:0}
- function symbol$41(d1,d2){return compare_periods(d1,d2) <= 0?1:0}
- function symbol$42(d1,d2){return 0 < compare_periods(d1,d2)?1:0}
- function symbol$43(d1,d2){return compare_periods(d1,d2) < 0?1:0}
- function symbol$44(d1,d2){return 0 === compare_periods(d1,d2)?1:0}
- function symbol$45(d1){return caml_call1(CalendarLib[9][37][4],d1)}
- function array_filter(f,a)
- {var
- _ag_=caml_call1(Stdlib_Array[11],a),
- _ah_=caml_call2(Stdlib_List[41],f,_ag_);
- return caml_call1(Stdlib_Array[12],_ah_)}
- function array_length(a){return a.length - 1}
- var
- Runtime_ocaml_Runtime=
- [0,
- yojson_of_source_position,
- EmptyError,
- AssertionFailed,
- ConflictError,
- UncomparableDurations,
- IndivisableDurations,
- ImpossibleDate,
- NoValueProvided,
- yojson_of_runtime_value,
- unembeddable,
- embed_unit,
- embed_bool,
- embed_money,
- embed_integer,
- embed_decimal,
- embed_date,
- embed_duration,
- embed_array,
- yojson_of_information,
- yojson_of_event,
- yojson_of_var_def,
- yojson_of_fun_call,
- retrieve_log,
- [0,parse_raw_events],
- reset_log,
- log_begin_call,
- log_end_call,
- log_variable_definition,
- log_decision_taken,
- pp_events,
- money_of_cents_string,
- money_of_units_int,
- money_of_decimal,
- money_of_cents_integer,
- money_to_float,
- money_to_string,
- money_to_cents,
- money_round,
- decimal_of_string,
- decimal_to_string,
- decimal_of_integer,
- decimal_of_float,
- decimal_to_float,
- decimal_round,
- decimal_of_money,
- integer_of_string,
- integer_to_string,
- integer_to_int,
- integer_of_int,
- integer_log2,
- integer_exponentiation,
- day_of_month_of_date,
- month_number_of_date,
- year_of_date,
- date_to_string,
- date_of_numbers,
- first_day_of_month,
- last_day_of_month,
- duration_of_numbers,
- duration_to_years_months_days,
- duration_to_string,
- handle_default,
- handle_default_opt,
- no_input,
- symbol,
- symbol$0,
- symbol$1,
- symbol$2,
- symbol$3,
- symbol$24,
- symbol$20,
- symbol$21,
- symbol$22,
- symbol$23,
- symbol$4,
- symbol$5,
- symbol$6,
- symbol$7,
- symbol$8,
- symbol$29,
- symbol$25,
- symbol$26,
- symbol$27,
- symbol$28,
- symbol$9,
- symbol$10,
- symbol$11,
- symbol$12,
- symbol$13,
- symbol$34,
- symbol$30,
- symbol$31,
- symbol$32,
- symbol$33,
- symbol$14,
- symbol$15,
- symbol$39,
- symbol$35,
- symbol$36,
- symbol$37,
- symbol$38,
- symbol$16,
- symbol$17,
- symbol$18,
- symbol$19,
- symbol$45,
- symbol$44,
- symbol$40,
- symbol$41,
- symbol$42,
- symbol$43,
- array_filter,
- array_length];
- caml_register_global(131,Runtime_ocaml_Runtime,"Runtime_ocaml__Runtime");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_exn_with_js_backtrace=runtime.caml_exn_with_js_backtrace,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_Jsoo_runtime_Error_Exn=
- caml_string_of_jsbytes("Jsoo_runtime.Error.Exn"),
- cst_jsError=caml_string_of_jsbytes("jsError"),
- Stdlib_Callback=global_data.Stdlib__Callback,
- Js=[0],
- Sys=[0],
- Exn=[248,cst_Jsoo_runtime_Error_Exn,runtime.caml_fresh_oo_id(0)];
- caml_call2(Stdlib_Callback[2],cst_jsError,[0,Exn,[0]]);
- function raise(exn){throw exn}
- var
- Error=
- [0,
- raise,
- caml_exn_with_js_backtrace,
- runtime.caml_js_error_option_of_exception,
- Exn],
- For_compatibility_only=[0],
- Bigstring=[0],
- Typed_array=[0,Bigstring],
- Int64=[0],
- Jsoo_runtime=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64];
- runtime.caml_register_global(4,Jsoo_runtime,"Jsoo_runtime");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js"
-(function(globalThis)
- {"use strict";
- var
- jsoo_exports=typeof module === "object" && module.exports || globalThis,
- runtime=globalThis.jsoo_runtime,
- caml_float_of_string=runtime.caml_float_of_string,
- caml_fresh_oo_id=runtime.caml_fresh_oo_id,
- caml_int_of_string=runtime.caml_int_of_string,
- caml_js_from_array=runtime.caml_js_from_array,
- caml_js_get=runtime.caml_js_get,
- caml_js_html_escape=runtime.caml_js_html_escape,
- caml_js_set=runtime.caml_js_set,
- caml_js_wrap_callback=runtime.caml_js_wrap_callback,
- caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback,
- caml_jsbytes_of_string=runtime.caml_jsbytes_of_string,
- caml_jsstring_of_string=runtime.caml_jsstring_of_string,
- caml_list_of_js_array=runtime.caml_list_of_js_array,
- caml_ml_string_length=runtime.caml_ml_string_length,
- caml_register_global=runtime.caml_register_global,
- caml_string_compare=runtime.caml_string_compare,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_array=runtime.caml_string_of_array,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_string_of_jsstring=runtime.caml_string_of_jsstring,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call5(f,a0,a1,a2,a3,a4)
- {return f.length == 5
- ?f(a0,a1,a2,a3,a4)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_parseFloat=caml_string_of_jsbytes("parseFloat"),
- cst_parseInt=caml_string_of_jsbytes("parseInt"),
- cst_can_t_retrieve_file_name_n=
- caml_string_of_jsbytes("can't retrieve file name: not implemented"),
- cst_endings=caml_string_of_jsbytes("endings"),
- cst_type=caml_string_of_jsbytes("type"),
- cst_loadstart=caml_string_of_jsbytes("loadstart"),
- cst_progress=caml_string_of_jsbytes("progress"),
- cst_abort=caml_string_of_jsbytes("abort"),
- cst_error=caml_string_of_jsbytes("error"),
- cst_load=caml_string_of_jsbytes("load"),
- cst_loadend=caml_string_of_jsbytes("loadend"),
- cst_a$1=caml_string_of_jsbytes("a"),
- cst_area$1=caml_string_of_jsbytes("area"),
- cst_audio$1=caml_string_of_jsbytes("audio"),
- cst_base$1=caml_string_of_jsbytes("base"),
- cst_blockquote$1=caml_string_of_jsbytes("blockquote"),
- cst_body$1=caml_string_of_jsbytes("body"),
- cst_br$1=caml_string_of_jsbytes("br"),
- cst_button$1=caml_string_of_jsbytes("button"),
- cst_canvas$1=caml_string_of_jsbytes("canvas"),
- cst_caption$1=caml_string_of_jsbytes("caption"),
- cst_col$1=caml_string_of_jsbytes("col"),
- cst_colgroup$1=caml_string_of_jsbytes("colgroup"),
- cst_del$1=caml_string_of_jsbytes("del"),
- cst_div$1=caml_string_of_jsbytes("div"),
- cst_dl$1=caml_string_of_jsbytes("dl"),
- cst_embed$1=caml_string_of_jsbytes("embed"),
- cst_fieldset$1=caml_string_of_jsbytes("fieldset"),
- cst_form$1=caml_string_of_jsbytes("form"),
- cst_frame$1=caml_string_of_jsbytes("frame"),
- cst_frameset$1=caml_string_of_jsbytes("frameset"),
- cst_h1$1=caml_string_of_jsbytes("h1"),
- cst_h2$1=caml_string_of_jsbytes("h2"),
- cst_h3$1=caml_string_of_jsbytes("h3"),
- cst_h4$1=caml_string_of_jsbytes("h4"),
- cst_h5$1=caml_string_of_jsbytes("h5"),
- cst_h6$1=caml_string_of_jsbytes("h6"),
- cst_head$1=caml_string_of_jsbytes("head"),
- cst_hr$1=caml_string_of_jsbytes("hr"),
- cst_html$1=caml_string_of_jsbytes("html"),
- cst_iframe$1=caml_string_of_jsbytes("iframe"),
- cst_img$1=caml_string_of_jsbytes("img"),
- cst_input$2=caml_string_of_jsbytes("input"),
- cst_ins$1=caml_string_of_jsbytes("ins"),
- cst_label$1=caml_string_of_jsbytes("label"),
- cst_legend$1=caml_string_of_jsbytes("legend"),
- cst_li$1=caml_string_of_jsbytes("li"),
- cst_link$1=caml_string_of_jsbytes("link"),
- cst_map$1=caml_string_of_jsbytes("map"),
- cst_meta$1=caml_string_of_jsbytes("meta"),
- cst_object$1=caml_string_of_jsbytes("object"),
- cst_ol$1=caml_string_of_jsbytes("ol"),
- cst_optgroup$1=caml_string_of_jsbytes("optgroup"),
- cst_option$1=caml_string_of_jsbytes("option"),
- cst_p$1=caml_string_of_jsbytes("p"),
- cst_param$1=caml_string_of_jsbytes("param"),
- cst_pre$1=caml_string_of_jsbytes("pre"),
- cst_q$1=caml_string_of_jsbytes("q"),
- cst_script$1=caml_string_of_jsbytes("script"),
- cst_select$2=caml_string_of_jsbytes("select"),
- cst_style$1=caml_string_of_jsbytes("style"),
- cst_table$1=caml_string_of_jsbytes("table"),
- cst_tbody$1=caml_string_of_jsbytes("tbody"),
- cst_td$1=caml_string_of_jsbytes("td"),
- cst_textarea$1=caml_string_of_jsbytes("textarea"),
- cst_tfoot$1=caml_string_of_jsbytes("tfoot"),
- cst_th$1=caml_string_of_jsbytes("th"),
- cst_thead$1=caml_string_of_jsbytes("thead"),
- cst_title$1=caml_string_of_jsbytes("title"),
- cst_tr$1=caml_string_of_jsbytes("tr"),
- cst_ul$1=caml_string_of_jsbytes("ul"),
- cst_video$1=caml_string_of_jsbytes("video"),
- cst_KeyH=caml_string_of_jsbytes("KeyH"),
- cst_Digit6=caml_string_of_jsbytes("Digit6"),
- cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"),
- cst_Backslash=caml_string_of_jsbytes("Backslash"),
- cst_AltLeft=caml_string_of_jsbytes("AltLeft"),
- cst_AltRight=caml_string_of_jsbytes("AltRight"),
- cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"),
- cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"),
- cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"),
- cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"),
- cst_Backquote=caml_string_of_jsbytes("Backquote"),
- cst_Backspace=caml_string_of_jsbytes("Backspace"),
- cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"),
- cst_BracketRight=caml_string_of_jsbytes("BracketRight"),
- cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"),
- cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"),
- cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"),
- cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"),
- cst_Delete=caml_string_of_jsbytes("Delete"),
- cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"),
- cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"),
- cst_CapsLock=caml_string_of_jsbytes("CapsLock"),
- cst_Comma=caml_string_of_jsbytes("Comma"),
- cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"),
- cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"),
- cst_ControlRight=caml_string_of_jsbytes("ControlRight"),
- cst_Digit0=caml_string_of_jsbytes("Digit0"),
- cst_Digit1=caml_string_of_jsbytes("Digit1"),
- cst_Digit2=caml_string_of_jsbytes("Digit2"),
- cst_Digit3=caml_string_of_jsbytes("Digit3"),
- cst_Digit4=caml_string_of_jsbytes("Digit4"),
- cst_Digit5=caml_string_of_jsbytes("Digit5"),
- cst_F6=caml_string_of_jsbytes("F6"),
- cst_F1=caml_string_of_jsbytes("F1"),
- cst_Digit7=caml_string_of_jsbytes("Digit7"),
- cst_Digit8=caml_string_of_jsbytes("Digit8"),
- cst_Digit9=caml_string_of_jsbytes("Digit9"),
- cst_End=caml_string_of_jsbytes("End"),
- cst_Enter=caml_string_of_jsbytes("Enter"),
- cst_Equal=caml_string_of_jsbytes("Equal"),
- cst_Escape=caml_string_of_jsbytes("Escape"),
- cst_F10=caml_string_of_jsbytes("F10"),
- cst_F11=caml_string_of_jsbytes("F11"),
- cst_F12=caml_string_of_jsbytes("F12"),
- cst_F2=caml_string_of_jsbytes("F2"),
- cst_F3=caml_string_of_jsbytes("F3"),
- cst_F4=caml_string_of_jsbytes("F4"),
- cst_F5=caml_string_of_jsbytes("F5"),
- cst_KeyA=caml_string_of_jsbytes("KeyA"),
- cst_F7=caml_string_of_jsbytes("F7"),
- cst_F8=caml_string_of_jsbytes("F8"),
- cst_F9=caml_string_of_jsbytes("F9"),
- cst_Home=caml_string_of_jsbytes("Home"),
- cst_Insert=caml_string_of_jsbytes("Insert"),
- cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"),
- cst_IntlYen=caml_string_of_jsbytes("IntlYen"),
- cst_KeyB=caml_string_of_jsbytes("KeyB"),
- cst_KeyC=caml_string_of_jsbytes("KeyC"),
- cst_KeyD=caml_string_of_jsbytes("KeyD"),
- cst_KeyE=caml_string_of_jsbytes("KeyE"),
- cst_KeyF=caml_string_of_jsbytes("KeyF"),
- cst_KeyG=caml_string_of_jsbytes("KeyG"),
- cst_Numpad4=caml_string_of_jsbytes("Numpad4"),
- cst_KeyX=caml_string_of_jsbytes("KeyX"),
- cst_KeyP=caml_string_of_jsbytes("KeyP"),
- cst_KeyI=caml_string_of_jsbytes("KeyI"),
- cst_KeyJ=caml_string_of_jsbytes("KeyJ"),
- cst_KeyK=caml_string_of_jsbytes("KeyK"),
- cst_KeyL=caml_string_of_jsbytes("KeyL"),
- cst_KeyM=caml_string_of_jsbytes("KeyM"),
- cst_KeyN=caml_string_of_jsbytes("KeyN"),
- cst_KeyO=caml_string_of_jsbytes("KeyO"),
- cst_KeyQ=caml_string_of_jsbytes("KeyQ"),
- cst_KeyR=caml_string_of_jsbytes("KeyR"),
- cst_KeyS=caml_string_of_jsbytes("KeyS"),
- cst_KeyT=caml_string_of_jsbytes("KeyT"),
- cst_KeyU=caml_string_of_jsbytes("KeyU"),
- cst_KeyV=caml_string_of_jsbytes("KeyV"),
- cst_KeyW=caml_string_of_jsbytes("KeyW"),
- cst_MetaRight=caml_string_of_jsbytes("MetaRight"),
- cst_KeyY=caml_string_of_jsbytes("KeyY"),
- cst_KeyZ=caml_string_of_jsbytes("KeyZ"),
- cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"),
- cst_MediaStop=caml_string_of_jsbytes("MediaStop"),
- cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"),
- cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"),
- cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"),
- cst_Minus=caml_string_of_jsbytes("Minus"),
- cst_NumLock=caml_string_of_jsbytes("NumLock"),
- cst_Numpad0=caml_string_of_jsbytes("Numpad0"),
- cst_Numpad1=caml_string_of_jsbytes("Numpad1"),
- cst_Numpad2=caml_string_of_jsbytes("Numpad2"),
- cst_Numpad3=caml_string_of_jsbytes("Numpad3"),
- cst_PageUp=caml_string_of_jsbytes("PageUp"),
- cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"),
- cst_Numpad5=caml_string_of_jsbytes("Numpad5"),
- cst_Numpad6=caml_string_of_jsbytes("Numpad6"),
- cst_Numpad7=caml_string_of_jsbytes("Numpad7"),
- cst_Numpad8=caml_string_of_jsbytes("Numpad8"),
- cst_Numpad9=caml_string_of_jsbytes("Numpad9"),
- cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"),
- cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"),
- cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"),
- cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"),
- cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"),
- cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"),
- cst_OSLeft=caml_string_of_jsbytes("OSLeft"),
- cst_OSRight=caml_string_of_jsbytes("OSRight"),
- cst_PageDown=caml_string_of_jsbytes("PageDown"),
- cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"),
- cst_Pause=caml_string_of_jsbytes("Pause"),
- cst_Period=caml_string_of_jsbytes("Period"),
- cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"),
- cst_Quote=caml_string_of_jsbytes("Quote"),
- cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"),
- cst_Semicolon=caml_string_of_jsbytes("Semicolon"),
- cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"),
- cst_Slash=caml_string_of_jsbytes("Slash"),
- cst_Space=caml_string_of_jsbytes("Space"),
- cst_Tab=caml_string_of_jsbytes("Tab"),
- cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"),
- cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"),
- cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"),
- cst_mouseout$0=caml_string_of_jsbytes("mouseout"),
- cst_mouseover$0=caml_string_of_jsbytes("mouseover"),
- cst_video$0=caml_string_of_jsbytes("video"),
- cst_audio$0=caml_string_of_jsbytes("audio"),
- cst_ul$0=caml_string_of_jsbytes("ul"),
- cst_tr$0=caml_string_of_jsbytes("tr"),
- cst_title$0=caml_string_of_jsbytes("title"),
- cst_thead$0=caml_string_of_jsbytes("thead"),
- cst_th$0=caml_string_of_jsbytes("th"),
- cst_tfoot$0=caml_string_of_jsbytes("tfoot"),
- cst_textarea$0=caml_string_of_jsbytes("textarea"),
- cst_td$0=caml_string_of_jsbytes("td"),
- cst_tbody$0=caml_string_of_jsbytes("tbody"),
- cst_table$0=caml_string_of_jsbytes("table"),
- cst_style$0=caml_string_of_jsbytes("style"),
- cst_select$1=caml_string_of_jsbytes("select"),
- cst_script$0=caml_string_of_jsbytes("script"),
- cst_q$0=caml_string_of_jsbytes("q"),
- cst_pre$0=caml_string_of_jsbytes("pre"),
- cst_param$0=caml_string_of_jsbytes("param"),
- cst_p$0=caml_string_of_jsbytes("p"),
- cst_option$0=caml_string_of_jsbytes("option"),
- cst_optgroup$0=caml_string_of_jsbytes("optgroup"),
- cst_ol$0=caml_string_of_jsbytes("ol"),
- cst_object$0=caml_string_of_jsbytes("object"),
- cst_meta$0=caml_string_of_jsbytes("meta"),
- cst_map$0=caml_string_of_jsbytes("map"),
- cst_link$0=caml_string_of_jsbytes("link"),
- cst_li$0=caml_string_of_jsbytes("li"),
- cst_legend$0=caml_string_of_jsbytes("legend"),
- cst_label$0=caml_string_of_jsbytes("label"),
- cst_ins$0=caml_string_of_jsbytes("ins"),
- cst_input$1=caml_string_of_jsbytes("input"),
- cst_img$0=caml_string_of_jsbytes("img"),
- cst_iframe$0=caml_string_of_jsbytes("iframe"),
- cst_html$0=caml_string_of_jsbytes("html"),
- cst_hr$0=caml_string_of_jsbytes("hr"),
- cst_head$0=caml_string_of_jsbytes("head"),
- cst_h6$0=caml_string_of_jsbytes("h6"),
- cst_h5$0=caml_string_of_jsbytes("h5"),
- cst_h4$0=caml_string_of_jsbytes("h4"),
- cst_h3$0=caml_string_of_jsbytes("h3"),
- cst_h2$0=caml_string_of_jsbytes("h2"),
- cst_h1$0=caml_string_of_jsbytes("h1"),
- cst_frame$0=caml_string_of_jsbytes("frame"),
- cst_frameset$0=caml_string_of_jsbytes("frameset"),
- cst_form$0=caml_string_of_jsbytes("form"),
- cst_embed$0=caml_string_of_jsbytes("embed"),
- cst_fieldset$0=caml_string_of_jsbytes("fieldset"),
- cst_dl$0=caml_string_of_jsbytes("dl"),
- cst_div$0=caml_string_of_jsbytes("div"),
- cst_del$0=caml_string_of_jsbytes("del"),
- cst_colgroup$0=caml_string_of_jsbytes("colgroup"),
- cst_col$0=caml_string_of_jsbytes("col"),
- cst_caption$0=caml_string_of_jsbytes("caption"),
- cst_canvas$0=caml_string_of_jsbytes("canvas"),
- cst_button$0=caml_string_of_jsbytes("button"),
- cst_br$0=caml_string_of_jsbytes("br"),
- cst_body$0=caml_string_of_jsbytes("body"),
- cst_blockquote$0=caml_string_of_jsbytes("blockquote"),
- cst_base$0=caml_string_of_jsbytes("base"),
- cst_area$0=caml_string_of_jsbytes("area"),
- cst_a$0=caml_string_of_jsbytes("a"),
- cst_canvas=caml_string_of_jsbytes("canvas"),
- cst_video=caml_string_of_jsbytes("video"),
- cst_audio=caml_string_of_jsbytes("audio"),
- cst_iframe=caml_string_of_jsbytes("iframe"),
- cst_frame=caml_string_of_jsbytes("frame"),
- cst_frameset=caml_string_of_jsbytes("frameset"),
- cst_address=caml_string_of_jsbytes("address"),
- cst_noscript=caml_string_of_jsbytes("noscript"),
- cst_dt=caml_string_of_jsbytes("dt"),
- cst_dd=caml_string_of_jsbytes("dd"),
- cst_abbr=caml_string_of_jsbytes("abbr"),
- cst_var=caml_string_of_jsbytes("var"),
- cst_kbd=caml_string_of_jsbytes("kbd"),
- cst_samp=caml_string_of_jsbytes("samp"),
- cst_code=caml_string_of_jsbytes("code"),
- cst_dfn=caml_string_of_jsbytes("dfn"),
- cst_cite=caml_string_of_jsbytes("cite"),
- cst_strong=caml_string_of_jsbytes("strong"),
- cst_em=caml_string_of_jsbytes("em"),
- cst_small=caml_string_of_jsbytes("small"),
- cst_big=caml_string_of_jsbytes("big"),
- cst_b=caml_string_of_jsbytes("b"),
- cst_i=caml_string_of_jsbytes("i"),
- cst_tt=caml_string_of_jsbytes("tt"),
- cst_span=caml_string_of_jsbytes("span"),
- cst_sup=caml_string_of_jsbytes("sup"),
- cst_sub=caml_string_of_jsbytes("sub"),
- cst_td=caml_string_of_jsbytes("td"),
- cst_th=caml_string_of_jsbytes("th"),
- cst_tr=caml_string_of_jsbytes("tr"),
- cst_tbody=caml_string_of_jsbytes("tbody"),
- cst_tfoot=caml_string_of_jsbytes("tfoot"),
- cst_thead=caml_string_of_jsbytes("thead"),
- cst_colgroup=caml_string_of_jsbytes("colgroup"),
- cst_col=caml_string_of_jsbytes("col"),
- cst_caption=caml_string_of_jsbytes("caption"),
- cst_table=caml_string_of_jsbytes("table"),
- cst_script=caml_string_of_jsbytes("script"),
- cst_area=caml_string_of_jsbytes("area"),
- cst_map=caml_string_of_jsbytes("map"),
- cst_param=caml_string_of_jsbytes("param"),
- cst_object=caml_string_of_jsbytes("object"),
- cst_img=caml_string_of_jsbytes("img"),
- cst_a=caml_string_of_jsbytes("a"),
- cst_del=caml_string_of_jsbytes("del"),
- cst_ins=caml_string_of_jsbytes("ins"),
- cst_hr=caml_string_of_jsbytes("hr"),
- cst_br=caml_string_of_jsbytes("br"),
- cst_pre=caml_string_of_jsbytes("pre"),
- cst_blockquote=caml_string_of_jsbytes("blockquote"),
- cst_q=caml_string_of_jsbytes("q"),
- cst_h6=caml_string_of_jsbytes("h6"),
- cst_h5=caml_string_of_jsbytes("h5"),
- cst_h4=caml_string_of_jsbytes("h4"),
- cst_h3=caml_string_of_jsbytes("h3"),
- cst_h2=caml_string_of_jsbytes("h2"),
- cst_h1=caml_string_of_jsbytes("h1"),
- cst_p=caml_string_of_jsbytes("p"),
- cst_embed=caml_string_of_jsbytes("embed"),
- cst_div=caml_string_of_jsbytes("div"),
- cst_li=caml_string_of_jsbytes("li"),
- cst_dl=caml_string_of_jsbytes("dl"),
- cst_ol=caml_string_of_jsbytes("ol"),
- cst_ul=caml_string_of_jsbytes("ul"),
- cst_legend=caml_string_of_jsbytes("legend"),
- cst_fieldset=caml_string_of_jsbytes("fieldset"),
- cst_label=caml_string_of_jsbytes("label"),
- cst_button=caml_string_of_jsbytes("button"),
- cst_textarea=caml_string_of_jsbytes("textarea"),
- cst_input$0=caml_string_of_jsbytes("input"),
- cst_select$0=caml_string_of_jsbytes("select"),
- cst_option=caml_string_of_jsbytes("option"),
- cst_optgroup=caml_string_of_jsbytes("optgroup"),
- cst_form=caml_string_of_jsbytes("form"),
- cst_body=caml_string_of_jsbytes("body"),
- cst_style=caml_string_of_jsbytes("style"),
- cst_base=caml_string_of_jsbytes("base"),
- cst_meta=caml_string_of_jsbytes("meta"),
- cst_title=caml_string_of_jsbytes("title"),
- cst_link=caml_string_of_jsbytes("link"),
- cst_head=caml_string_of_jsbytes("head"),
- cst_html=caml_string_of_jsbytes("html"),
- cst_click=caml_string_of_jsbytes("click"),
- cst_copy=caml_string_of_jsbytes("copy"),
- cst_cut=caml_string_of_jsbytes("cut"),
- cst_paste=caml_string_of_jsbytes("paste"),
- cst_dblclick=caml_string_of_jsbytes("dblclick"),
- cst_mousedown=caml_string_of_jsbytes("mousedown"),
- cst_mouseup=caml_string_of_jsbytes("mouseup"),
- cst_mouseover=caml_string_of_jsbytes("mouseover"),
- cst_mousemove=caml_string_of_jsbytes("mousemove"),
- cst_mouseout=caml_string_of_jsbytes("mouseout"),
- cst_keypress=caml_string_of_jsbytes("keypress"),
- cst_keydown=caml_string_of_jsbytes("keydown"),
- cst_keyup=caml_string_of_jsbytes("keyup"),
- cst_mousewheel=caml_string_of_jsbytes("mousewheel"),
- cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"),
- cst_touchstart=caml_string_of_jsbytes("touchstart"),
- cst_touchmove=caml_string_of_jsbytes("touchmove"),
- cst_touchend=caml_string_of_jsbytes("touchend"),
- cst_touchcancel=caml_string_of_jsbytes("touchcancel"),
- cst_dragstart=caml_string_of_jsbytes("dragstart"),
- cst_dragend=caml_string_of_jsbytes("dragend"),
- cst_dragenter=caml_string_of_jsbytes("dragenter"),
- cst_dragover=caml_string_of_jsbytes("dragover"),
- cst_dragleave=caml_string_of_jsbytes("dragleave"),
- cst_drag=caml_string_of_jsbytes("drag"),
- cst_drop=caml_string_of_jsbytes("drop"),
- cst_hashchange=caml_string_of_jsbytes("hashchange"),
- cst_change=caml_string_of_jsbytes("change"),
- cst_input=caml_string_of_jsbytes("input"),
- cst_timeupdate=caml_string_of_jsbytes("timeupdate"),
- cst_submit=caml_string_of_jsbytes("submit"),
- cst_scroll=caml_string_of_jsbytes("scroll"),
- cst_focus=caml_string_of_jsbytes("focus"),
- cst_blur=caml_string_of_jsbytes("blur"),
- cst_load$0=caml_string_of_jsbytes("load"),
- cst_unload=caml_string_of_jsbytes("unload"),
- cst_beforeunload=caml_string_of_jsbytes("beforeunload"),
- cst_resize=caml_string_of_jsbytes("resize"),
- cst_orientationchange=caml_string_of_jsbytes("orientationchange"),
- cst_popstate=caml_string_of_jsbytes("popstate"),
- cst_error$0=caml_string_of_jsbytes("error"),
- cst_abort$0=caml_string_of_jsbytes("abort"),
- cst_select=caml_string_of_jsbytes("select"),
- cst_online=caml_string_of_jsbytes("online"),
- cst_offline=caml_string_of_jsbytes("offline"),
- cst_checking=caml_string_of_jsbytes("checking"),
- cst_noupdate=caml_string_of_jsbytes("noupdate"),
- cst_downloading=caml_string_of_jsbytes("downloading"),
- cst_progress$0=caml_string_of_jsbytes("progress"),
- cst_updateready=caml_string_of_jsbytes("updateready"),
- cst_cached=caml_string_of_jsbytes("cached"),
- cst_obsolete=caml_string_of_jsbytes("obsolete"),
- cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"),
- cst_animationstart=caml_string_of_jsbytes("animationstart"),
- cst_animationend=caml_string_of_jsbytes("animationend"),
- cst_animationiteration=caml_string_of_jsbytes("animationiteration"),
- cst_animationcancel=caml_string_of_jsbytes("animationcancel"),
- cst_canplay=caml_string_of_jsbytes("canplay"),
- cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"),
- cst_durationchange=caml_string_of_jsbytes("durationchange"),
- cst_emptied=caml_string_of_jsbytes("emptied"),
- cst_ended=caml_string_of_jsbytes("ended"),
- cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"),
- cst_loadeddata=caml_string_of_jsbytes("loadeddata"),
- cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"),
- cst_loadstart$0=caml_string_of_jsbytes("loadstart"),
- cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"),
- cst_message=caml_string_of_jsbytes("message"),
- cst_pause=caml_string_of_jsbytes("pause"),
- cst_play=caml_string_of_jsbytes("play"),
- cst_playing=caml_string_of_jsbytes("playing"),
- cst_pointerenter=caml_string_of_jsbytes("pointerenter"),
- cst_pointercancel=caml_string_of_jsbytes("pointercancel"),
- cst_pointerdown=caml_string_of_jsbytes("pointerdown"),
- cst_pointerleave=caml_string_of_jsbytes("pointerleave"),
- cst_pointermove=caml_string_of_jsbytes("pointermove"),
- cst_pointerout=caml_string_of_jsbytes("pointerout"),
- cst_pointerover=caml_string_of_jsbytes("pointerover"),
- cst_pointerup=caml_string_of_jsbytes("pointerup"),
- cst_ratechange=caml_string_of_jsbytes("ratechange"),
- cst_seeked=caml_string_of_jsbytes("seeked"),
- cst_seeking=caml_string_of_jsbytes("seeking"),
- cst_stalled=caml_string_of_jsbytes("stalled"),
- cst_suspend=caml_string_of_jsbytes("suspend"),
- cst_volumechange=caml_string_of_jsbytes("volumechange"),
- cst_waiting=caml_string_of_jsbytes("waiting"),
- cst_Js_of_ocaml_Dom_html_Canva=
- caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"),
- cst_checkbox=caml_string_of_jsbytes("checkbox"),
- cst_file=caml_string_of_jsbytes("file"),
- cst_password=caml_string_of_jsbytes("password"),
- cst_radio=caml_string_of_jsbytes("radio"),
- cst_reset=caml_string_of_jsbytes("reset"),
- cst_submit$0=caml_string_of_jsbytes("submit"),
- cst_text=caml_string_of_jsbytes("text"),
- cst_readystatechange=caml_string_of_jsbytes("readystatechange"),
- cst_loadstart$1=caml_string_of_jsbytes("loadstart"),
- cst_progress$1=caml_string_of_jsbytes("progress"),
- cst_abort$1=caml_string_of_jsbytes("abort"),
- cst_error$1=caml_string_of_jsbytes("error"),
- cst_load$1=caml_string_of_jsbytes("load"),
- cst_timeout=caml_string_of_jsbytes("timeout"),
- cst_loadend$0=caml_string_of_jsbytes("loadend"),
- cst_Worker_onmessage_is_undefi$0=
- caml_string_of_jsbytes("Worker.onmessage is undefined"),
- cst_Worker_onmessage_is_undefi=
- caml_string_of_jsbytes("Worker.onmessage is undefined"),
- cst_Worker_import_scripts_is_u=
- caml_string_of_jsbytes("Worker.import_scripts is undefined"),
- cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"),
- cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"),
- cst_webglcontextcreationerror=
- caml_string_of_jsbytes("webglcontextcreationerror"),
- cst_g=caml_string_of_jsbytes("g"),
- cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"),
- cst$37=caml_string_of_jsbytes(""),
- cst$13=caml_string_of_jsbytes(""),
- cst$21=caml_string_of_jsbytes(""),
- cst$14=caml_string_of_jsbytes("#"),
- cst$15=caml_string_of_jsbytes("?"),
- cst$20=caml_string_of_jsbytes(""),
- cst$16=caml_string_of_jsbytes("/"),
- cst$17=caml_string_of_jsbytes("/"),
- cst$19=caml_string_of_jsbytes(":"),
- cst$18=caml_string_of_jsbytes(""),
- cst_http$1=caml_string_of_jsbytes("http://"),
- cst$22=caml_string_of_jsbytes(""),
- cst$30=caml_string_of_jsbytes(""),
- cst$23=caml_string_of_jsbytes("#"),
- cst$24=caml_string_of_jsbytes("?"),
- cst$29=caml_string_of_jsbytes(""),
- cst$25=caml_string_of_jsbytes("/"),
- cst$26=caml_string_of_jsbytes("/"),
- cst$28=caml_string_of_jsbytes(":"),
- cst$27=caml_string_of_jsbytes(""),
- cst_https$1=caml_string_of_jsbytes("https://"),
- cst$31=caml_string_of_jsbytes(""),
- cst$36=caml_string_of_jsbytes(""),
- cst$32=caml_string_of_jsbytes("#"),
- cst$33=caml_string_of_jsbytes("?"),
- cst$35=caml_string_of_jsbytes(""),
- cst$34=caml_string_of_jsbytes("/"),
- cst_file$2=caml_string_of_jsbytes("file://"),
- cst$12=caml_string_of_jsbytes(""),
- cst$11=caml_string_of_jsbytes(""),
- cst$10=caml_string_of_jsbytes(""),
- cst$9=caml_string_of_jsbytes(""),
- cst$8=caml_string_of_jsbytes(""),
- cst$7=caml_string_of_jsbytes(""),
- cst$6=caml_string_of_jsbytes(""),
- cst$4=caml_string_of_jsbytes("="),
- cst$5=caml_string_of_jsbytes("&"),
- cst$2=caml_string_of_jsbytes(""),
- cst$3=caml_string_of_jsbytes(""),
- cst_file$0=caml_string_of_jsbytes("file"),
- cst_file$1=caml_string_of_jsbytes("file:"),
- cst_http=caml_string_of_jsbytes("http"),
- cst_http$0=caml_string_of_jsbytes("http:"),
- cst_https=caml_string_of_jsbytes("https"),
- cst_https$0=caml_string_of_jsbytes("https:"),
- cst$1=caml_string_of_jsbytes(" "),
- cst_2B=caml_string_of_jsbytes("%2B"),
- cst_Js_of_ocaml_Url_Local_exn=
- caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"),
- cst$0=caml_string_of_jsbytes("+"),
- cst_Js_of_ocaml_Url_Not_an_htt=
- caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"),
- cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0=
- caml_string_of_jsbytes
- ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"),
- cst_Ff_Ii_Ll_Ee=
- caml_string_of_jsbytes
- ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"),
- s=caml_string_of_jsbytes("4.0.0"),
- git_version=caml_string_of_jsbytes("0.5.0-666-g0ac754b7-dirty"),
- cst$38=caml_string_of_jsbytes(""),
- cst$41=caml_string_of_jsbytes("+"),
- cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"),
- t5=runtime.caml_int64_create_lo_mi_hi(1,0,0),
- cst_is_not_a_valid_length$0=
- caml_string_of_jsbytes(" is not a valid length"),
- cst_d_d_deg_grad_rad_turns=
- caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"),
- cst_length_conversion_error$0=
- caml_string_of_jsbytes("length conversion error: "),
- cst_deg$0=caml_string_of_jsbytes("deg"),
- cst_grad$0=caml_string_of_jsbytes("grad"),
- cst_rad$0=caml_string_of_jsbytes("rad"),
- cst_turns$0=caml_string_of_jsbytes("turns"),
- cst_deg=caml_string_of_jsbytes("deg"),
- cst_grad=caml_string_of_jsbytes("grad"),
- cst_rad=caml_string_of_jsbytes("rad"),
- cst_turns=caml_string_of_jsbytes("turns"),
- cst_is_not_a_valid_length=
- caml_string_of_jsbytes(" is not a valid length"),
- cst_0$0=caml_string_of_jsbytes("0"),
- cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"),
- cst_length_conversion_error=
- caml_string_of_jsbytes("length conversion error: "),
- cst_pc$0=caml_string_of_jsbytes("pc"),
- cst_ch$0=caml_string_of_jsbytes("ch"),
- cst_cm$0=caml_string_of_jsbytes("cm"),
- cst_em$1=caml_string_of_jsbytes("em"),
- cst_ex$0=caml_string_of_jsbytes("ex"),
- cst_gd$0=caml_string_of_jsbytes("gd"),
- cst_in$0=caml_string_of_jsbytes("in"),
- cst_mm$0=caml_string_of_jsbytes("mm"),
- cst_pt$0=caml_string_of_jsbytes("pt"),
- cst_px$0=caml_string_of_jsbytes("px"),
- cst_rem$0=caml_string_of_jsbytes("rem"),
- cst_vh$0=caml_string_of_jsbytes("vh"),
- cst_vm$0=caml_string_of_jsbytes("vm"),
- cst_vw$0=caml_string_of_jsbytes("vw"),
- cst_0=caml_string_of_jsbytes("0"),
- cst_em$0=caml_string_of_jsbytes("em"),
- cst_ex=caml_string_of_jsbytes("ex"),
- cst_px=caml_string_of_jsbytes("px"),
- cst_gd=caml_string_of_jsbytes("gd"),
- cst_rem=caml_string_of_jsbytes("rem"),
- cst_vw=caml_string_of_jsbytes("vw"),
- cst_vh=caml_string_of_jsbytes("vh"),
- cst_vm=caml_string_of_jsbytes("vm"),
- cst_ch=caml_string_of_jsbytes("ch"),
- cst_mm=caml_string_of_jsbytes("mm"),
- cst_cm=caml_string_of_jsbytes("cm"),
- cst_in=caml_string_of_jsbytes("in"),
- cst_pt=caml_string_of_jsbytes("pt"),
- cst_pc=caml_string_of_jsbytes("pc"),
- cst$40=caml_string_of_jsbytes("): "),
- cst_color_conversion_error$0=
- caml_string_of_jsbytes("color conversion error ("),
- cst$39=caml_string_of_jsbytes("): "),
- cst_color_conversion_error=
- caml_string_of_jsbytes("color conversion error ("),
- cst_is_not_a_valid_color$0=
- caml_string_of_jsbytes(" is not a valid color"),
- cst_rgba_d_d_d_d_d=
- caml_string_of_jsbytes
- ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
- cst_rgba_d_d_d_d_d$0=
- caml_string_of_jsbytes
- ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
- cst_hsla_d_d_d_d_d=
- caml_string_of_jsbytes
- ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
- cst_rgb=caml_string_of_jsbytes("rgb"),
- cst_rgba=caml_string_of_jsbytes("rgba"),
- cst_rgb$0=caml_string_of_jsbytes("rgb"),
- cst_rgba$0=caml_string_of_jsbytes("rgba"),
- cst_hsl=caml_string_of_jsbytes("hsl"),
- cst_hsla=caml_string_of_jsbytes("hsla"),
- cst_rgb_s_d_s_d_s_d=
- caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"),
- cst_rgb_s_d_s_d_s_d$0=
- caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"),
- cst_rgba_s_d_s_d_s_d_d_d=
- caml_string_of_jsbytes
- ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"),
- cst_rgba_s_d_s_d_s_d_d_d$0=
- caml_string_of_jsbytes
- ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"),
- cst_hsl_s_d_s_d_s_d=
- caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"),
- cst_hsla_s_d_s_d_s_d_d_d=
- caml_string_of_jsbytes
- ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"),
- cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"),
- cst_is_out_of_valid_range=
- caml_string_of_jsbytes(" is out of valid range"),
- partial=[8,[0,0,0],0,0,[12,41,0]],
- partial$0=[12,41,0],
- partial$1=[0,0,0],
- cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"),
- cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"),
- cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"),
- cst_blue$0=caml_string_of_jsbytes("blue"),
- cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"),
- cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"),
- cst_aqua$0=caml_string_of_jsbytes("aqua"),
- cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"),
- cst_azure$0=caml_string_of_jsbytes("azure"),
- cst_beige$0=caml_string_of_jsbytes("beige"),
- cst_bisque$0=caml_string_of_jsbytes("bisque"),
- cst_black$0=caml_string_of_jsbytes("black"),
- cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"),
- cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"),
- cst_brown$0=caml_string_of_jsbytes("brown"),
- cst_burlywood$0=caml_string_of_jsbytes("burlywood"),
- cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"),
- cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"),
- cst_chocolate$0=caml_string_of_jsbytes("chocolate"),
- cst_coral$0=caml_string_of_jsbytes("coral"),
- cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"),
- cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"),
- cst_crimson$0=caml_string_of_jsbytes("crimson"),
- cst_cyan$0=caml_string_of_jsbytes("cyan"),
- cst_darkblue$0=caml_string_of_jsbytes("darkblue"),
- cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"),
- cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"),
- cst_darkgray$0=caml_string_of_jsbytes("darkgray"),
- cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"),
- cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"),
- cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"),
- cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"),
- cst_darkorange$0=caml_string_of_jsbytes("darkorange"),
- cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"),
- cst_darkred$0=caml_string_of_jsbytes("darkred"),
- cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"),
- cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"),
- cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"),
- cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"),
- cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"),
- cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"),
- cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"),
- cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"),
- cst_deeppink$0=caml_string_of_jsbytes("deeppink"),
- cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"),
- cst_dimgray$0=caml_string_of_jsbytes("dimgray"),
- cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"),
- cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"),
- cst_firebrick$0=caml_string_of_jsbytes("firebrick"),
- cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"),
- cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"),
- cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"),
- cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"),
- cst_gold$0=caml_string_of_jsbytes("gold"),
- cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"),
- cst_gray$0=caml_string_of_jsbytes("gray"),
- cst_green$0=caml_string_of_jsbytes("green"),
- cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"),
- cst_grey$0=caml_string_of_jsbytes("grey"),
- cst_honeydew$0=caml_string_of_jsbytes("honeydew"),
- cst_hotpink$0=caml_string_of_jsbytes("hotpink"),
- cst_indianred$0=caml_string_of_jsbytes("indianred"),
- cst_indigo$0=caml_string_of_jsbytes("indigo"),
- cst_ivory$0=caml_string_of_jsbytes("ivory"),
- cst_khaki$0=caml_string_of_jsbytes("khaki"),
- cst_lavender$0=caml_string_of_jsbytes("lavender"),
- cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"),
- cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"),
- cst_lightblue$0=caml_string_of_jsbytes("lightblue"),
- cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"),
- cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"),
- cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"),
- cst_lightgray$0=caml_string_of_jsbytes("lightgray"),
- cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"),
- cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"),
- cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"),
- cst_limegreen$0=caml_string_of_jsbytes("limegreen"),
- cst_lightpink$0=caml_string_of_jsbytes("lightpink"),
- cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"),
- cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"),
- cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"),
- cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"),
- cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"),
- cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"),
- cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"),
- cst_lime$0=caml_string_of_jsbytes("lime"),
- cst_linen$0=caml_string_of_jsbytes("linen"),
- cst_magenta$0=caml_string_of_jsbytes("magenta"),
- cst_maroon$0=caml_string_of_jsbytes("maroon"),
- cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"),
- cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"),
- cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"),
- cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"),
- cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"),
- cst_navy$0=caml_string_of_jsbytes("navy"),
- cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"),
- cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"),
- cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"),
- cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"),
- cst_mintcream$0=caml_string_of_jsbytes("mintcream"),
- cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"),
- cst_moccasin$0=caml_string_of_jsbytes("moccasin"),
- cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"),
- cst_oldlace$0=caml_string_of_jsbytes("oldlace"),
- cst_olive$0=caml_string_of_jsbytes("olive"),
- cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"),
- cst_orange$0=caml_string_of_jsbytes("orange"),
- cst_orangered$0=caml_string_of_jsbytes("orangered"),
- cst_orchid$0=caml_string_of_jsbytes("orchid"),
- cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"),
- cst_palegreen$0=caml_string_of_jsbytes("palegreen"),
- cst_skyblue$0=caml_string_of_jsbytes("skyblue"),
- cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"),
- cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"),
- cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"),
- cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"),
- cst_peru$0=caml_string_of_jsbytes("peru"),
- cst_pink$0=caml_string_of_jsbytes("pink"),
- cst_plum$0=caml_string_of_jsbytes("plum"),
- cst_powderblue$0=caml_string_of_jsbytes("powderblue"),
- cst_purple$0=caml_string_of_jsbytes("purple"),
- cst_red$0=caml_string_of_jsbytes("red"),
- cst_royalblue$0=caml_string_of_jsbytes("royalblue"),
- cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"),
- cst_salmon$0=caml_string_of_jsbytes("salmon"),
- cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"),
- cst_seagreen$0=caml_string_of_jsbytes("seagreen"),
- cst_seashell$0=caml_string_of_jsbytes("seashell"),
- cst_sienna$0=caml_string_of_jsbytes("sienna"),
- cst_silver$0=caml_string_of_jsbytes("silver"),
- cst_thistle$0=caml_string_of_jsbytes("thistle"),
- cst_slateblue$0=caml_string_of_jsbytes("slateblue"),
- cst_slategray$0=caml_string_of_jsbytes("slategray"),
- cst_slategrey$0=caml_string_of_jsbytes("slategrey"),
- cst_snow$0=caml_string_of_jsbytes("snow"),
- cst_springgreen$0=caml_string_of_jsbytes("springgreen"),
- cst_steelblue$0=caml_string_of_jsbytes("steelblue"),
- cst_tan$0=caml_string_of_jsbytes("tan"),
- cst_teal$0=caml_string_of_jsbytes("teal"),
- cst_tomato$0=caml_string_of_jsbytes("tomato"),
- cst_turquoise$0=caml_string_of_jsbytes("turquoise"),
- cst_violet$0=caml_string_of_jsbytes("violet"),
- cst_wheat$0=caml_string_of_jsbytes("wheat"),
- cst_white$0=caml_string_of_jsbytes("white"),
- cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"),
- cst_yellow$0=caml_string_of_jsbytes("yellow"),
- cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"),
- cst_is_not_a_valid_color_name=
- caml_string_of_jsbytes(" is not a valid color name"),
- cst_aliceblue=caml_string_of_jsbytes("aliceblue"),
- cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"),
- cst_aqua=caml_string_of_jsbytes("aqua"),
- cst_aquamarine=caml_string_of_jsbytes("aquamarine"),
- cst_azure=caml_string_of_jsbytes("azure"),
- cst_beige=caml_string_of_jsbytes("beige"),
- cst_bisque=caml_string_of_jsbytes("bisque"),
- cst_black=caml_string_of_jsbytes("black"),
- cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"),
- cst_blue=caml_string_of_jsbytes("blue"),
- cst_blueviolet=caml_string_of_jsbytes("blueviolet"),
- cst_brown=caml_string_of_jsbytes("brown"),
- cst_burlywood=caml_string_of_jsbytes("burlywood"),
- cst_cadetblue=caml_string_of_jsbytes("cadetblue"),
- cst_chartreuse=caml_string_of_jsbytes("chartreuse"),
- cst_chocolate=caml_string_of_jsbytes("chocolate"),
- cst_coral=caml_string_of_jsbytes("coral"),
- cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"),
- cst_cornsilk=caml_string_of_jsbytes("cornsilk"),
- cst_crimson=caml_string_of_jsbytes("crimson"),
- cst_cyan=caml_string_of_jsbytes("cyan"),
- cst_darkblue=caml_string_of_jsbytes("darkblue"),
- cst_darkcyan=caml_string_of_jsbytes("darkcyan"),
- cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"),
- cst_darkgray=caml_string_of_jsbytes("darkgray"),
- cst_darkgreen=caml_string_of_jsbytes("darkgreen"),
- cst_darkgrey=caml_string_of_jsbytes("darkgrey"),
- cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"),
- cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"),
- cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"),
- cst_darkorange=caml_string_of_jsbytes("darkorange"),
- cst_darkorchid=caml_string_of_jsbytes("darkorchid"),
- cst_darkred=caml_string_of_jsbytes("darkred"),
- cst_darksalmon=caml_string_of_jsbytes("darksalmon"),
- cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"),
- cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"),
- cst_darkslategray=caml_string_of_jsbytes("darkslategray"),
- cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"),
- cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"),
- cst_darkviolet=caml_string_of_jsbytes("darkviolet"),
- cst_deeppink=caml_string_of_jsbytes("deeppink"),
- cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"),
- cst_dimgray=caml_string_of_jsbytes("dimgray"),
- cst_dimgrey=caml_string_of_jsbytes("dimgrey"),
- cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"),
- cst_firebrick=caml_string_of_jsbytes("firebrick"),
- cst_floralwhite=caml_string_of_jsbytes("floralwhite"),
- cst_forestgreen=caml_string_of_jsbytes("forestgreen"),
- cst_fuchsia=caml_string_of_jsbytes("fuchsia"),
- cst_gainsboro=caml_string_of_jsbytes("gainsboro"),
- cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"),
- cst_gold=caml_string_of_jsbytes("gold"),
- cst_goldenrod=caml_string_of_jsbytes("goldenrod"),
- cst_gray=caml_string_of_jsbytes("gray"),
- cst_grey=caml_string_of_jsbytes("grey"),
- cst_green=caml_string_of_jsbytes("green"),
- cst_greenyellow=caml_string_of_jsbytes("greenyellow"),
- cst_honeydew=caml_string_of_jsbytes("honeydew"),
- cst_hotpink=caml_string_of_jsbytes("hotpink"),
- cst_indianred=caml_string_of_jsbytes("indianred"),
- cst_indigo=caml_string_of_jsbytes("indigo"),
- cst_ivory=caml_string_of_jsbytes("ivory"),
- cst_khaki=caml_string_of_jsbytes("khaki"),
- cst_lavender=caml_string_of_jsbytes("lavender"),
- cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"),
- cst_lawngreen=caml_string_of_jsbytes("lawngreen"),
- cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"),
- cst_lightblue=caml_string_of_jsbytes("lightblue"),
- cst_lightcoral=caml_string_of_jsbytes("lightcoral"),
- cst_lightcyan=caml_string_of_jsbytes("lightcyan"),
- cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"),
- cst_lightgray=caml_string_of_jsbytes("lightgray"),
- cst_lightgreen=caml_string_of_jsbytes("lightgreen"),
- cst_lightgrey=caml_string_of_jsbytes("lightgrey"),
- cst_lightpink=caml_string_of_jsbytes("lightpink"),
- cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"),
- cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"),
- cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"),
- cst_lightslategray=caml_string_of_jsbytes("lightslategray"),
- cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"),
- cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"),
- cst_lightyellow=caml_string_of_jsbytes("lightyellow"),
- cst_lime=caml_string_of_jsbytes("lime"),
- cst_limegreen=caml_string_of_jsbytes("limegreen"),
- cst_linen=caml_string_of_jsbytes("linen"),
- cst_magenta=caml_string_of_jsbytes("magenta"),
- cst_maroon=caml_string_of_jsbytes("maroon"),
- cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"),
- cst_mediumblue=caml_string_of_jsbytes("mediumblue"),
- cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"),
- cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"),
- cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"),
- cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"),
- cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"),
- cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"),
- cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"),
- cst_midnightblue=caml_string_of_jsbytes("midnightblue"),
- cst_mintcream=caml_string_of_jsbytes("mintcream"),
- cst_mistyrose=caml_string_of_jsbytes("mistyrose"),
- cst_moccasin=caml_string_of_jsbytes("moccasin"),
- cst_navajowhite=caml_string_of_jsbytes("navajowhite"),
- cst_navy=caml_string_of_jsbytes("navy"),
- cst_oldlace=caml_string_of_jsbytes("oldlace"),
- cst_olive=caml_string_of_jsbytes("olive"),
- cst_olivedrab=caml_string_of_jsbytes("olivedrab"),
- cst_orange=caml_string_of_jsbytes("orange"),
- cst_orangered=caml_string_of_jsbytes("orangered"),
- cst_orchid=caml_string_of_jsbytes("orchid"),
- cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"),
- cst_palegreen=caml_string_of_jsbytes("palegreen"),
- cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"),
- cst_palevioletred=caml_string_of_jsbytes("palevioletred"),
- cst_papayawhip=caml_string_of_jsbytes("papayawhip"),
- cst_peachpuff=caml_string_of_jsbytes("peachpuff"),
- cst_peru=caml_string_of_jsbytes("peru"),
- cst_pink=caml_string_of_jsbytes("pink"),
- cst_plum=caml_string_of_jsbytes("plum"),
- cst_powderblue=caml_string_of_jsbytes("powderblue"),
- cst_purple=caml_string_of_jsbytes("purple"),
- cst_red=caml_string_of_jsbytes("red"),
- cst_rosybrown=caml_string_of_jsbytes("rosybrown"),
- cst_royalblue=caml_string_of_jsbytes("royalblue"),
- cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"),
- cst_salmon=caml_string_of_jsbytes("salmon"),
- cst_sandybrown=caml_string_of_jsbytes("sandybrown"),
- cst_seagreen=caml_string_of_jsbytes("seagreen"),
- cst_seashell=caml_string_of_jsbytes("seashell"),
- cst_sienna=caml_string_of_jsbytes("sienna"),
- cst_silver=caml_string_of_jsbytes("silver"),
- cst_skyblue=caml_string_of_jsbytes("skyblue"),
- cst_slateblue=caml_string_of_jsbytes("slateblue"),
- cst_slategray=caml_string_of_jsbytes("slategray"),
- cst_slategrey=caml_string_of_jsbytes("slategrey"),
- cst_snow=caml_string_of_jsbytes("snow"),
- cst_springgreen=caml_string_of_jsbytes("springgreen"),
- cst_steelblue=caml_string_of_jsbytes("steelblue"),
- cst_tan=caml_string_of_jsbytes("tan"),
- cst_teal=caml_string_of_jsbytes("teal"),
- cst_thistle=caml_string_of_jsbytes("thistle"),
- cst_tomato=caml_string_of_jsbytes("tomato"),
- cst_turquoise=caml_string_of_jsbytes("turquoise"),
- cst_violet=caml_string_of_jsbytes("violet"),
- cst_wheat=caml_string_of_jsbytes("wheat"),
- cst_white=caml_string_of_jsbytes("white"),
- cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"),
- cst_yellow=caml_string_of_jsbytes("yellow"),
- cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"),
- cst_vkern$0=caml_string_of_jsbytes("vkern"),
- cst_view$0=caml_string_of_jsbytes("view"),
- cst_use$0=caml_string_of_jsbytes("use"),
- cst_tspan$0=caml_string_of_jsbytes("tspan"),
- cst_tref$0=caml_string_of_jsbytes("tref"),
- cst_title$3=caml_string_of_jsbytes("title"),
- cst_textpath$0=caml_string_of_jsbytes("textpath"),
- cst_text$1=caml_string_of_jsbytes("text"),
- cst_symbol$0=caml_string_of_jsbytes("symbol"),
- cst_switch$0=caml_string_of_jsbytes("switch"),
- cst_svg$0=caml_string_of_jsbytes("svg"),
- cst_style$3=caml_string_of_jsbytes("style"),
- cst_stop$0=caml_string_of_jsbytes("stop"),
- cst_set$0=caml_string_of_jsbytes("set"),
- cst_script$3=caml_string_of_jsbytes("script"),
- cst_rect$0=caml_string_of_jsbytes("rect"),
- cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"),
- cst_polyline$0=caml_string_of_jsbytes("polyline"),
- cst_polygon$0=caml_string_of_jsbytes("polygon"),
- cst_pattern$0=caml_string_of_jsbytes("pattern"),
- cst_path$0=caml_string_of_jsbytes("path"),
- cst_mpath$0=caml_string_of_jsbytes("mpath"),
- cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"),
- cst_metadata$0=caml_string_of_jsbytes("metadata"),
- cst_mask$0=caml_string_of_jsbytes("mask"),
- cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"),
- cst_line$0=caml_string_of_jsbytes("line"),
- cst_image$0=caml_string_of_jsbytes("image"),
- cst_hkern$0=caml_string_of_jsbytes("hkern"),
- cst_glyphref$0=caml_string_of_jsbytes("glyphref"),
- cst_glyph$0=caml_string_of_jsbytes("glyph"),
- cst_g$1=caml_string_of_jsbytes("g"),
- cst_foreignobject=caml_string_of_jsbytes("foreignobject"),
- cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"),
- cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"),
- cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"),
- cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"),
- cst_font_face$0=caml_string_of_jsbytes("font-face"),
- cst_font$0=caml_string_of_jsbytes("font"),
- cst_filter$0=caml_string_of_jsbytes("filter"),
- cst_ellipse$0=caml_string_of_jsbytes("ellipse"),
- cst_desc$0=caml_string_of_jsbytes("desc"),
- cst_defs$0=caml_string_of_jsbytes("defs"),
- cst_cursor$0=caml_string_of_jsbytes("cursor"),
- cst_clippath$0=caml_string_of_jsbytes("clippath"),
- cst_circle$0=caml_string_of_jsbytes("circle"),
- cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"),
- cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"),
- cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"),
- cst_animate$0=caml_string_of_jsbytes("animate"),
- cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"),
- cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"),
- cst_altglyph$0=caml_string_of_jsbytes("altglyph"),
- cst_a$3=caml_string_of_jsbytes("a"),
- cst_vkern=caml_string_of_jsbytes("vkern"),
- cst_view=caml_string_of_jsbytes("view"),
- cst_use=caml_string_of_jsbytes("use"),
- cst_tspan=caml_string_of_jsbytes("tspan"),
- cst_tref=caml_string_of_jsbytes("tref"),
- cst_title$2=caml_string_of_jsbytes("title"),
- cst_textpath=caml_string_of_jsbytes("textpath"),
- cst_text$0=caml_string_of_jsbytes("text"),
- cst_symbol=caml_string_of_jsbytes("symbol"),
- cst_switch=caml_string_of_jsbytes("switch"),
- cst_svg=caml_string_of_jsbytes("svg"),
- cst_style$2=caml_string_of_jsbytes("style"),
- cst_stop=caml_string_of_jsbytes("stop"),
- cst_set=caml_string_of_jsbytes("set"),
- cst_script$2=caml_string_of_jsbytes("script"),
- cst_rect=caml_string_of_jsbytes("rect"),
- cst_radialgradient=caml_string_of_jsbytes("radialgradient"),
- cst_polyline=caml_string_of_jsbytes("polyline"),
- cst_polygon=caml_string_of_jsbytes("polygon"),
- cst_pattern=caml_string_of_jsbytes("pattern"),
- cst_path=caml_string_of_jsbytes("path"),
- cst_mpath=caml_string_of_jsbytes("mpath"),
- cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"),
- cst_metadata=caml_string_of_jsbytes("metadata"),
- cst_mask=caml_string_of_jsbytes("mask"),
- cst_lineargradient=caml_string_of_jsbytes("lineargradient"),
- cst_line=caml_string_of_jsbytes("line"),
- cst_image=caml_string_of_jsbytes("image"),
- cst_hkern=caml_string_of_jsbytes("hkern"),
- cst_glyphref=caml_string_of_jsbytes("glyphref"),
- cst_glyph=caml_string_of_jsbytes("glyph"),
- cst_g$0=caml_string_of_jsbytes("g"),
- cst_foreignObject=caml_string_of_jsbytes("foreignObject"),
- cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"),
- cst_font_face_src=caml_string_of_jsbytes("font-face-src"),
- cst_font_face_name=caml_string_of_jsbytes("font-face-name"),
- cst_font_face_format=caml_string_of_jsbytes("font-face-format"),
- cst_font_face=caml_string_of_jsbytes("font-face"),
- cst_font=caml_string_of_jsbytes("font"),
- cst_filter=caml_string_of_jsbytes("filter"),
- cst_ellipse=caml_string_of_jsbytes("ellipse"),
- cst_desc=caml_string_of_jsbytes("desc"),
- cst_defs=caml_string_of_jsbytes("defs"),
- cst_cursor=caml_string_of_jsbytes("cursor"),
- cst_clippath=caml_string_of_jsbytes("clippath"),
- cst_circle=caml_string_of_jsbytes("circle"),
- cst_animatetransform=caml_string_of_jsbytes("animatetransform"),
- cst_animatemotion=caml_string_of_jsbytes("animatemotion"),
- cst_animatecolor=caml_string_of_jsbytes("animatecolor"),
- cst_animate=caml_string_of_jsbytes("animate"),
- cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"),
- cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"),
- cst_altglyph=caml_string_of_jsbytes("altglyph"),
- cst_a$2=caml_string_of_jsbytes("a"),
- cst_Js_of_ocaml_Dom_svg_SVGErr=
- caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"),
- Stdlib_String=global_data.Stdlib__String,
- Stdlib_Char=global_data.Stdlib__Char,
- Stdlib=global_data.Stdlib,
- Jsoo_runtime=global_data.Jsoo_runtime,
- Stdlib_Printexc=global_data.Stdlib__Printexc,
- Assert_failure=global_data.Assert_failure,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib_Uchar=global_data.Stdlib__Uchar,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Stdlib_Obj=global_data.Stdlib__Obj,
- Js_of_ocaml=[0];
- caml_register_global(1635,Js_of_ocaml,"Js_of_ocaml__");
- var
- Poly=[0],
- _g_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67],
- _h_=[0,caml_string_of_jsbytes("transparent")],
- _i_=[0,caml_string_of_jsbytes("native")],
- _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2850,58],
- _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2849,61],
- _k_=
- [0,
- [11,
- caml_string_of_jsbytes("getElementById_exn: "),
- [3,0,[11,caml_string_of_jsbytes(" not found"),0]]],
- caml_string_of_jsbytes("getElementById_exn: %S not found")],
- _o_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13],
- _n_=[0,1],
- _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64],
- _q_=[0,caml_string_of_jsbytes(""),0],
- _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cm_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cn_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _ch_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _ci_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _cj_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
- _b7_=
- caml_list_of_js_array
- ([caml_string_of_jsbytes("aliceblue"),
- caml_string_of_jsbytes("antiquewhite"),
- caml_string_of_jsbytes("aqua"),
- caml_string_of_jsbytes("aquamarine"),
- caml_string_of_jsbytes("azure"),
- caml_string_of_jsbytes("beige"),
- caml_string_of_jsbytes("bisque"),
- caml_string_of_jsbytes("black"),
- caml_string_of_jsbytes("blanchedalmond"),
- caml_string_of_jsbytes("blue"),
- caml_string_of_jsbytes("blueviolet"),
- caml_string_of_jsbytes("brown"),
- caml_string_of_jsbytes("burlywood"),
- caml_string_of_jsbytes("cadetblue"),
- caml_string_of_jsbytes("chartreuse"),
- caml_string_of_jsbytes("chocolate"),
- caml_string_of_jsbytes("coral"),
- caml_string_of_jsbytes("cornflowerblue"),
- caml_string_of_jsbytes("cornsilk"),
- caml_string_of_jsbytes("crimson"),
- caml_string_of_jsbytes("cyan"),
- caml_string_of_jsbytes("darkblue"),
- caml_string_of_jsbytes("darkcyan"),
- caml_string_of_jsbytes("darkgoldenrod"),
- caml_string_of_jsbytes("darkgray"),
- caml_string_of_jsbytes("darkgreen"),
- caml_string_of_jsbytes("darkgrey"),
- caml_string_of_jsbytes("darkkhaki"),
- caml_string_of_jsbytes("darkmagenta"),
- caml_string_of_jsbytes("darkolivegreen"),
- caml_string_of_jsbytes("darkorange"),
- caml_string_of_jsbytes("darkorchid"),
- caml_string_of_jsbytes("darkred"),
- caml_string_of_jsbytes("darksalmon"),
- caml_string_of_jsbytes("darkseagreen"),
- caml_string_of_jsbytes("darkslateblue"),
- caml_string_of_jsbytes("darkslategray"),
- caml_string_of_jsbytes("darkslategrey"),
- caml_string_of_jsbytes("darkturquoise"),
- caml_string_of_jsbytes("darkviolet"),
- caml_string_of_jsbytes("deeppink"),
- caml_string_of_jsbytes("deepskyblue"),
- caml_string_of_jsbytes("dimgray"),
- caml_string_of_jsbytes("dimgrey"),
- caml_string_of_jsbytes("dodgerblue"),
- caml_string_of_jsbytes("firebrick"),
- caml_string_of_jsbytes("floralwhite"),
- caml_string_of_jsbytes("forestgreen"),
- caml_string_of_jsbytes("fuchsia"),
- caml_string_of_jsbytes("gainsboro"),
- caml_string_of_jsbytes("ghostwhite"),
- caml_string_of_jsbytes("gold"),
- caml_string_of_jsbytes("goldenrod"),
- caml_string_of_jsbytes("gray"),
- caml_string_of_jsbytes("green"),
- caml_string_of_jsbytes("greenyellow"),
- caml_string_of_jsbytes("grey"),
- caml_string_of_jsbytes("honeydew"),
- caml_string_of_jsbytes("hotpink"),
- caml_string_of_jsbytes("indianred"),
- caml_string_of_jsbytes("indigo"),
- caml_string_of_jsbytes("ivory"),
- caml_string_of_jsbytes("khaki"),
- caml_string_of_jsbytes("lavender"),
- caml_string_of_jsbytes("lavenderblush"),
- caml_string_of_jsbytes("lawngreen"),
- caml_string_of_jsbytes("lemonchiffon"),
- caml_string_of_jsbytes("lightblue"),
- caml_string_of_jsbytes("lightcoral"),
- caml_string_of_jsbytes("lightcyan"),
- caml_string_of_jsbytes("lightgoldenrodyellow"),
- caml_string_of_jsbytes("lightgray"),
- caml_string_of_jsbytes("lightgreen"),
- caml_string_of_jsbytes("lightgrey"),
- caml_string_of_jsbytes("lightpink"),
- caml_string_of_jsbytes("lightsalmon"),
- caml_string_of_jsbytes("lightseagreen"),
- caml_string_of_jsbytes("lightskyblue"),
- caml_string_of_jsbytes("lightslategray"),
- caml_string_of_jsbytes("lightslategrey"),
- caml_string_of_jsbytes("lightsteelblue"),
- caml_string_of_jsbytes("lightyellow"),
- caml_string_of_jsbytes("lime"),
- caml_string_of_jsbytes("limegreen"),
- caml_string_of_jsbytes("linen"),
- caml_string_of_jsbytes("magenta"),
- caml_string_of_jsbytes("maroon"),
- caml_string_of_jsbytes("mediumaquamarine"),
- caml_string_of_jsbytes("mediumblue"),
- caml_string_of_jsbytes("mediumorchid"),
- caml_string_of_jsbytes("mediumpurple"),
- caml_string_of_jsbytes("mediumseagreen"),
- caml_string_of_jsbytes("mediumslateblue"),
- caml_string_of_jsbytes("mediumspringgreen"),
- caml_string_of_jsbytes("mediumturquoise"),
- caml_string_of_jsbytes("mediumvioletred"),
- caml_string_of_jsbytes("midnightblue"),
- caml_string_of_jsbytes("mintcream"),
- caml_string_of_jsbytes("mistyrose"),
- caml_string_of_jsbytes("moccasin"),
- caml_string_of_jsbytes("navajowhite"),
- caml_string_of_jsbytes("navy"),
- caml_string_of_jsbytes("oldlace"),
- caml_string_of_jsbytes("olive"),
- caml_string_of_jsbytes("olivedrab"),
- caml_string_of_jsbytes("orange"),
- caml_string_of_jsbytes("orangered"),
- caml_string_of_jsbytes("orchid"),
- caml_string_of_jsbytes("palegoldenrod"),
- caml_string_of_jsbytes("palegreen"),
- caml_string_of_jsbytes("paleturquoise"),
- caml_string_of_jsbytes("palevioletred"),
- caml_string_of_jsbytes("papayawhip"),
- caml_string_of_jsbytes("peachpuff"),
- caml_string_of_jsbytes("peru"),
- caml_string_of_jsbytes("pink"),
- caml_string_of_jsbytes("plum"),
- caml_string_of_jsbytes("powderblue"),
- caml_string_of_jsbytes("purple"),
- caml_string_of_jsbytes("red"),
- caml_string_of_jsbytes("rosybrown"),
- caml_string_of_jsbytes("royalblue"),
- caml_string_of_jsbytes("saddlebrown"),
- caml_string_of_jsbytes("salmon"),
- caml_string_of_jsbytes("sandybrown"),
- caml_string_of_jsbytes("seagreen"),
- caml_string_of_jsbytes("seashell"),
- caml_string_of_jsbytes("sienna"),
- caml_string_of_jsbytes("silver"),
- caml_string_of_jsbytes("skyblue"),
- caml_string_of_jsbytes("slateblue"),
- caml_string_of_jsbytes("slategray"),
- caml_string_of_jsbytes("slategrey"),
- caml_string_of_jsbytes("snow"),
- caml_string_of_jsbytes("springgreen"),
- caml_string_of_jsbytes("steelblue"),
- caml_string_of_jsbytes("tan"),
- caml_string_of_jsbytes("teal"),
- caml_string_of_jsbytes("thistle"),
- caml_string_of_jsbytes("tomato"),
- caml_string_of_jsbytes("turquoise"),
- caml_string_of_jsbytes("violet"),
- caml_string_of_jsbytes("wheat"),
- caml_string_of_jsbytes("white"),
- caml_string_of_jsbytes("whitesmoke"),
- caml_string_of_jsbytes("yellow"),
- caml_string_of_jsbytes("yellowgreen")]),
- _b6_=
- [0,
- [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]],
- caml_string_of_jsbytes("#%02X%02X%02X")],
- _b0_=
- [0,
- [11,
- caml_string_of_jsbytes("rgb("),
- [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]],
- caml_string_of_jsbytes("rgb(%d,%d,%d)")],
- _b1_=
- [0,
- [11,
- caml_string_of_jsbytes("rgb("),
- [4,
- 0,
- 0,
- 0,
- [12,37,[12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]]],
- caml_string_of_jsbytes("rgb(%d%%,%d%%,%d%%)")],
- _b2_=
- [0,
- [11,
- caml_string_of_jsbytes("rgba("),
- [4,
- 0,
- 0,
- 0,
- [12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,44,[8,[0,0,0],0,0,[12,41,0]]]]]]]]],
- caml_string_of_jsbytes("rgba(%d,%d,%d,%f)")],
- _b3_=
- [0,
- [11,
- caml_string_of_jsbytes("rgba("),
- [4,
- 0,
- 0,
- 0,
- [12,
- 37,
- [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,44,partial]]]]]]]]]],
- caml_string_of_jsbytes("rgba(%d%%,%d%%,%d%%,%f)")],
- _b4_=
- [0,
- [11,
- caml_string_of_jsbytes("hsl("),
- [4,
- 0,
- 0,
- 0,
- [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]],
- caml_string_of_jsbytes("hsl(%d,%d%%,%d%%)")],
- _b5_=
- [0,
- [11,
- caml_string_of_jsbytes("hsla("),
- [4,
- 0,
- 0,
- 0,
- [12,
- 44,
- [4,
- 0,
- 0,
- 0,
- [12,
- 37,
- [12,44,[4,0,0,0,[12,37,[12,44,[8,partial$1,0,0,partial$0]]]]]]]]]],
- caml_string_of_jsbytes("hsla(%d,%d%%,%d%%,%f)")],
- _x_=[0,240,248,255],
- _y_=[0,250,235,215],
- _z_=[0,0,255,255],
- _A_=[0,127,255,212],
- _B_=[0,240,255,255],
- _C_=[0,245,245,220],
- _D_=[0,255,228,196],
- _E_=[0,0,0,0],
- _F_=[0,255,235,205],
- _G_=[0,0,0,255],
- _H_=[0,138,43,226],
- _I_=[0,165,42,42],
- _J_=[0,222,184,135],
- _K_=[0,95,158,160],
- _L_=[0,127,255,0],
- _M_=[0,210,105,30],
- _N_=[0,255,127,80],
- _O_=[0,100,149,237],
- _P_=[0,255,248,220],
- _Q_=[0,220,20,60],
- _R_=[0,0,255,255],
- _S_=[0,0,0,139],
- _T_=[0,0,139,139],
- _U_=[0,184,134,11],
- _V_=[0,169,169,169],
- _W_=[0,0,100,0],
- _X_=[0,169,169,169],
- _Y_=[0,189,183,107],
- _Z_=[0,139,0,139],
- ___=[0,85,107,47],
- _$_=[0,255,140,0],
- _aa_=[0,153,50,204],
- _ab_=[0,139,0,0],
- _ac_=[0,233,150,122],
- _ad_=[0,143,188,143],
- _ae_=[0,72,61,139],
- _af_=[0,47,79,79],
- _ag_=[0,47,79,79],
- _ah_=[0,0,206,209],
- _ai_=[0,148,0,211],
- _aj_=[0,255,20,147],
- _ak_=[0,0,191,255],
- _al_=[0,105,105,105],
- _am_=[0,105,105,105],
- _an_=[0,30,144,255],
- _ao_=[0,178,34,34],
- _ap_=[0,255,250,240],
- _aq_=[0,34,139,34],
- _ar_=[0,255,0,255],
- _as_=[0,220,220,220],
- _at_=[0,248,248,255],
- _au_=[0,255,215,0],
- _av_=[0,218,165,32],
- _aw_=[0,128,128,128],
- _ax_=[0,128,128,128],
- _ay_=[0,0,128,0],
- _az_=[0,173,255,47],
- _aA_=[0,240,255,240],
- _aB_=[0,255,105,180],
- _aC_=[0,205,92,92],
- _aD_=[0,75,0,130],
- _aE_=[0,255,255,240],
- _aF_=[0,240,230,140],
- _aG_=[0,230,230,250],
- _aH_=[0,255,240,245],
- _aI_=[0,124,252,0],
- _aJ_=[0,255,250,205],
- _aK_=[0,173,216,230],
- _aL_=[0,240,128,128],
- _aM_=[0,224,255,255],
- _aN_=[0,250,250,210],
- _aO_=[0,211,211,211],
- _aP_=[0,144,238,144],
- _aQ_=[0,211,211,211],
- _aR_=[0,255,182,193],
- _aS_=[0,255,160,122],
- _aT_=[0,32,178,170],
- _aU_=[0,135,206,250],
- _aV_=[0,119,136,153],
- _aW_=[0,119,136,153],
- _aX_=[0,176,196,222],
- _aY_=[0,255,255,224],
- _aZ_=[0,0,255,0],
- _a0_=[0,50,205,50],
- _a1_=[0,250,240,230],
- _a2_=[0,255,0,255],
- _a3_=[0,128,0,0],
- _a4_=[0,102,205,170],
- _a5_=[0,0,0,205],
- _a6_=[0,186,85,211],
- _a7_=[0,147,112,219],
- _a8_=[0,60,179,113],
- _a9_=[0,123,104,238],
- _a__=[0,0,250,154],
- _a$_=[0,72,209,204],
- _ba_=[0,199,21,133],
- _bb_=[0,25,25,112],
- _bc_=[0,245,255,250],
- _bd_=[0,255,228,225],
- _be_=[0,255,228,181],
- _bf_=[0,255,222,173],
- _bg_=[0,0,0,128],
- _bh_=[0,253,245,230],
- _bi_=[0,128,128,0],
- _bj_=[0,107,142,35],
- _bk_=[0,255,165,0],
- _bl_=[0,255,69,0],
- _bm_=[0,218,112,214],
- _bn_=[0,238,232,170],
- _bo_=[0,152,251,152],
- _bp_=[0,175,238,238],
- _bq_=[0,219,112,147],
- _br_=[0,255,239,213],
- _bs_=[0,255,218,185],
- _bt_=[0,205,133,63],
- _bu_=[0,255,192,203],
- _bv_=[0,221,160,221],
- _bw_=[0,176,224,230],
- _bx_=[0,128,0,128],
- _by_=[0,255,0,0],
- _bz_=[0,188,143,143],
- _bA_=[0,65,105,225],
- _bB_=[0,139,69,19],
- _bC_=[0,250,128,114],
- _bD_=[0,244,164,96],
- _bE_=[0,46,139,87],
- _bF_=[0,255,245,238],
- _bG_=[0,160,82,45],
- _bH_=[0,192,192,192],
- _bI_=[0,135,206,235],
- _bJ_=[0,106,90,205],
- _bK_=[0,112,128,144],
- _bL_=[0,112,128,144],
- _bM_=[0,255,250,250],
- _bN_=[0,0,255,127],
- _bO_=[0,70,130,180],
- _bP_=[0,210,180,140],
- _bQ_=[0,0,128,128],
- _bR_=[0,216,191,216],
- _bS_=[0,255,99,71],
- _bT_=[0,64,224,208],
- _bU_=[0,238,130,238],
- _bV_=[0,245,222,179],
- _bW_=[0,255,255,255],
- _bX_=[0,245,245,245],
- _bY_=[0,255,255,0],
- _bZ_=[0,154,205,50];
- function symbol(x,y){return x < y?1:0}
- function symbol$0(x,y){return x <= y?1:0}
- function symbol$1(x,y){return x !== y?1:0}
- function symbol$2(x,y){return x === y?1:0}
- function symbol$3(x,y){return y < x?1:0}
- function symbol$4(x,y){return y <= x?1:0}
- var compare=runtime.caml_int_compare;
- function equal(x,y){return x === y?1:0}
- function max(x,y){return y <= x?x:y}
- function min(x,y){return x <= y?x:y}
- var
- Int_replace_polymorphic_compar=
- [0,
- symbol,
- symbol$0,
- symbol$1,
- symbol$2,
- symbol$3,
- symbol$4,
- compare,
- equal,
- max,
- min],
- make=Stdlib_String[1],
- init=Stdlib_String[2],
- empty=Stdlib_String[3],
- of_bytes=Stdlib_String[4],
- to_bytes=Stdlib_String[5],
- concat=Stdlib_String[6],
- cat=Stdlib_String[7],
- compare$0=Stdlib_String[9],
- starts_with=Stdlib_String[10],
- ends_with=Stdlib_String[11],
- contains_from=Stdlib_String[12],
- rcontains_from=Stdlib_String[13],
- contains=Stdlib_String[14],
- sub=Stdlib_String[15],
- split_on_char=Stdlib_String[16],
- map=Stdlib_String[17],
- mapi=Stdlib_String[18],
- fold_left=Stdlib_String[19],
- fold_right=Stdlib_String[20],
- for_all=Stdlib_String[21],
- exists=Stdlib_String[22],
- trim=Stdlib_String[23],
- escaped=Stdlib_String[24],
- uppercase_ascii=Stdlib_String[25],
- lowercase_ascii=Stdlib_String[26],
- capitalize_ascii=Stdlib_String[27],
- uncapitalize_ascii=Stdlib_String[28],
- iter=Stdlib_String[29],
- iteri=Stdlib_String[30],
- index_from=Stdlib_String[31],
- index_from_opt=Stdlib_String[32],
- rindex_from=Stdlib_String[33],
- rindex_from_opt=Stdlib_String[34],
- index=Stdlib_String[35],
- index_opt=Stdlib_String[36],
- rindex=Stdlib_String[37],
- rindex_opt=Stdlib_String[38],
- to_seq=Stdlib_String[39],
- to_seqi=Stdlib_String[40],
- of_seq=Stdlib_String[41],
- blit=Stdlib_String[42],
- copy=Stdlib_String[43],
- fill=Stdlib_String[44],
- uppercase=Stdlib_String[45],
- lowercase=Stdlib_String[46],
- capitalize=Stdlib_String[47],
- uncapitalize=Stdlib_String[48],
- get_uint8=Stdlib_String[49],
- get_int8=Stdlib_String[50],
- get_uint16_ne=Stdlib_String[51],
- get_uint16_be=Stdlib_String[52],
- get_uint16_le=Stdlib_String[53],
- get_int16_ne=Stdlib_String[54],
- get_int16_be=Stdlib_String[55],
- get_int16_le=Stdlib_String[56],
- get_int32_ne=Stdlib_String[57],
- get_int32_be=Stdlib_String[58],
- get_int32_le=Stdlib_String[59],
- get_int64_ne=Stdlib_String[60],
- get_int64_be=Stdlib_String[61],
- get_int64_le=Stdlib_String[62];
- function equal$0(x,y){return runtime.caml_string_equal(x,y)}
- var
- String=
- [0,
- make,
- init,
- empty,
- of_bytes,
- to_bytes,
- concat,
- cat,
- compare$0,
- starts_with,
- ends_with,
- contains_from,
- rcontains_from,
- contains,
- sub,
- split_on_char,
- map,
- mapi,
- fold_left,
- fold_right,
- for_all,
- exists,
- trim,
- escaped,
- uppercase_ascii,
- lowercase_ascii,
- capitalize_ascii,
- uncapitalize_ascii,
- iter,
- iteri,
- index_from,
- index_from_opt,
- rindex_from,
- rindex_from_opt,
- index,
- index_opt,
- rindex,
- rindex_opt,
- to_seq,
- to_seqi,
- of_seq,
- blit,
- copy,
- fill,
- uppercase,
- lowercase,
- capitalize,
- uncapitalize,
- get_uint8,
- get_int8,
- get_uint16_ne,
- get_uint16_be,
- get_uint16_le,
- get_int16_ne,
- get_int16_be,
- get_int16_le,
- get_int32_ne,
- get_int32_be,
- get_int32_le,
- get_int64_ne,
- get_int64_be,
- get_int64_le,
- equal$0],
- chr=Stdlib_Char[1],
- escaped$0=Stdlib_Char[2],
- lowercase$0=Stdlib_Char[3],
- uppercase$0=Stdlib_Char[4],
- lowercase_ascii$0=Stdlib_Char[5],
- uppercase_ascii$0=Stdlib_Char[6],
- compare$1=Stdlib_Char[7];
- function equal$1(x,y){return x === y?1:0}
- var
- Char=
- [0,
- chr,
- escaped$0,
- lowercase$0,
- uppercase$0,
- lowercase_ascii$0,
- uppercase_ascii$0,
- compare$1,
- equal$1],
- symbol$5=Int_replace_polymorphic_compar[1],
- symbol$6=Int_replace_polymorphic_compar[2],
- symbol$7=Int_replace_polymorphic_compar[3],
- symbol$8=Int_replace_polymorphic_compar[4],
- symbol$9=Int_replace_polymorphic_compar[5],
- symbol$10=Int_replace_polymorphic_compar[6],
- compare$2=Int_replace_polymorphic_compar[7],
- equal$2=Int_replace_polymorphic_compar[8],
- max$0=Int_replace_polymorphic_compar[9],
- min$0=Int_replace_polymorphic_compar[10],
- Js_of_ocaml_Import=
- [0,
- Poly,
- Int_replace_polymorphic_compar,
- String,
- Char,
- symbol$5,
- symbol$6,
- symbol$7,
- symbol$8,
- symbol$9,
- symbol$10,
- compare$2,
- equal$2,
- max$0,
- min$0];
- caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import");
- var global=globalThis,Unsafe=[0,global],no_handler=null,t39=undefined;
- function return$0(_gO_){return _gO_}
- function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)}
- function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)}
- function test(x){return 1 - (x == no_handler?1:0)}
- function iter$0(x,f)
- {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_}
- function case$0(x,f,g)
- {return x == no_handler?caml_call1(f,0):caml_call1(g,x)}
- function get(x,f){return x == no_handler?caml_call1(f,0):x}
- function option(x){if(x){var x$0=x[1];return x$0}return no_handler}
- function to_option(x)
- {function _gM_(x){return [0,x]}
- return case$0(x,function(param){return 0},_gM_)}
- var
- Opt=
- [0,
- no_handler,
- return$0,
- map$0,
- bind,
- test,
- iter$0,
- case$0,
- get,
- option,
- to_option];
- function return$1(_gL_){return _gL_}
- function map$1(x,f){return x === t39?t39:caml_call1(f,x)}
- function bind$0(x,f){return x === t39?t39:caml_call1(f,x)}
- function test$0(x){return x !== t39?1:0}
- function iter$1(x,f)
- {var _gK_=x !== t39?1:0;return _gK_?caml_call1(f,x):_gK_}
- function case$1(x,f,g){return x === t39?caml_call1(f,0):caml_call1(g,x)}
- function get$0(x,f){return x === t39?caml_call1(f,0):x}
- function option$0(x){if(x){var x$0=x[1];return x$0}return t39}
- function to_option$0(x)
- {function _gJ_(x){return [0,x]}
- return case$1(x,function(param){return 0},_gJ_)}
- var
- Optdef=
- [0,
- t39,
- return$1,
- map$1,
- bind$0,
- test$0,
- iter$1,
- case$1,
- get$0,
- option$0,
- to_option$0];
- function coerce(x,f,g)
- {function _gH_(param){return caml_call1(g,x)}
- var _gI_=caml_call1(f,x);
- return caml_call2(Opt[8],_gI_,_gH_)}
- function coerce_opt(x,f,g)
- {function _gF_(param){return caml_call1(g,x)}
- var _gG_=caml_call2(Opt[4],x,f);
- return caml_call2(Opt[8],_gG_,_gF_)}
- var
- t25=true,
- t4=false,
- string_constr=Unsafe[1].String,
- t11=Unsafe[1].RegExp,
- t4$0=Unsafe[1].Object;
- function object_keys(t3){return t4$0.keys(t3)}
- var
- array_length=Unsafe[1].Array,
- array_get=caml_js_get,
- array_set=caml_js_set;
- function array_map(f,a)
- {return a.map
- (caml_js_wrap_callback
- (function(x,idx,param){return caml_call1(f,x)}))}
- function array_mapi(f,a)
- {return a.map
- (caml_js_wrap_callback
- (function(x,idx,param){return caml_call2(f,idx,x)}))}
- function str_array(_gE_){return _gE_}
- function match_result(_gD_){return _gD_}
- var
- t122=Unsafe[1].Date,
- math=Unsafe[1].Math,
- error_constr=Unsafe[1].Error,
- include=Jsoo_runtime[3],
- raise=include[1],
- attach_js_backtrace=include[2],
- of_exn=include[3],
- Error=include[4];
- function name(e){return caml_string_of_jsstring(e.name)}
- function message(e){return caml_string_of_jsstring(e.message)}
- function stack(e)
- {var _gC_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring);
- return caml_call1(Opt[10],_gC_)}
- function to_string(e){return caml_string_of_jsstring(e.toString())}
- function raise_js_error(e){return caml_call1(raise,e)}
- function string_of_error(e){return to_string(e)}
- var JSON=Unsafe[1].JSON;
- function decodeURI(s){return Unsafe[1].decodeURI(s)}
- function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)}
- function encodeURI(s){return Unsafe[1].encodeURI(s)}
- function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)}
- function escape(s){return Unsafe[1].escape(s)}
- function unescape(s){return Unsafe[1].unescape(s)}
- function isNaN(i){return Unsafe[1].isNaN(i) | 0}
- function parseInt(s)
- {var s$0=Unsafe[1].parseInt(s);
- return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0}
- function parseFloat(s)
- {var s$0=Unsafe[1].parseFloat(s);
- return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0}
- function _a_(param)
- {if(param[1] === Error){var e=param[2];return [0,to_string(e)]}return 0}
- caml_call1(Stdlib_Printexc[9],_a_);
- function _b_(e)
- {return e instanceof array_length
- ?0
- :[0,caml_string_of_jsstring(e.toString())]}
- caml_call1(Stdlib_Printexc[9],_b_);
- function export_js(field,x){return jsoo_exports[field] = x}
- function export$0(field,x)
- {return export_js(caml_jsstring_of_string(field),x)}
- function export_all(obj)
- {var
- t27=object_keys(obj),
- t26=
- caml_js_wrap_callback
- (function(key,param,_gB_){return export_js(key,obj[key])});
- return t27.forEach(t26)}
- var _c_=runtime.caml_js_error_of_exception;
- function _d_(_gA_){return _gA_}
- var
- _e_=
- [0,
- to_string,
- name,
- message,
- stack,
- raise,
- attach_js_backtrace,
- of_exn,
- Error,
- function(_gz_){return _gz_},
- _d_];
- function _f_(_gy_){return _gy_}
- var
- Js_of_ocaml_Js=
- [0,
- no_handler,
- function(_gx_){return _gx_},
- t39,
- _f_,
- Opt,
- Optdef,
- t25,
- t4,
- string_constr,
- t11,
- t11,
- t11,
- object_keys,
- array_length,
- array_length,
- array_get,
- array_set,
- array_map,
- array_mapi,
- str_array,
- match_result,
- t122,
- t122,
- t122,
- t122,
- t122,
- t122,
- t122,
- t122,
- t122,
- math,
- error_constr,
- _e_,
- JSON,
- decodeURI,
- decodeURIComponent,
- encodeURI,
- encodeURIComponent,
- escape,
- unescape,
- isNaN,
- parseInt,
- parseFloat,
- coerce,
- coerce_opt,
- export$0,
- export_all,
- Unsafe,
- string_of_error,
- raise_js_error,
- attach_js_backtrace,
- _c_,
- Error];
- caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js");
- function list_of_nodeList(nodeList)
- {var length=nodeList.length,acc=0,i=0;
- for(;;)
- {if(caml_call2(symbol$5,i,length))
- {var _gw_=nodeList.item(i),match=caml_call1(Opt[10],_gw_);
- if(match)
- {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0;
- continue}
- var i$1=i + 1 | 0,i=i$1;
- continue}
- return caml_call1(Stdlib_List[9],acc)}}
- var
- disconnected=1,
- preceding=2,
- following=4,
- contains$0=8,
- contained_by=16,
- implementation_specific=32;
- function has(t,mask){return caml_call2(symbol$8,t & mask,mask)}
- function add(x,y){return x | y}
- var
- DocumentPosition=
- [0,
- disconnected,
- preceding,
- following,
- contains$0,
- contained_by,
- implementation_specific,
- has,
- add,
- add];
- function appendChild(p,n){p.appendChild(n);return 0}
- function removeChild(p,n){p.removeChild(n);return 0}
- function replaceChild(p,n,o){p.replaceChild(n,o);return 0}
- function insertBefore(p,n,o){p.insertBefore(n,o);return 0}
- function nodeType(e)
- {var match=e.nodeType;
- if(match)
- switch(match - 1 | 0)
- {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]}
- return [3,e]}
- function cast(e,t){return e.nodeType === t?e:no_handler}
- function element(e){return cast(e,1)}
- function text(e)
- {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e}
- function attr(e){return cast(e,2)}
- function handler(f)
- {return function(e)
- {if(caml_call1(Opt[5],e))
- {var res=caml_call1(f,e);
- if(1 - (res | 0))e.preventDefault();
- return res}
- var t18=event,t17=caml_call1(f,t18);
- if(1 - (t17 | 0))t18.returnValue = t17;
- return t17}}
- function full_handler(f)
- {return runtime.caml_js_wrap_meth_callback_unsafe
- (function(this$0,e)
- {if(caml_call1(Opt[5],e))
- {var res=caml_call2(f,this$0,e);
- if(1 - (res | 0))e.preventDefault();
- return res}
- var t21=event,t20=caml_call2(f,this$0,t21);
- if(1 - (t20 | 0))t21.returnValue = t20;
- return t20})}
- function invoke_handler(f,this$0,event){return f.call(this$0,event)}
- function eventTarget(e)
- {function _gt_(param)
- {function _gv_(param){throw Stdlib[8]}
- return caml_call2(Opt[8],e.srcElement,_gv_)}
- var t27=caml_call2(Opt[8],e.target,_gt_);
- if(t27 instanceof Unsafe[1].Node)
- {if(3 === t27.nodeType)
- {var _gu_=function(param){throw [0,Assert_failure,_g_]};
- return caml_call2(Opt[8],t27.parentNode,_gu_)}
- return t27}
- return t27}
- function make$0(s){return caml_jsstring_of_string(s)}
- var Event=[0,make$0];
- function addEventListenerWithOptions(t50,t47,capture,once,passive,t48)
- {if(t50.addEventListener === t39)
- {var
- t34="on".concat(t47),
- t35=
- function(e)
- {var _gq_=[0,t48,e,[0]];
- return function(_gr_,_gs_)
- {return runtime.caml_js_call(_gq_,_gr_,_gs_)}};
- t50.attachEvent(t34,t35);
- return function(param){return t50.detachEvent(t34,t35)}}
- var t49={};
- function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0}
- iter(capture,function(t37){return t49.capture = t37});
- iter(once,function(t39){return t49.once = t39});
- iter(passive,function(t41){return t49.passive = t41});
- t50.addEventListener(t47,t48,t49);
- return function(param){return t50.removeEventListener(t47,t48,t49)}}
- function addEventListener(e,typ,h,capt)
- {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)}
- function removeEventListener(id){return caml_call1(id,0)}
- function preventDefault(t54)
- {if(caml_call1(Optdef[5],t54.preventDefault))return t54.preventDefault();
- var t53=! ! 0;
- return t54.returnValue = t53}
- function createCustomEvent(bubbles,cancelable,detail,t62)
- {function opt_iter(f,param)
- {if(param){var x=param[1];return caml_call1(f,x)}return 0}
- var t63={};
- opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles);
- opt_iter
- (function(x){var t57=! ! x;return t63.cancelable = t57},cancelable);
- opt_iter(function(t59){return t63.detail = t59},detail);
- var t64=Unsafe[1].CustomEvent;
- return new t64(t62,t63)}
- var
- Js_of_ocaml_Dom=
- [0,
- DocumentPosition,
- insertBefore,
- replaceChild,
- removeChild,
- appendChild,
- list_of_nodeList,
- nodeType,
- [0,element,text,attr],
- no_handler,
- handler,
- full_handler,
- invoke_handler,
- eventTarget,
- Event,
- addEventListenerWithOptions,
- addEventListener,
- removeEventListener,
- preventDefault,
- createCustomEvent];
- caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom");
- var
- arrayBuffer=Unsafe[1].ArrayBuffer,
- int8Array_inBuffer=Unsafe[1].Int8Array,
- t11$0=Unsafe[1].Uint8Array,
- int16Array_inBuffer=Unsafe[1].Int16Array,
- uint16Array_inBuffer=Unsafe[1].Uint16Array,
- int32Array_inBuffer=Unsafe[1].Int32Array,
- uint32Array_inBuffer=Unsafe[1].Uint32Array,
- float32Array_inBuffer=Unsafe[1].Float32Array,
- float64Array_inBuffer=Unsafe[1].Float64Array,
- set=caml_js_set;
- function get$1(a,i){return a[i]}
- function unsafe_get(a,i){return a[i]}
- var dataView=Unsafe[1].DataView;
- function of_arrayBuffer(ab)
- {var uint8=new t11$0(ab);return caml_string_of_array(uint8)}
- var
- Js_of_ocaml_Typed_array=
- [0,
- arrayBuffer,
- runtime.caml_ba_kind_of_typed_array,
- runtime.caml_ba_to_typed_array,
- runtime.caml_ba_from_typed_array,
- int8Array_inBuffer,
- int8Array_inBuffer,
- int8Array_inBuffer,
- int8Array_inBuffer,
- int8Array_inBuffer,
- t11$0,
- t11$0,
- t11$0,
- t11$0,
- t11$0,
- int16Array_inBuffer,
- int16Array_inBuffer,
- int16Array_inBuffer,
- int16Array_inBuffer,
- int16Array_inBuffer,
- uint16Array_inBuffer,
- uint16Array_inBuffer,
- uint16Array_inBuffer,
- uint16Array_inBuffer,
- uint16Array_inBuffer,
- int32Array_inBuffer,
- int32Array_inBuffer,
- int32Array_inBuffer,
- int32Array_inBuffer,
- int32Array_inBuffer,
- uint32Array_inBuffer,
- uint32Array_inBuffer,
- uint32Array_inBuffer,
- uint32Array_inBuffer,
- uint32Array_inBuffer,
- float32Array_inBuffer,
- float32Array_inBuffer,
- float32Array_inBuffer,
- float32Array_inBuffer,
- float32Array_inBuffer,
- float64Array_inBuffer,
- float64Array_inBuffer,
- float64Array_inBuffer,
- float64Array_inBuffer,
- float64Array_inBuffer,
- set,
- get$1,
- unsafe_get,
- dataView,
- dataView,
- [0,
- runtime.bigstring_to_array_buffer,
- runtime.bigstring_to_typed_array,
- runtime.bigstring_of_array_buffer,
- runtime.bigstring_of_typed_array],
- [0,of_arrayBuffer,caml_string_of_array]];
- caml_register_global
- (1646,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array");
- var t3=Unsafe[1].Blob;
- function filter_map(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var q=param$0[2],v=param$0[1],match=caml_call1(f,v);
- if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]}
- var param$0=q;
- continue}
- return 0}}
- function blob_raw(contentType,endings,a)
- {var _gm_=0;
- if(endings)
- var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_;
- else
- var _go_=0;
- var
- _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]],
- options=
- filter_map
- (function(param)
- {var v=param[2],name=param[1];
- if(v)
- {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]}
- return 0},
- _gp_),
- options$0=
- options
- ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options))
- :t39,
- t1=caml_js_from_array(a);
- return new t3(t1,options$0)}
- function blob_from_string(contentType,endings,s)
- {return blob_raw(contentType,endings,[0,caml_jsstring_of_string(s)])}
- function blob_from_any(contentType,endings,l)
- {function _gk_(param)
- {var _gl_=param[1];
- if(155580615 === _gl_){var s=param[2];return s}
- if(486041214 <= _gl_)
- {if(1037850489 <= _gl_){var a=param[2];return a}
- var a$0=param[2];
- return a$0}
- if(288368849 <= _gl_)
- {var s$0=param[2];return caml_jsstring_of_string(s$0)}
- var b=param[2];
- return b}
- var l$0=caml_call2(Stdlib_List[19],_gk_,l);
- return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))}
- function filename(file)
- {var match=caml_call1(Optdef[10],file.name);
- if(match){var name=match[1];return name}
- var match$0=caml_call1(Optdef[10],file.fileName);
- if(match$0){var name$0=match$0[1];return name$0}
- return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)}
- var doc_constr=Unsafe[1].Document;
- function document(e){return e instanceof doc_constr?e:no_handler}
- function blob(e){return e instanceof t3?e:no_handler}
- function string(e){return typeof e === "string"?e:no_handler}
- function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler}
- var
- loadstart=caml_call1(Event[1],cst_loadstart),
- progress=caml_call1(Event[1],cst_progress),
- abort=caml_call1(Event[1],cst_abort),
- error=caml_call1(Event[1],cst_error),
- load=caml_call1(Event[1],cst_load),
- loadend=caml_call1(Event[1],cst_loadend),
- ReaderEvent=[0,loadstart,progress,abort,error,load,loadend],
- fileReader=Unsafe[1].FileReader,
- Js_of_ocaml_File=
- [0,
- blob_from_string,
- blob_from_any,
- [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0],
- ReaderEvent,
- filename,
- fileReader,
- addEventListener];
- caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File");
- var
- onIE=runtime.caml_js_on_ie(0) | 0,
- click=caml_call1(Event[1],cst_click),
- copy$0=caml_call1(Event[1],cst_copy),
- cut=caml_call1(Event[1],cst_cut),
- paste=caml_call1(Event[1],cst_paste),
- dblclick=caml_call1(Event[1],cst_dblclick),
- mousedown=caml_call1(Event[1],cst_mousedown),
- mouseup=caml_call1(Event[1],cst_mouseup),
- mouseover=caml_call1(Event[1],cst_mouseover),
- mousemove=caml_call1(Event[1],cst_mousemove),
- mouseout=caml_call1(Event[1],cst_mouseout),
- keypress=caml_call1(Event[1],cst_keypress),
- keydown=caml_call1(Event[1],cst_keydown),
- keyup=caml_call1(Event[1],cst_keyup),
- mousewheel=caml_call1(Event[1],cst_mousewheel),
- DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll),
- touchstart=caml_call1(Event[1],cst_touchstart),
- touchmove=caml_call1(Event[1],cst_touchmove),
- touchend=caml_call1(Event[1],cst_touchend),
- touchcancel=caml_call1(Event[1],cst_touchcancel),
- dragstart=caml_call1(Event[1],cst_dragstart),
- dragend=caml_call1(Event[1],cst_dragend),
- dragenter=caml_call1(Event[1],cst_dragenter),
- dragover=caml_call1(Event[1],cst_dragover),
- dragleave=caml_call1(Event[1],cst_dragleave),
- drag=caml_call1(Event[1],cst_drag),
- drop=caml_call1(Event[1],cst_drop),
- hashchange=caml_call1(Event[1],cst_hashchange),
- change=caml_call1(Event[1],cst_change),
- input=caml_call1(Event[1],cst_input),
- timeupdate=caml_call1(Event[1],cst_timeupdate),
- submit=caml_call1(Event[1],cst_submit),
- scroll=caml_call1(Event[1],cst_scroll),
- focus=caml_call1(Event[1],cst_focus),
- blur=caml_call1(Event[1],cst_blur),
- load$0=caml_call1(Event[1],cst_load$0),
- unload=caml_call1(Event[1],cst_unload),
- beforeunload=caml_call1(Event[1],cst_beforeunload),
- resize=caml_call1(Event[1],cst_resize),
- orientationchange=caml_call1(Event[1],cst_orientationchange),
- popstate=caml_call1(Event[1],cst_popstate),
- error$0=caml_call1(Event[1],cst_error$0),
- abort$0=caml_call1(Event[1],cst_abort$0),
- select=caml_call1(Event[1],cst_select),
- online=caml_call1(Event[1],cst_online),
- offline=caml_call1(Event[1],cst_offline),
- checking=caml_call1(Event[1],cst_checking),
- noupdate=caml_call1(Event[1],cst_noupdate),
- downloading=caml_call1(Event[1],cst_downloading),
- progress$0=caml_call1(Event[1],cst_progress$0),
- updateready=caml_call1(Event[1],cst_updateready),
- cached=caml_call1(Event[1],cst_cached),
- obsolete=caml_call1(Event[1],cst_obsolete),
- domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded),
- animationstart=caml_call1(Event[1],cst_animationstart),
- animationend=caml_call1(Event[1],cst_animationend),
- animationiteration=caml_call1(Event[1],cst_animationiteration),
- animationcancel=caml_call1(Event[1],cst_animationcancel),
- canplay=caml_call1(Event[1],cst_canplay),
- canplaythrough=caml_call1(Event[1],cst_canplaythrough),
- durationchange=caml_call1(Event[1],cst_durationchange),
- emptied=caml_call1(Event[1],cst_emptied),
- ended=caml_call1(Event[1],cst_ended),
- gotpointercapture=caml_call1(Event[1],cst_gotpointercapture),
- loadeddata=caml_call1(Event[1],cst_loadeddata),
- loadedmetadata=caml_call1(Event[1],cst_loadedmetadata),
- loadstart$0=caml_call1(Event[1],cst_loadstart$0),
- lostpointercapture=caml_call1(Event[1],cst_lostpointercapture),
- message$0=caml_call1(Event[1],cst_message),
- pause=caml_call1(Event[1],cst_pause),
- play=caml_call1(Event[1],cst_play),
- playing=caml_call1(Event[1],cst_playing),
- pointerenter=caml_call1(Event[1],cst_pointerenter),
- pointercancel=caml_call1(Event[1],cst_pointercancel),
- pointerdown=caml_call1(Event[1],cst_pointerdown),
- pointerleave=caml_call1(Event[1],cst_pointerleave),
- pointermove=caml_call1(Event[1],cst_pointermove),
- pointerout=caml_call1(Event[1],cst_pointerout),
- pointerover=caml_call1(Event[1],cst_pointerover),
- pointerup=caml_call1(Event[1],cst_pointerup),
- ratechange=caml_call1(Event[1],cst_ratechange),
- seeked=caml_call1(Event[1],cst_seeked),
- seeking=caml_call1(Event[1],cst_seeking),
- stalled=caml_call1(Event[1],cst_stalled),
- suspend=caml_call1(Event[1],cst_suspend),
- volumechange=caml_call1(Event[1],cst_volumechange),
- waiting=caml_call1(Event[1],cst_waiting),
- make$1=Event[1],
- Event$0=
- [0,
- click,
- copy$0,
- cut,
- paste,
- dblclick,
- mousedown,
- mouseup,
- mouseover,
- mousemove,
- mouseout,
- keypress,
- keydown,
- keyup,
- mousewheel,
- DOMMouseScroll,
- touchstart,
- touchmove,
- touchend,
- touchcancel,
- dragstart,
- dragend,
- dragenter,
- dragover,
- dragleave,
- drag,
- drop,
- hashchange,
- change,
- input,
- timeupdate,
- submit,
- scroll,
- focus,
- blur,
- load$0,
- unload,
- beforeunload,
- resize,
- orientationchange,
- popstate,
- error$0,
- abort$0,
- select,
- online,
- offline,
- checking,
- noupdate,
- downloading,
- progress$0,
- updateready,
- cached,
- obsolete,
- domContentLoaded,
- animationstart,
- animationend,
- animationiteration,
- animationcancel,
- canplay,
- canplaythrough,
- durationchange,
- emptied,
- ended,
- gotpointercapture,
- loadeddata,
- loadedmetadata,
- loadstart$0,
- lostpointercapture,
- message$0,
- pause,
- play,
- playing,
- pointerenter,
- pointercancel,
- pointerdown,
- pointerleave,
- pointermove,
- pointerout,
- pointerover,
- pointerup,
- ratechange,
- seeked,
- seeking,
- stalled,
- suspend,
- volumechange,
- waiting,
- make$1],
- d="2d";
- function location_origin(loc)
- {function _gh_(o){return o}
- function _gi_(param)
- {var t8=loc.protocol,t7=loc.hostname,t9=loc.port;
- if
- (caml_call2(symbol$8,t8.length,0)
- &&
- caml_call2(symbol$8,t7.length,0))
- return "";
- var t13=t8.concat("//",t7);
- if(caml_call2(symbol$9,t9.length,0))
- {var t12=loc.port;return t13.concat(":",t12)}
- return t13}
- return caml_call3(Optdef[7],loc.origin,_gi_,_gh_)}
- var _j_=Unsafe[1],t87=_j_.document;
- function getElementById(id)
- {function _ge_(pnode){return pnode}
- function _gf_(param){throw Stdlib[8]}
- var t15=caml_jsstring_of_string(id),_gg_=t87.getElementById(t15);
- return caml_call3(Opt[7],_gg_,_gf_,_ge_)}
- function getElementById_exn(id)
- {function _ga_(pnode){return pnode}
- function _gb_(param)
- {var _gd_=caml_call2(Stdlib_Printf[4],_k_,id);
- return caml_call1(Stdlib[2],_gd_)}
- var t17=caml_jsstring_of_string(id),_gc_=t87.getElementById(t17);
- return caml_call3(Opt[7],_gc_,_gb_,_ga_)}
- function getElementById_opt(id)
- {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19);
- return caml_call1(Opt[10],_f$_)}
- function getElementById_coerce(id,coerce)
- {function _f7_(e)
- {var _f__=caml_call1(coerce,e);return caml_call1(Opt[10],_f__)}
- function _f8_(param){return 0}
- var t21=caml_jsstring_of_string(id),_f9_=t87.getElementById(t21);
- return caml_call3(Opt[7],_f9_,_f8_,_f7_)}
- function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0}
- function createElement(t24,name)
- {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)}
- function unsafeCreateElement(doc,name){return createElement(doc,name)}
- var createElementSyntax=[0,785140586];
- function unsafeCreateElementEx(type,name,doc,elt)
- {for(;;)
- {if(0 === type && 0 === name)return createElement(doc,elt);
- var _f1_=createElementSyntax[1];
- if(785140586 === _f1_)
- {try
- {var
- el=t87.createElement(''),
- _f4_=el.tagName.toLowerCase() === "input"?1:0,
- _f5_=_f4_?el.name === "x"?1:0:_f4_,
- _f2_=_f5_}
- catch(_f6_){var _f2_=0}
- var _f3_=_f2_?982028505:-1003883683;
- createElementSyntax[1] = _f3_;
- continue}
- if(982028505 <= _f1_)
- {var t40=new array_length();
- t40.push("<",caml_jsstring_of_string(elt));
- opt_iter
- (type,
- function(t)
- {var t34=caml_js_html_escape(t);
- t40.push(' type="',t34,'"');
- return 0});
- opt_iter
- (name,
- function(n)
- {var t38=caml_js_html_escape(n);
- t40.push(' name="',t38,'"');
- return 0});
- t40.push(">");
- return doc.createElement(t40.join(""))}
- var t28=createElement(doc,elt);
- opt_iter(type,function(t25){return t28.type = t25});
- opt_iter(name,function(t27){return t28.name = t27});
- return t28}}
- function createHtml(doc){return unsafeCreateElement(doc,cst_html)}
- function createHead(doc){return unsafeCreateElement(doc,cst_head)}
- function createLink(doc){return unsafeCreateElement(doc,cst_link)}
- function createTitle(doc){return unsafeCreateElement(doc,cst_title)}
- function createMeta(doc){return unsafeCreateElement(doc,cst_meta)}
- function createBase(doc){return unsafeCreateElement(doc,cst_base)}
- function createStyle(doc){return unsafeCreateElement(doc,cst_style)}
- function createBody(doc){return unsafeCreateElement(doc,cst_body)}
- function createForm(doc){return unsafeCreateElement(doc,cst_form)}
- function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)}
- function createOption(doc){return unsafeCreateElement(doc,cst_option)}
- function createSelect(type,name,doc)
- {return unsafeCreateElementEx(type,name,doc,cst_select$0)}
- function createInput(type,name,doc)
- {return unsafeCreateElementEx(type,name,doc,cst_input$0)}
- function createTextarea(type,name,doc)
- {return unsafeCreateElementEx(type,name,doc,cst_textarea)}
- function createButton(type,name,doc)
- {return unsafeCreateElementEx(type,name,doc,cst_button)}
- function createLabel(doc){return unsafeCreateElement(doc,cst_label)}
- function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)}
- function createLegend(doc){return unsafeCreateElement(doc,cst_legend)}
- function createUl(doc){return unsafeCreateElement(doc,cst_ul)}
- function createOl(doc){return unsafeCreateElement(doc,cst_ol)}
- function createDl(doc){return unsafeCreateElement(doc,cst_dl)}
- function createLi(doc){return unsafeCreateElement(doc,cst_li)}
- function createDiv(doc){return unsafeCreateElement(doc,cst_div)}
- function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)}
- function createP(doc){return unsafeCreateElement(doc,cst_p)}
- function createH1(doc){return unsafeCreateElement(doc,cst_h1)}
- function createH2(doc){return unsafeCreateElement(doc,cst_h2)}
- function createH3(doc){return unsafeCreateElement(doc,cst_h3)}
- function createH4(doc){return unsafeCreateElement(doc,cst_h4)}
- function createH5(doc){return unsafeCreateElement(doc,cst_h5)}
- function createH6(doc){return unsafeCreateElement(doc,cst_h6)}
- function createQ(doc){return unsafeCreateElement(doc,cst_q)}
- function createBlockquote(doc)
- {return unsafeCreateElement(doc,cst_blockquote)}
- function createPre(doc){return unsafeCreateElement(doc,cst_pre)}
- function createBr(doc){return unsafeCreateElement(doc,cst_br)}
- function createHr(doc){return unsafeCreateElement(doc,cst_hr)}
- function createIns(doc){return unsafeCreateElement(doc,cst_ins)}
- function createDel(doc){return unsafeCreateElement(doc,cst_del)}
- function createA(doc){return unsafeCreateElement(doc,cst_a)}
- function createImg(doc){return unsafeCreateElement(doc,cst_img)}
- function createObject(doc){return unsafeCreateElement(doc,cst_object)}
- function createParam(doc){return unsafeCreateElement(doc,cst_param)}
- function createMap(doc){return unsafeCreateElement(doc,cst_map)}
- function createArea(doc){return unsafeCreateElement(doc,cst_area)}
- function createScript(doc){return unsafeCreateElement(doc,cst_script)}
- function createTable(doc){return unsafeCreateElement(doc,cst_table)}
- function createCaption(doc){return unsafeCreateElement(doc,cst_caption)}
- function createCol(doc){return unsafeCreateElement(doc,cst_col)}
- function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)}
- function createThead(doc){return unsafeCreateElement(doc,cst_thead)}
- function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)}
- function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)}
- function createTr(doc){return unsafeCreateElement(doc,cst_tr)}
- function createTh(doc){return unsafeCreateElement(doc,cst_th)}
- function createTd(doc){return unsafeCreateElement(doc,cst_td)}
- function createSub(doc){return createElement(doc,cst_sub)}
- function createSup(doc){return createElement(doc,cst_sup)}
- function createSpan(doc){return createElement(doc,cst_span)}
- function createTt(doc){return createElement(doc,cst_tt)}
- function createI(doc){return createElement(doc,cst_i)}
- function createB(doc){return createElement(doc,cst_b)}
- function createBig(doc){return createElement(doc,cst_big)}
- function createSmall(doc){return createElement(doc,cst_small)}
- function createEm(doc){return createElement(doc,cst_em)}
- function createStrong(doc){return createElement(doc,cst_strong)}
- function createCite(doc){return createElement(doc,cst_cite)}
- function createDfn(doc){return createElement(doc,cst_dfn)}
- function createCode(doc){return createElement(doc,cst_code)}
- function createSamp(doc){return createElement(doc,cst_samp)}
- function createKbd(doc){return createElement(doc,cst_kbd)}
- function createVar(doc){return createElement(doc,cst_var)}
- function createAbbr(doc){return createElement(doc,cst_abbr)}
- function createDd(doc){return createElement(doc,cst_dd)}
- function createDt(doc){return createElement(doc,cst_dt)}
- function createNoscript(doc){return createElement(doc,cst_noscript)}
- function createAddress(doc){return createElement(doc,cst_address)}
- function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)}
- function createFrame(doc){return unsafeCreateElement(doc,cst_frame)}
- function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)}
- function createAudio(doc){return unsafeCreateElement(doc,cst_audio)}
- function createVideo(doc){return unsafeCreateElement(doc,cst_video)}
- var
- Canvas_not_available=
- [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)];
- function createCanvas(doc)
- {var t52=unsafeCreateElement(doc,cst_canvas);
- if(1 - caml_call1(Opt[5],t52.getContext))throw Canvas_not_available;
- return t52}
- var
- html_element=Unsafe[1].HTMLElement,
- element$0=
- html_element === t39
- ?function(e){return e.innerHTML === t39?no_handler:e}
- :function(e){return e instanceof html_element?e:no_handler};
- function unsafeCoerce(tag,e)
- {var t56=e.tagName,_f0_=caml_jsstring_of_string(tag);
- return t56.toLowerCase() === _f0_?e:no_handler}
- function a(e){return unsafeCoerce(cst_a$0,e)}
- function area(e){return unsafeCoerce(cst_area$0,e)}
- function base(e){return unsafeCoerce(cst_base$0,e)}
- function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)}
- function body(e){return unsafeCoerce(cst_body$0,e)}
- function br(e){return unsafeCoerce(cst_br$0,e)}
- function button(e){return unsafeCoerce(cst_button$0,e)}
- function canvas(e){return unsafeCoerce(cst_canvas$0,e)}
- function caption(e){return unsafeCoerce(cst_caption$0,e)}
- function col(e){return unsafeCoerce(cst_col$0,e)}
- function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)}
- function del(e){return unsafeCoerce(cst_del$0,e)}
- function div(e){return unsafeCoerce(cst_div$0,e)}
- function dl(e){return unsafeCoerce(cst_dl$0,e)}
- function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)}
- function embed(e){return unsafeCoerce(cst_embed$0,e)}
- function form(e){return unsafeCoerce(cst_form$0,e)}
- function frameset(e){return unsafeCoerce(cst_frameset$0,e)}
- function frame(e){return unsafeCoerce(cst_frame$0,e)}
- function h1(e){return unsafeCoerce(cst_h1$0,e)}
- function h2(e){return unsafeCoerce(cst_h2$0,e)}
- function h3(e){return unsafeCoerce(cst_h3$0,e)}
- function h4(e){return unsafeCoerce(cst_h4$0,e)}
- function h5(e){return unsafeCoerce(cst_h5$0,e)}
- function h6(e){return unsafeCoerce(cst_h6$0,e)}
- function head(e){return unsafeCoerce(cst_head$0,e)}
- function hr(e){return unsafeCoerce(cst_hr$0,e)}
- function html(e){return unsafeCoerce(cst_html$0,e)}
- function iframe(e){return unsafeCoerce(cst_iframe$0,e)}
- function img(e){return unsafeCoerce(cst_img$0,e)}
- function input$0(e){return unsafeCoerce(cst_input$1,e)}
- function ins(e){return unsafeCoerce(cst_ins$0,e)}
- function label(e){return unsafeCoerce(cst_label$0,e)}
- function legend(e){return unsafeCoerce(cst_legend$0,e)}
- function li(e){return unsafeCoerce(cst_li$0,e)}
- function link(e){return unsafeCoerce(cst_link$0,e)}
- function map$2(e){return unsafeCoerce(cst_map$0,e)}
- function meta(e){return unsafeCoerce(cst_meta$0,e)}
- function object(e){return unsafeCoerce(cst_object$0,e)}
- function ol(e){return unsafeCoerce(cst_ol$0,e)}
- function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)}
- function option$1(e){return unsafeCoerce(cst_option$0,e)}
- function p(e){return unsafeCoerce(cst_p$0,e)}
- function param(e){return unsafeCoerce(cst_param$0,e)}
- function pre(e){return unsafeCoerce(cst_pre$0,e)}
- function q(e){return unsafeCoerce(cst_q$0,e)}
- function script(e){return unsafeCoerce(cst_script$0,e)}
- function select$0(e){return unsafeCoerce(cst_select$1,e)}
- function style(e){return unsafeCoerce(cst_style$0,e)}
- function table(e){return unsafeCoerce(cst_table$0,e)}
- function tbody(e){return unsafeCoerce(cst_tbody$0,e)}
- function td(e){return unsafeCoerce(cst_td$0,e)}
- function textarea(e){return unsafeCoerce(cst_textarea$0,e)}
- function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)}
- function th(e){return unsafeCoerce(cst_th$0,e)}
- function thead(e){return unsafeCoerce(cst_thead$0,e)}
- function title(e){return unsafeCoerce(cst_title$0,e)}
- function tr(e){return unsafeCoerce(cst_tr$0,e)}
- function ul(e){return unsafeCoerce(cst_ul$0,e)}
- function audio(e){return unsafeCoerce(cst_audio$0,e)}
- function video(e){return unsafeCoerce(cst_video$0,e)}
- function unsafeCoerceEvent(constr,ev)
- {if(constr !== t39 && ev instanceof constr)return ev;return no_handler}
- function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)}
- function keyboardEvent(ev)
- {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)}
- function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)}
- function mouseScrollEvent(ev)
- {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)}
- function popStateEvent(ev)
- {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)}
- function messageEvent(ev)
- {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)}
- function eventRelatedTarget(e)
- {function _fX_(param)
- {var match=caml_string_of_jsstring(e.type);
- if(caml_string_notequal(match,cst_mouseout$0))
- {if(caml_string_notequal(match,cst_mouseover$0))return no_handler;
- var _fY_=function(param){throw [0,Assert_failure,_l_]};
- return caml_call2(Optdef[8],e.fromElement,_fY_)}
- function _fZ_(param){throw [0,Assert_failure,_m_]}
- return caml_call2(Optdef[8],e.toElement,_fZ_)}
- return caml_call2(Optdef[8],e.relatedTarget,_fX_)}
- function eventAbsolutePosition(e)
- {var t70=t87.body,t71=t87.documentElement;
- return [0,
- (e.clientX + t70.scrollLeft | 0) + t71.scrollLeft | 0,
- (e.clientY + t70.scrollTop | 0) + t71.scrollTop | 0]}
- function eventAbsolutePosition$0(e)
- {function _fT_(x)
- {function _fV_(y){return [0,x,y]}
- function _fW_(param){return eventAbsolutePosition(e)}
- return caml_call3(Optdef[7],e.pageY,_fW_,_fV_)}
- function _fU_(param){return eventAbsolutePosition(e)}
- return caml_call3(Optdef[7],e.pageX,_fU_,_fT_)}
- function elementClientPosition(e)
- {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement;
- return [0,
- ((t80.left | 0) - t81.clientLeft | 0) - t82.clientLeft | 0,
- ((t80.top | 0) - t81.clientTop | 0) - t82.clientTop | 0]}
- function getDocumentScroll(param)
- {var t88=t87.body,t89=t87.documentElement;
- return [0,
- t88.scrollLeft + t89.scrollLeft | 0,
- t88.scrollTop + t89.scrollTop | 0]}
- function buttonPressed(ev)
- {function _fR_(x){return x}
- function _fS_(param)
- {var match=ev.button,switcher=match - 1 | 0;
- if(! (3 < switcher >>> 0))
- switch(switcher)
- {case 0:return 1;case 1:return 3;case 2:break;default:return 2}
- return 0}
- return caml_call3(Optdef[7],ev.which,_fS_,_fR_)}
- function addMousewheelEventListenerWith(e,capture,once,passive,h)
- {var t96=createDiv(t87);
- t96.setAttribute("onmousewheel","return;");
- if(typeof t96.onmousewheel === "function")
- {var
- _fN_=
- handler
- (function(e)
- {function _fP_(param){return 0}
- var
- dx=
- (- caml_call2(Optdef[8],e.wheelDeltaX,_fP_) | 0) / 40 | 0;
- function _fQ_(param){return e.wheelDelta}
- var
- dy=
- (- caml_call2(Optdef[8],e.wheelDeltaY,_fQ_) | 0) / 40 | 0;
- return caml_call3(h,e,dx,dy)});
- return addEventListenerWithOptions
- (e,Event$0[14],capture,once,passive,_fN_)}
- var
- _fO_=
- handler
- (function(e)
- {var d=e.detail;
- return e.axis === e.HORIZONTAL
- ?caml_call3(h,e,d,0)
- :caml_call3(h,e,0,d)});
- return addEventListenerWithOptions
- (e,Event$0[15],capture,once,passive,_fO_)}
- function addMousewheelEventListener(e,h,capt)
- {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)}
- function f(v)
- {var
- match=caml_string_of_jsstring(v),
- switch$0=caml_string_compare(match,cst_KeyH);
- if(0 <= switch$0)
- {if(! (0 < switch$0))return 8;
- var switch$1=caml_string_compare(match,cst_Numpad4);
- if(0 <= switch$1)
- {if(! (0 < switch$1))return 72;
- var switch$2=caml_string_compare(match,cst_PageUp);
- if(0 <= switch$2)
- {if(! (0 < switch$2))return 98;
- var switch$3=caml_string_compare(match,cst_ShiftRight);
- if(0 <= switch$3)
- {if(! (0 < switch$3))return 91;
- if(! caml_string_notequal(match,cst_Slash))return 55;
- if(! caml_string_notequal(match,cst_Space))return 41;
- if(! caml_string_notequal(match,cst_Tab))return 39;
- if(! caml_string_notequal(match,cst_VolumeDown))return 103;
- if(! caml_string_notequal(match,cst_VolumeMute))return 102;
- if(! caml_string_notequal(match,cst_VolumeUp))return 104}
- else
- {if(! caml_string_notequal(match,cst_Pause))return 123;
- if(! caml_string_notequal(match,cst_Period))return 54;
- if(! caml_string_notequal(match,cst_PrintScreen))return 120;
- if(! caml_string_notequal(match,cst_Quote))return 50;
- if(! caml_string_notequal(match,cst_ScrollLock))return 119;
- if(! caml_string_notequal(match,cst_Semicolon))return 49;
- if(! caml_string_notequal(match,cst_ShiftLeft))return 90}}
- else
- {var switch$4=caml_string_compare(match,cst_NumpadDivide);
- if(0 <= switch$4)
- {if(! (0 < switch$4))return 84;
- if(! caml_string_notequal(match,cst_NumpadEnter))return 83;
- if(! caml_string_notequal(match,cst_NumpadEqual))return 82;
- if(! caml_string_notequal(match,cst_NumpadMultiply))return 78;
- if(! caml_string_notequal(match,cst_NumpadSubtract))return 79;
- if(! caml_string_notequal(match,cst_OSLeft))return 117;
- if(! caml_string_notequal(match,cst_OSRight))return 118;
- if(! caml_string_notequal(match,cst_PageDown))return 99}
- else
- {if(! caml_string_notequal(match,cst_Numpad5))return 73;
- if(! caml_string_notequal(match,cst_Numpad6))return 74;
- if(! caml_string_notequal(match,cst_Numpad7))return 75;
- if(! caml_string_notequal(match,cst_Numpad8))return 76;
- if(! caml_string_notequal(match,cst_Numpad9))return 77;
- if(! caml_string_notequal(match,cst_NumpadAdd))return 80;
- if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}}
- else
- {var switch$5=caml_string_compare(match,cst_KeyX);
- if(0 <= switch$5)
- {if(! (0 < switch$5))return 24;
- var switch$6=caml_string_compare(match,cst_MetaRight);
- if(0 <= switch$6)
- {if(! (0 < switch$6))return 89;
- if(! caml_string_notequal(match,cst_Minus))return 37;
- if(! caml_string_notequal(match,cst_NumLock))return 85;
- if(! caml_string_notequal(match,cst_Numpad0))return 68;
- if(! caml_string_notequal(match,cst_Numpad1))return 69;
- if(! caml_string_notequal(match,cst_Numpad2))return 70;
- if(! caml_string_notequal(match,cst_Numpad3))return 71}
- else
- {if(! caml_string_notequal(match,cst_KeyY))return 25;
- if(! caml_string_notequal(match,cst_KeyZ))return 26;
- if(! caml_string_notequal(match,cst_MediaPlayPause))return 107;
- if(! caml_string_notequal(match,cst_MediaStop))return 108;
- if(! caml_string_notequal(match,cst_MediaTrackNext))return 106;
- if(! caml_string_notequal(match,cst_MediaTrackPrevious))
- return 105;
- if(! caml_string_notequal(match,cst_MetaLeft))return 88}}
- else
- {var switch$7=caml_string_compare(match,cst_KeyP);
- if(0 <= switch$7)
- {if(! (0 < switch$7))return 16;
- if(! caml_string_notequal(match,cst_KeyQ))return 17;
- if(! caml_string_notequal(match,cst_KeyR))return 18;
- if(! caml_string_notequal(match,cst_KeyS))return 19;
- if(! caml_string_notequal(match,cst_KeyT))return 20;
- if(! caml_string_notequal(match,cst_KeyU))return 21;
- if(! caml_string_notequal(match,cst_KeyV))return 22;
- if(! caml_string_notequal(match,cst_KeyW))return 23}
- else
- {if(! caml_string_notequal(match,cst_KeyI))return 9;
- if(! caml_string_notequal(match,cst_KeyJ))return 10;
- if(! caml_string_notequal(match,cst_KeyK))return 11;
- if(! caml_string_notequal(match,cst_KeyL))return 12;
- if(! caml_string_notequal(match,cst_KeyM))return 13;
- if(! caml_string_notequal(match,cst_KeyN))return 14;
- if(! caml_string_notequal(match,cst_KeyO))return 15}}}}
- else
- {var switch$8=caml_string_compare(match,cst_Digit6);
- if(0 <= switch$8)
- {if(! (0 < switch$8))return 33;
- var switch$9=caml_string_compare(match,cst_F6);
- if(0 <= switch$9)
- {if(! (0 < switch$9))return 61;
- var switch$10=caml_string_compare(match,cst_KeyA);
- if(0 <= switch$10)
- {if(! (0 < switch$10))return 1;
- if(! caml_string_notequal(match,cst_KeyB))return 2;
- if(! caml_string_notequal(match,cst_KeyC))return 3;
- if(! caml_string_notequal(match,cst_KeyD))return 4;
- if(! caml_string_notequal(match,cst_KeyE))return 5;
- if(! caml_string_notequal(match,cst_KeyF))return 6;
- if(! caml_string_notequal(match,cst_KeyG))return 7}
- else
- {if(! caml_string_notequal(match,cst_F7))return 62;
- if(! caml_string_notequal(match,cst_F8))return 63;
- if(! caml_string_notequal(match,cst_F9))return 64;
- if(! caml_string_notequal(match,cst_Home))return 100;
- if(! caml_string_notequal(match,cst_Insert))return 44;
- if(! caml_string_notequal(match,cst_IntlBackslash))return 121;
- if(! caml_string_notequal(match,cst_IntlYen))return 122}}
- else
- {var switch$11=caml_string_compare(match,cst_F1);
- if(0 <= switch$11)
- {if(! (0 < switch$11))return 56;
- if(! caml_string_notequal(match,cst_F10))return 65;
- if(! caml_string_notequal(match,cst_F11))return 66;
- if(! caml_string_notequal(match,cst_F12))return 67;
- if(! caml_string_notequal(match,cst_F2))return 57;
- if(! caml_string_notequal(match,cst_F3))return 58;
- if(! caml_string_notequal(match,cst_F4))return 59;
- if(! caml_string_notequal(match,cst_F5))return 60}
- else
- {if(! caml_string_notequal(match,cst_Digit7))return 34;
- if(! caml_string_notequal(match,cst_Digit8))return 35;
- if(! caml_string_notequal(match,cst_Digit9))return 36;
- if(! caml_string_notequal(match,cst_End))return 101;
- if(! caml_string_notequal(match,cst_Enter))return 40;
- if(! caml_string_notequal(match,cst_Equal))return 38;
- if(! caml_string_notequal(match,cst_Escape))return 42}}}
- else
- {var switch$12=caml_string_compare(match,cst_BrowserRefresh);
- if(0 <= switch$12)
- {if(! (0 < switch$12))return 113;
- var switch$13=caml_string_compare(match,cst_Delete);
- if(0 <= switch$13)
- {if(! (0 < switch$13))return 45;
- if(! caml_string_notequal(match,cst_Digit0))return 27;
- if(! caml_string_notequal(match,cst_Digit1))return 28;
- if(! caml_string_notequal(match,cst_Digit2))return 29;
- if(! caml_string_notequal(match,cst_Digit3))return 30;
- if(! caml_string_notequal(match,cst_Digit4))return 31;
- if(! caml_string_notequal(match,cst_Digit5))return 32}
- else
- {if(! caml_string_notequal(match,cst_BrowserSearch))return 110;
- if(! caml_string_notequal(match,cst_BrowserStop))return 114;
- if(! caml_string_notequal(match,cst_CapsLock))return 46;
- if(! caml_string_notequal(match,cst_Comma))return 53;
- if(! caml_string_notequal(match,cst_ContextMenu))return 109;
- if(! caml_string_notequal(match,cst_ControlLeft))return 86;
- if(! caml_string_notequal(match,cst_ControlRight))return 87}}
- else
- {var switch$14=caml_string_compare(match,cst_Backslash);
- if(0 <= switch$14)
- {if(! (0 < switch$14))return 52;
- if(! caml_string_notequal(match,cst_Backspace))return 43;
- if(! caml_string_notequal(match,cst_BracketLeft))return 47;
- if(! caml_string_notequal(match,cst_BracketRight))return 48;
- if(! caml_string_notequal(match,cst_BrowserBack))return 116;
- if(! caml_string_notequal(match,cst_BrowserFavorites))
- return 112;
- if(! caml_string_notequal(match,cst_BrowserForward))return 115;
- if(! caml_string_notequal(match,cst_BrowserHome))return 111}
- else
- {if(! caml_string_notequal(match,cst_AltLeft))return 92;
- if(! caml_string_notequal(match,cst_AltRight))return 93;
- if(! caml_string_notequal(match,cst_ArrowDown))return 97;
- if(! caml_string_notequal(match,cst_ArrowLeft))return 94;
- if(! caml_string_notequal(match,cst_ArrowRight))return 95;
- if(! caml_string_notequal(match,cst_ArrowUp))return 96;
- if(! caml_string_notequal(match,cst_Backquote))return 51}}}}
- return 0}
- function try_key_code_left(param)
- {if(19 <= param)
- {if(91 === param)return 88}
- else
- if(16 <= param)
- switch(param - 16 | 0)
- {case 0:return 90;case 1:return 86;default:return 92}
- return 0}
- function try_key_code_right(param)
- {if(19 <= param)
- {if(91 === param)return 89}
- else
- if(16 <= param)
- switch(param - 16 | 0)
- {case 0:return 91;case 1:return 87;default:return 93}
- return 0}
- function try_key_code_numpad(param)
- {if(47 <= param)
- {var switcher=param - 96 | 0;
- if(! (15 < switcher >>> 0))
- switch(switcher)
- {case 0:return 68;
- case 1:return 69;
- case 2:return 70;
- case 3:return 71;
- case 4:return 72;
- case 5:return 73;
- case 6:return 74;
- case 7:return 75;
- case 8:return 76;
- case 9:return 77;
- case 10:return 78;
- case 11:return 80;
- case 12:break;
- case 13:return 79;
- case 14:return 81;
- default:return 84}}
- else
- if(12 <= param)
- switch(param - 12 | 0)
- {case 0:return 73;
- case 1:return 83;
- case 21:return 77;
- case 22:return 71;
- case 23:return 69;
- case 24:return 75;
- case 25:return 72;
- case 26:return 76;
- case 27:return 74;
- case 28:return 70;
- case 33:return 68;
- case 34:return 81
- }
- return 0}
- function try_key_code_normal(param)
- {var switcher=param - 8 | 0;
- if(! (214 < switcher >>> 0))
- {var _fM_=switcher;
- if(67 <= _fM_)
- switch(_fM_)
- {case 67:return 11;
- case 68:return 12;
- case 69:return 13;
- case 70:return 14;
- case 71:return 15;
- case 72:return 16;
- case 73:return 17;
- case 74:return 18;
- case 75:return 19;
- case 76:return 20;
- case 77:return 21;
- case 78:return 22;
- case 79:return 23;
- case 80:return 24;
- case 81:return 25;
- case 82:return 26;
- case 85:return 109;
- case 104:return 56;
- case 105:return 57;
- case 106:return 58;
- case 107:return 59;
- case 108:return 60;
- case 109:return 61;
- case 110:return 62;
- case 111:return 63;
- case 112:return 64;
- case 113:return 65;
- case 114:return 66;
- case 115:return 67;
- case 137:return 119;
- case 178:return 49;
- case 179:return 38;
- case 180:return 53;
- case 181:return 37;
- case 182:return 54;
- case 183:return 55;
- case 184:return 51;
- case 211:return 47;
- case 212:return 52;
- case 213:return 48;
- case 214:return 50
- }
- else
- switch(_fM_)
- {case 0:return 43;
- case 1:return 39;
- case 5:return 40;
- case 11:return 123;
- case 12:return 46;
- case 19:return 42;
- case 24:return 41;
- case 25:return 98;
- case 26:return 99;
- case 27:return 101;
- case 28:return 100;
- case 29:return 94;
- case 30:return 96;
- case 31:return 95;
- case 32:return 97;
- case 34:return 120;
- case 37:return 44;
- case 38:return 45;
- case 40:return 27;
- case 41:return 28;
- case 42:return 29;
- case 43:return 30;
- case 44:return 31;
- case 45:return 32;
- case 46:return 33;
- case 47:return 34;
- case 48:return 35;
- case 49:return 36;
- case 57:return 1;
- case 58:return 2;
- case 59:return 3;
- case 60:return 4;
- case 61:return 5;
- case 62:return 6;
- case 63:return 7;
- case 64:return 8;
- case 65:return 9;
- case 66:return 10
- }}
- return 0}
- function make_unidentified(param){return 0}
- function run_next(value,f,v){return v?v:caml_call1(f,value)}
- function symbol$11(x,f){return caml_call1(f,x)}
- function of_event(evt)
- {var _fF_=evt.keyCode;
- function _fG_(_fL_){return run_next(_fF_,try_key_code_normal,_fL_)}
- var match=evt.location,switcher=match - 1 | 0;
- if(2 < switcher >>> 0)
- var _fH_=make_unidentified;
- else
- switch(switcher)
- {case 0:
- var
- _fC_=evt.keyCode,
- _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)};
- break;
- case 1:
- var
- _fD_=evt.keyCode,
- _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)};
- break;
- default:
- var
- _fE_=evt.keyCode,
- _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}}
- var value=evt.code;
- return symbol$11
- (symbol$11
- (symbol$11
- (0,
- function(v)
- {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}),
- _fH_),
- _fG_)}
- function char_of_int(value)
- {if(caml_call2(symbol$5,0,value))
- try
- {var _fA_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fA_}
- catch(_fB_){return 0}
- return 0}
- function empty_string(param){return ""}
- function none(param){return 0}
- function of_event$0(evt)
- {var t110=caml_call2(Optdef[8],evt.key,empty_string),match=t110.length;
- return 0 === match
- ?caml_call3(Optdef[7],evt.charCode,none,char_of_int)
- :1 === match?char_of_int(t110.charCodeAt(0) | 0):0}
- function element$1(_fz_){return _fz_}
- function tagged(e)
- {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase());
- if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e];
- var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0;
- if(! (21 < switcher >>> 0))
- switch(switcher)
- {case 0:
- return caml_string_notequal(tag,cst_a$1)
- ?caml_string_notequal(tag,cst_area$1)
- ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e]
- :[1,e]
- :[0,e];
- case 1:
- return caml_string_notequal(tag,cst_base$1)
- ?caml_string_notequal(tag,cst_blockquote$1)
- ?caml_string_notequal(tag,cst_body$1)
- ?caml_string_notequal(tag,cst_br$1)
- ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e]
- :[6,e]
- :[5,e]
- :[4,e]
- :[3,e];
- case 2:
- return caml_string_notequal(tag,cst_canvas$1)
- ?caml_string_notequal(tag,cst_caption$1)
- ?caml_string_notequal(tag,cst_col$1)
- ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e]
- :[10,e]
- :[9,e]
- :[8,e];
- case 3:
- return caml_string_notequal(tag,cst_del$1)
- ?caml_string_notequal(tag,cst_div$1)
- ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e]
- :[13,e]
- :[12,e];
- case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e];
- case 5:
- return caml_string_notequal(tag,cst_fieldset$1)
- ?caml_string_notequal(tag,cst_form$1)
- ?caml_string_notequal(tag,cst_frame$1)
- ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e]
- :[19,e]
- :[17,e]
- :[16,e];
- case 7:
- return caml_string_notequal(tag,cst_h1$1)
- ?caml_string_notequal(tag,cst_h2$1)
- ?caml_string_notequal(tag,cst_h3$1)
- ?caml_string_notequal(tag,cst_h4$1)
- ?caml_string_notequal(tag,cst_h5$1)
- ?caml_string_notequal(tag,cst_h6$1)
- ?caml_string_notequal(tag,cst_head$1)
- ?caml_string_notequal(tag,cst_hr$1)
- ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e]
- :[27,e]
- :[26,e]
- :[25,e]
- :[24,e]
- :[23,e]
- :[22,e]
- :[21,e]
- :[20,e];
- case 8:
- return caml_string_notequal(tag,cst_iframe$1)
- ?caml_string_notequal(tag,cst_img$1)
- ?caml_string_notequal(tag,cst_input$2)
- ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e]
- :[31,e]
- :[30,e]
- :[29,e];
- case 11:
- return caml_string_notequal(tag,cst_label$1)
- ?caml_string_notequal(tag,cst_legend$1)
- ?caml_string_notequal(tag,cst_li$1)
- ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e]
- :[35,e]
- :[34,e]
- :[33,e];
- case 12:
- return caml_string_notequal(tag,cst_map$1)
- ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e]
- :[37,e];
- case 14:
- return caml_string_notequal(tag,cst_object$1)
- ?caml_string_notequal(tag,cst_ol$1)
- ?caml_string_notequal(tag,cst_optgroup$1)
- ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e]
- :[41,e]
- :[40,e]
- :[39,e];
- case 15:
- return caml_string_notequal(tag,cst_p$1)
- ?caml_string_notequal(tag,cst_param$1)
- ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e]
- :[44,e]
- :[43,e];
- case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e];
- case 18:
- return caml_string_notequal(tag,cst_script$1)
- ?caml_string_notequal(tag,cst_select$2)
- ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e]
- :[48,e]
- :[47,e];
- case 19:
- return caml_string_notequal(tag,cst_table$1)
- ?caml_string_notequal(tag,cst_tbody$1)
- ?caml_string_notequal(tag,cst_td$1)
- ?caml_string_notequal(tag,cst_textarea$1)
- ?caml_string_notequal(tag,cst_tfoot$1)
- ?caml_string_notequal(tag,cst_th$1)
- ?caml_string_notequal(tag,cst_thead$1)
- ?caml_string_notequal(tag,cst_title$1)
- ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e]
- :[57,e]
- :[56,e]
- :[55,e]
- :[54,e]
- :[53,e]
- :[52,e]
- :[51,e]
- :[50,e];
- case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e];
- case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e]
- }
- return [61,e]}
- function opt_tagged(e)
- {function _fx_(e){return [0,tagged(e)]}
- function _fy_(param){return 0}
- return caml_call3(Opt[7],e,_fy_,_fx_)}
- function taggedEvent(ev)
- {function _ff_(ev){return [0,ev]}
- function _fg_(param)
- {function _fi_(ev){return [1,ev]}
- function _fj_(param)
- {function _fl_(ev){return [3,ev]}
- function _fm_(param)
- {function _fo_(ev){return [4,ev]}
- function _fp_(param)
- {function _fr_(ev){return [5,ev]}
- function _fs_(param)
- {function _fu_(ev){return [2,ev]}
- function _fv_(param){return [6,ev]}
- var _fw_=messageEvent(ev);
- return caml_call3(Opt[7],_fw_,_fv_,_fu_)}
- var _ft_=popStateEvent(ev);
- return caml_call3(Opt[7],_ft_,_fs_,_fr_)}
- var _fq_=mouseScrollEvent(ev);
- return caml_call3(Opt[7],_fq_,_fp_,_fo_)}
- var _fn_=wheelEvent(ev);
- return caml_call3(Opt[7],_fn_,_fm_,_fl_)}
- var _fk_=keyboardEvent(ev);
- return caml_call3(Opt[7],_fk_,_fj_,_fi_)}
- var _fh_=mouseEvent(ev);
- return caml_call3(Opt[7],_fh_,_fg_,_ff_)}
- function opt_taggedEvent(ev)
- {function _fd_(ev){return [0,taggedEvent(ev)]}
- function _fe_(param){return 0}
- return caml_call3(Opt[7],ev,_fe_,_fd_)}
- function stopPropagation(ev)
- {function _fb_(param){return ev.stopPropagation()}
- function _fc_(param){return ev.cancelBubble = t25}
- return caml_call3(Optdef[7],ev.stopPropagation,_fc_,_fb_)}
- var
- requestAnimationFrame=
- runtime.caml_js_pure_expr
- (function(param)
- {var
- l=
- [0,
- _j_.requestAnimationFrame,
- [0,
- _j_.mozRequestAnimationFrame,
- [0,
- _j_.webkitRequestAnimationFrame,
- [0,
- _j_.oRequestAnimationFrame,
- [0,_j_.msRequestAnimationFrame,0]]]]];
- try
- {var
- _e__=function(c){return caml_call1(Optdef[5],c)},
- req=caml_call2(Stdlib_List[38],_e__,l),
- _e$_=function(callback){return req(callback)};
- return _e$_}
- catch(_fa_)
- {_fa_ = caml_wrap_exception(_fa_);
- if(_fa_ === Stdlib[8])
- {var
- now=function(param){var t123=new t122();return t123.getTime()},
- last=[0,now(0)];
- return function(callback)
- {var
- t=now(0),
- dt=last[1] + 16.6666666666666679 - t,
- dt$0=dt < 0.?0.:dt;
- last[1] = t;
- _j_.setTimeout(callback,dt$0);
- return 0}}
- throw _fa_}});
- function hasPushState(param)
- {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)}
- function hasPlaceholder(param)
- {var t129=createInput(0,0,t87);
- return caml_call1(Optdef[5],t129.placeholder)}
- function hasRequired(param)
- {var t130=createInput(0,0,t87);
- return caml_call1(Optdef[5],t130.required)}
- var overflow_limit=2147483000.;
- function setTimeout(callback,d)
- {var id=[0,0];
- function loop(step,param)
- {if(2147483000. < step)
- var remain=step - 2147483000.,step$0=overflow_limit;
- else
- var remain=0.,step$0=step;
- var
- cb=remain == 0.?callback:function(_e9_){return loop(remain,_e9_)},
- t131=caml_js_wrap_callback(cb);
- id[1] = [0,_j_.setTimeout(t131,step$0)];
- return 0}
- loop(d,0);
- return id}
- function clearTimeout(id)
- {var _e8_=id[1];
- if(_e8_){var x=_e8_[1];id[1] = 0;return _j_.clearTimeout(x)}
- return 0}
- function js_array_of_collection(c){return [].slice.call(c)}
- var
- Js_of_ocaml_Dom_html=
- [0,
- d,
- t87,
- getElementById_opt,
- getElementById_exn,
- getElementById_coerce,
- getElementById,
- location_origin,
- _j_,
- no_handler,
- handler,
- full_handler,
- invoke_handler,
- eventTarget,
- eventRelatedTarget,
- Event$0,
- addEventListenerWithOptions,
- addEventListener,
- removeEventListener,
- addMousewheelEventListenerWith,
- addMousewheelEventListener,
- createCustomEvent,
- buttonPressed,
- eventAbsolutePosition$0,
- elementClientPosition,
- getDocumentScroll,
- [0,of_event,try_key_code_normal],
- [0,of_event$0],
- createHtml,
- createHead,
- createLink,
- createTitle,
- createMeta,
- createBase,
- createStyle,
- createBody,
- createForm,
- createOptgroup,
- createOption,
- createSelect,
- createInput,
- createTextarea,
- createButton,
- createLabel,
- createFieldset,
- createLegend,
- createUl,
- createOl,
- createDl,
- createLi,
- createDiv,
- createEmbed,
- createP,
- createH1,
- createH2,
- createH3,
- createH4,
- createH5,
- createH6,
- createQ,
- createBlockquote,
- createPre,
- createBr,
- createHr,
- createIns,
- createDel,
- createA,
- createImg,
- createObject,
- createParam,
- createMap,
- createArea,
- createScript,
- createTable,
- createCaption,
- createCol,
- createColgroup,
- createThead,
- createTfoot,
- createTbody,
- createTr,
- createTh,
- createTd,
- createSub,
- createSup,
- createSpan,
- createTt,
- createI,
- createB,
- createBig,
- createSmall,
- createEm,
- createStrong,
- createCite,
- createDfn,
- createCode,
- createSamp,
- createKbd,
- createVar,
- createAbbr,
- createDd,
- createDt,
- createNoscript,
- createAddress,
- createFrameset,
- createFrame,
- createIframe,
- createAudio,
- createVideo,
- Canvas_not_available,
- createCanvas,
- element$1,
- tagged,
- opt_tagged,
- taggedEvent,
- opt_taggedEvent,
- stopPropagation,
- [0,
- element$0,
- a,
- area,
- audio,
- base,
- blockquote,
- body,
- br,
- button,
- canvas,
- caption,
- col,
- colgroup,
- del,
- div,
- embed,
- dl,
- fieldset,
- form,
- frameset,
- frame,
- h1,
- h2,
- h3,
- h4,
- h5,
- h6,
- head,
- hr,
- html,
- iframe,
- img,
- input$0,
- ins,
- label,
- legend,
- li,
- link,
- map$2,
- meta,
- object,
- ol,
- optgroup,
- option$1,
- p,
- param,
- pre,
- q,
- script,
- select$0,
- style,
- table,
- tbody,
- td,
- textarea,
- tfoot,
- th,
- thead,
- title,
- tr,
- ul,
- video,
- mouseEvent,
- keyboardEvent,
- wheelEvent,
- mouseScrollEvent,
- popStateEvent,
- messageEvent],
- setTimeout,
- clearTimeout,
- js_array_of_collection,
- requestAnimationFrame,
- runtime.caml_js_html_entities,
- onIE,
- hasPushState,
- hasPlaceholder,
- hasRequired];
- caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html");
- var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData;
- function filter_map$0(f,param)
- {var param$0=param;
- for(;;)
- {if(param$0)
- {var q=param$0[2],v=param$0[1],match=caml_call1(f,v);
- if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]}
- var param$0=q;
- continue}
- return 0}}
- function have_content(elt)
- {var
- t3=elt.name,
- _e6_=caml_call2(symbol$9,t3.length,0),
- _e7_=_e6_?1 - (elt.disabled | 0):_e6_;
- return _e7_}
- function form_elements(get,form)
- {var t34=form.elements,i$2=t34.length - 1 | 0,acc=0,i=i$2;
- for(;;)
- {if(caml_call2(symbol$5,i,0))
- {var
- _eX_=
- function(v$2)
- {var match$3=tagged(v$2);
- switch(match$3[0])
- {case 31:
- var v=match$3[1];
- if(get)var sth=get[1],get$0=sth;else var get$0=0;
- if(have_content(v))
- {var
- name$1=caml_string_of_jsstring(v.name),
- value=v.value,
- t20=v.type,
- match=caml_string_of_jsbytes(t20.toLowerCase());
- if(caml_string_notequal(match,cst_checkbox))
- {if(! caml_string_notequal(match,cst_file))
- {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0];
- var match$0=caml_call1(Optdef[10],v.files);
- if(match$0)
- {var list=match$0[1];
- if(caml_call2(symbol$8,list.length,0))
- return [0,[0,name$1,[0,-976970511,""]],0];
- var match$1=caml_call1(Optdef[10],v.multiple);
- if(match$1 && match$1[1])
- {var
- _e1_=function(t28){return list.item(t28)},
- _e2_=caml_call2(Stdlib_Array[2],list.length,_e1_),
- _e3_=caml_call1(Stdlib_Array[11],_e2_);
- return filter_map$0
- (function(f)
- {var match=caml_call1(Opt[10],f);
- if(match)
- {var file=match[1];return [0,[0,name$1,[0,781515420,file]]]}
- return 0},
- _e3_)}
- var _e4_=list.item(0),match$2=caml_call1(Opt[10],_e4_);
- if(match$2)
- {var file=match$2[1];
- return [0,[0,name$1,[0,781515420,file]],0]}
- return 0}
- return 0}
- var switch$0=0;
- if(caml_string_notequal(match,cst_password))
- {if(caml_string_notequal(match,cst_radio))
- {var switch$1=0;
- if
- (caml_string_notequal(match,cst_reset)
- &&
- caml_string_notequal(match,cst_submit$0))
- {if(caml_string_notequal(match,cst_text))
- return [0,[0,name$1,[0,-976970511,value]],0];
- switch$0 = 1;
- switch$1 = 1}
- if(! switch$1)return 0}}
- else
- switch$0 = 1;
- if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]}
- return v.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0}
- return 0;
- case 48:
- var v$0=match$3[1];
- if(have_content(v$0))
- {var name$0=caml_string_of_jsstring(v$0.name);
- if(v$0.multiple | 0)
- {var
- _eZ_=
- function(i)
- {var t13=v$0.options,_e5_=t13.item(i);
- return caml_call1(Opt[10],_e5_)},
- t10=v$0.options,
- options=caml_call2(Stdlib_Array[2],t10.length,_eZ_),
- _e0_=caml_call1(Stdlib_Array[11],options);
- return filter_map$0
- (function(param)
- {if(param)
- {var e=param[1];
- return e.selected | 0
- ?[0,[0,name$0,[0,-976970511,e.value]]]
- :0}
- return 0},
- _e0_)}
- return [0,[0,name$0,[0,-976970511,v$0.value]],0]}
- return 0;
- case 53:
- var v$1=match$3[1];
- if(have_content(v$1))
- {var name=caml_string_of_jsstring(v$1.name);
- return [0,[0,name,[0,-976970511,v$1.value]],0]}
- return 0;
- default:return 0}},
- _eY_=caml_call2(Stdlib_List[19],_eX_,acc);
- return caml_call1(Stdlib_List[14],_eY_)}
- var t32=form.elements,_eW_=t32.item(i),match=caml_call1(Opt[10],_eW_);
- if(match)
- {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0;
- continue}
- var i$1=i - i | 0,i=i$1;
- continue}}
- function append(form_contents,form_elt)
- {if(891486873 <= form_contents[1])
- {var list=form_contents[2];list[1] = [0,form_elt,list[1]];return 0}
- var f=form_contents[2],_eU_=form_elt[2],_eV_=form_elt[1];
- if(781515420 <= _eU_[1])
- {var file=_eU_[2],t38=caml_jsstring_of_string(_eV_);
- return f.append(t38,file)}
- var s=_eU_[2],t35=caml_jsstring_of_string(_eV_);
- return f.append(t35,s)}
- function empty_form_contents(param)
- {var match=caml_call1(Optdef[10],formData);
- if(match){var constr=match[1];return [0,808620462,new constr()]}
- return [0,891486873,[0,0]]}
- function post_form_contents(form)
- {var contents=empty_form_contents(0),_eR_=form_elements(0,form);
- function _eS_(_eT_){return append(contents,_eT_)}
- caml_call2(Stdlib_List[17],_eS_,_eR_);
- return contents}
- function get_form_contents(form)
- {var _eO_=form_elements(_n_,form);
- function _eP_(param)
- {var _eQ_=param[2];
- if(typeof _eQ_ !== "number" && -976970511 === _eQ_[1])
- {var s=_eQ_[2],name=param[1];
- return [0,name,caml_string_of_jsstring(s)]}
- throw [0,Assert_failure,_o_]}
- return caml_call2(Stdlib_List[19],_eP_,_eO_)}
- var
- Js_of_ocaml_Form=
- [0,
- formData,
- formData_form,
- append,
- post_form_contents,
- get_form_contents,
- empty_form_contents,
- form_elements];
- caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form");
- var
- readystatechange=caml_call1(Event[1],cst_readystatechange),
- loadstart$1=caml_call1(Event[1],cst_loadstart$1),
- progress$1=caml_call1(Event[1],cst_progress$1),
- abort$1=caml_call1(Event[1],cst_abort$1),
- error$1=caml_call1(Event[1],cst_error$1),
- load$1=caml_call1(Event[1],cst_load$1),
- timeout=caml_call1(Event[1],cst_timeout),
- loadend$0=caml_call1(Event[1],cst_loadend$0),
- Event$1=
- [0,
- readystatechange,
- loadstart$1,
- progress$1,
- abort$1,
- error$1,
- load$1,
- timeout,
- loadend$0],
- Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1];
- caml_register_global
- (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest");
- var t2=Unsafe[1].Worker;
- function create(script)
- {var t1=caml_jsstring_of_string(script);return new t2(t1)}
- function import_scripts(scripts)
- {if(Unsafe[1].importScripts === t39)
- caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u);
- var _eL_=caml_call1(Stdlib_Array[12],scripts);
- function _eM_(s){return caml_jsstring_of_string(s)}
- var _eN_=caml_call2(Stdlib_Array[15],_eM_,_eL_);
- return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eN_)}
- function set_onmessage(handler)
- {if(Unsafe[1].onmessage === t39)
- caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi);
- function js_handler(ev){return caml_call1(handler,ev.data)}
- var t7=caml_js_wrap_callback(js_handler);
- return Unsafe[1].onmessage = t7}
- function post_message(t10)
- {if(Unsafe[1].postMessage === t39)
- caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0);
- return Unsafe[1].postMessage(t10)}
- var
- Js_of_ocaml_Worker=
- [0,create,import_scripts,set_onmessage,post_message];
- caml_register_global(1654,Js_of_ocaml_Worker,"Js_of_ocaml__Worker");
- var webSocket=Unsafe[1].WebSocket;
- function is_supported(param){return caml_call1(Optdef[5],webSocket)}
- var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported];
- caml_register_global
- (1655,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets");
- var
- defaultContextAttributes=
- {"alpha":t25,
- "depth":t25,
- "stencil":t4,
- "antialias":t25,
- "premultipliedAlpha":t4,
- "preserveDrawingBuffer":t4,
- "preferLowPowerToHighPerformance":t4,
- "failIfMajorPerformanceCaveat":t4},
- webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost),
- webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored),
- webglcontextcreationerror=
- caml_call1(Event$0[87],cst_webglcontextcreationerror),
- Event$2=
- [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror];
- function getContext(t3)
- {var ctx=t3.getContext("webgl");
- return caml_call1(Opt[5],ctx)?ctx:t3.getContext("experimental-webgl")}
- function getContextWithAttributes(t9,t8)
- {var ctx=t9.getContext("webgl",t8);
- return caml_call1(Opt[5],ctx)?ctx:t9.getContext("experimental-webgl",t8)}
- var
- Js_of_ocaml_WebGL=
- [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes];
- caml_register_global(1656,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL");
- function regexp(s)
- {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")}
- function regexp_case_fold(s)
- {var t3=caml_jsbytes_of_string(s);return new t11(t3,"gi")}
- function regexp_with_flag(s,f)
- {var
- t7=caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)),
- t6=caml_jsbytes_of_string(s);
- return new t11(t6,t7)}
- function blunt_str_array_get(a,i)
- {function _eK_(param){throw [0,Assert_failure,_p_]}
- return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eK_))}
- function string_match(r,s,i)
- {r.lastIndex = i;
- var
- t11=caml_jsbytes_of_string(s),
- _eI_=r.exec(t11),
- _eJ_=caml_call2(Opt[3],_eI_,match_result);
- return caml_call1(Opt[10],_eJ_)}
- function search_forward(r,s,i)
- {r.lastIndex = i;
- var t15=caml_jsbytes_of_string(s);
- function _eF_(t17){return [0,t17.index,t17]}
- var _eG_=r.exec(t15),_eH_=caml_call2(Opt[3],_eG_,_eF_);
- return caml_call1(Opt[10],_eH_)}
- function matched_string(r){return blunt_str_array_get(r,0)}
- function matched_group(r,i)
- {var _eE_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes);
- return caml_call1(Optdef[10],_eE_)}
- var t21=new t11("[$]","g");
- function quote_repl(s)
- {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")}
- function global_replace(r,s,s_by)
- {r.lastIndex = 0;
- var t27=quote_repl(s_by),t28=caml_jsbytes_of_string(s);
- return caml_string_of_jsbytes(t28.replace(r,t27))}
- function replace_first(r,s,s_by)
- {var
- match=r.ignoreCase | 0,
- match$0=r.multiline | 0,
- flags=match?match$0?"mi":"i":match$0?"m":"",
- t32=r.source,
- t35=new t11(t32,flags),
- t36=quote_repl(s_by),
- t37=caml_jsbytes_of_string(s);
- return caml_string_of_jsbytes(t37.replace(t35,t36))}
- function list_of_js_array(a)
- {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1;
- for(;;)
- {if(caml_call2(symbol$5,idx,0))return accu;
- var
- idx$0=idx - 1 | 0,
- accu$0=[0,blunt_str_array_get(a,idx),accu],
- accu=accu$0,
- idx=idx$0;
- continue}}
- function split(r,s)
- {r.lastIndex = 0;
- var t42=caml_jsbytes_of_string(s);
- return list_of_js_array(t42.split(r))}
- function bounded_split(r,s,i)
- {r.lastIndex = 0;
- var t47=caml_jsbytes_of_string(s);
- return list_of_js_array(t47.split(r,i))}
- var t48=regexp(cst);
- function quote(s)
- {var t50=caml_jsbytes_of_string(s);
- return caml_string_of_jsbytes(t50.replace(t48,"\\$&"))}
- function regexp_string(s){return regexp(quote(s))}
- function regexp_string_case_fold(s){return regexp_case_fold(quote(s))}
- var
- Js_of_ocaml_Regexp=
- [0,
- regexp,
- regexp_case_fold,
- regexp_with_flag,
- quote,
- regexp_string,
- regexp_string_case_fold,
- string_match,
- search_forward,
- search_forward,
- matched_string,
- matched_group,
- global_replace,
- replace_first,
- split,
- bounded_split];
- caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp");
- var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)];
- function interrupt(param){throw Local_exn}
- var plus_re=regexp_string(cst$0),t14=new t11("\\+","g");
- function urldecode_js_string_string(s)
- {t14.lastIndex = 0;
- return caml_string_of_jsbytes(unescape(s.replace(t14," ")))}
- function urldecode(s)
- {return caml_string_of_jsbytes
- (unescape
- (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))}
- function urlencode(opt,s)
- {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1;
- if(with_plus)
- {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)));
- return global_replace(plus_re,s$0,cst_2B)}
- return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))}
- var
- Not_an_http_protocol=
- [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)],
- default_http_port=80,
- default_https_port=443;
- function path_of_path_string(s)
- {var l=caml_ml_string_length(s);
- function aux(i)
- {try
- {var _eC_=caml_call3(String[30],s,i,47),j=_eC_}
- catch(_eD_)
- {_eD_ = caml_wrap_exception(_eD_);
- if(_eD_ !== Stdlib[8])throw _eD_;
- var j=l}
- var word=caml_call3(String[14],s,i,j - i | 0);
- return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]}
- var a=aux(0);
- if(a && ! caml_string_notequal(a[1],cst$2))
- {var _eB_=a[2];
- if(! _eB_)return 0;
- if(! caml_string_notequal(_eB_[1],cst$3) && ! _eB_[2])return _q_}
- return a}
- function encode_arguments(l)
- {function _ew_(param)
- {var
- v=param[2],
- n=param[1],
- _ey_=urlencode(0,v),
- _ez_=caml_call2(Stdlib[28],cst$4,_ey_),
- _eA_=urlencode(0,n);
- return caml_call2(Stdlib[28],_eA_,_ez_)}
- var _ex_=caml_call2(Stdlib_List[19],_ew_,l);
- return caml_call2(String[6],cst$5,_ex_)}
- function decode_arguments_js_string(s)
- {var
- t0=caml_jsstring_of_string(caml_call2(String[1],1,38)),
- t18=s.split(t0),
- len=t18.length;
- function aux(acc,idx)
- {var idx$0=idx;
- for(;;)
- {if(caml_call2(symbol$5,idx$0,0))return acc;
- try
- {var
- _eo_=idx$0 - 1 | 0,
- _ep_=
- function(s)
- {function _eu_(param)
- {var
- y=param[2],
- x=param[1],
- _ev_=urldecode_js_string_string(y);
- return [0,urldecode_js_string_string(x),_ev_]}
- var
- t2=caml_jsstring_of_string(caml_call2(String[1],1,61)),
- t5=s.indexOf(t2);
- if(caml_call2(symbol$5,t5,0))
- var _et_=t39;
- else
- var
- t7=t5 + 1 | 0,
- _es_=s.slice(t7),
- _et_=[0,s.slice(0,t5),_es_];
- return caml_call3(Optdef[7],_et_,interrupt,_eu_)},
- _eq_=
- aux
- ([0,caml_call3(Optdef[7],t18[idx$0],interrupt,_ep_),acc],_eo_);
- return _eq_}
- catch(_er_)
- {_er_ = caml_wrap_exception(_er_);
- if(_er_ === Local_exn)
- {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue}
- throw _er_}}}
- return aux(0,len - 1 | 0)}
- function decode_arguments(s)
- {return decode_arguments_js_string(caml_jsbytes_of_string(s))}
- var
- t19=caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0),
- t24=new t11(t19),
- t21$0=caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee),
- t26=new t11(t21$0);
- function url_of_js_string(s)
- {function _d7_(res)
- {var
- prot_string=caml_call2(Optdef[8],res[1],interrupt),
- match=caml_string_of_jsbytes(prot_string.toLowerCase());
- if
- (caml_string_notequal(match,cst_file$0)
- &&
- caml_string_notequal(match,cst_file$1))
- {var switch$0=0;
- if
- (caml_string_notequal(match,cst_http)
- &&
- caml_string_notequal(match,cst_http$0))
- {var switch$1=0;
- if
- (caml_string_notequal(match,cst_https)
- &&
- caml_string_notequal(match,cst_https$0))
- switch$1 = 1;
- if(! switch$1){var ssl=1;switch$0 = 2}}
- else
- switch$0 = 1;
- var switch$2=0;
- switch(switch$0)
- {case 1:var ssl=0;switch$2 = 1;break;
- case 0:break;
- default:switch$2 = 1}
- if(switch$2)
- {var
- _ef_=function(param){return caml_jsbytes_of_string(cst$7)},
- path_str=
- urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ef_)),
- _eg_=function(param){return caml_jsbytes_of_string(cst$8)},
- _eh_=
- urldecode_js_string_string(caml_call2(Optdef[8],res[10],_eg_)),
- _ei_=function(param){return caml_jsbytes_of_string(cst$9)},
- _ej_=
- decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ei_)),
- _ek_=path_of_path_string(path_str),
- _el_=function(param){return caml_jsbytes_of_string(cst$10)},
- s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_el_)),
- _em_=
- caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80,
- url=
- [0,
- urldecode_js_string_string
- (caml_call2(Optdef[8],res[2],interrupt)),
- _em_,
- _ek_,
- path_str,
- _ej_,
- _eh_],
- _en_=ssl?[1,url]:[0,url];
- return [0,_en_]}}
- throw Not_an_http_protocol}
- function _d8_(param)
- {function _d__(res)
- {var
- path_str=
- urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt));
- function _eb_(param){return caml_jsbytes_of_string(cst$11)}
- var _ec_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_eb_));
- function _ed_(param){return caml_jsbytes_of_string(cst$12)}
- var
- _ee_=
- decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ed_));
- return [0,[2,[0,path_of_path_string(path_str),path_str,_ee_,_ec_]]]}
- function _d$_(param){return 0}
- var _ea_=t26.exec(s);
- return caml_call3(Opt[7],_ea_,_d$_,_d__)}
- var _d9_=t24.exec(s);
- return caml_call3(Opt[7],_d9_,_d8_,_d7_)}
- function url_of_string(s)
- {return url_of_js_string(caml_jsbytes_of_string(s))}
- function string_of_url(param)
- {switch(param[0])
- {case 0:
- var
- match=param[1],
- frag=match[6],
- args=match[5],
- path=match[3],
- port=match[2],
- host=match[1];
- if(caml_string_notequal(frag,cst$13))
- var _du_=urlencode(0,frag),_dv_=caml_call2(Stdlib[28],cst$14,_du_);
- else
- var _dv_=cst$21;
- if(args)
- var
- _dw_=encode_arguments(args),
- _dx_=caml_call2(Stdlib[28],cst$15,_dw_);
- else
- var _dx_=cst$20;
- var
- _dy_=caml_call2(Stdlib[28],_dx_,_dv_),
- _dz_=function(x){return urlencode(0,x)},
- _dA_=caml_call2(Stdlib_List[19],_dz_,path),
- _dB_=caml_call2(String[6],cst$16,_dA_),
- _dC_=caml_call2(Stdlib[28],_dB_,_dy_),
- _dD_=caml_call2(Stdlib[28],cst$17,_dC_);
- if(80 === port)
- var _dE_=cst$18;
- else
- var
- _dI_=caml_call1(Stdlib[33],port),
- _dE_=caml_call2(Stdlib[28],cst$19,_dI_);
- var
- _dF_=caml_call2(Stdlib[28],_dE_,_dD_),
- _dG_=urlencode(0,host),
- _dH_=caml_call2(Stdlib[28],_dG_,_dF_);
- return caml_call2(Stdlib[28],cst_http$1,_dH_);
- case 1:
- var
- match$0=param[1],
- frag$0=match$0[6],
- args$0=match$0[5],
- path$0=match$0[3],
- port$0=match$0[2],
- host$0=match$0[1];
- if(caml_string_notequal(frag$0,cst$22))
- var
- _dJ_=urlencode(0,frag$0),
- _dK_=caml_call2(Stdlib[28],cst$23,_dJ_);
- else
- var _dK_=cst$30;
- if(args$0)
- var
- _dL_=encode_arguments(args$0),
- _dM_=caml_call2(Stdlib[28],cst$24,_dL_);
- else
- var _dM_=cst$29;
- var
- _dN_=caml_call2(Stdlib[28],_dM_,_dK_),
- _dO_=function(x){return urlencode(0,x)},
- _dP_=caml_call2(Stdlib_List[19],_dO_,path$0),
- _dQ_=caml_call2(String[6],cst$25,_dP_),
- _dR_=caml_call2(Stdlib[28],_dQ_,_dN_),
- _dS_=caml_call2(Stdlib[28],cst$26,_dR_);
- if(443 === port$0)
- var _dT_=cst$27;
- else
- var
- _dX_=caml_call1(Stdlib[33],port$0),
- _dT_=caml_call2(Stdlib[28],cst$28,_dX_);
- var
- _dU_=caml_call2(Stdlib[28],_dT_,_dS_),
- _dV_=urlencode(0,host$0),
- _dW_=caml_call2(Stdlib[28],_dV_,_dU_);
- return caml_call2(Stdlib[28],cst_https$1,_dW_);
- default:
- var
- match$1=param[1],
- frag$1=match$1[4],
- args$1=match$1[3],
- path$1=match$1[1];
- if(caml_string_notequal(frag$1,cst$31))
- var
- _dY_=urlencode(0,frag$1),
- _dZ_=caml_call2(Stdlib[28],cst$32,_dY_);
- else
- var _dZ_=cst$36;
- if(args$1)
- var
- _d0_=encode_arguments(args$1),
- _d1_=caml_call2(Stdlib[28],cst$33,_d0_);
- else
- var _d1_=cst$35;
- var
- _d2_=caml_call2(Stdlib[28],_d1_,_dZ_),
- _d3_=function(x){return urlencode(0,x)},
- _d4_=caml_call2(Stdlib_List[19],_d3_,path$1),
- _d5_=caml_call2(String[6],cst$34,_d4_),
- _d6_=caml_call2(Stdlib[28],_d5_,_d2_);
- return caml_call2(Stdlib[28],cst_file$2,_d6_)}}
- var _r_=caml_call1(Optdef[2],_j_.location);
- if(caml_call1(Optdef[5],_r_))
- var _s_=_j_.location;
- else
- var
- t42=function(param,_dt_){return 0},
- t41$0=function(param,_ds_){return 0},
- t40=function(param){return 0},
- _s_=
- {"href":"",
- "protocol":"",
- "host":"",
- "hostname":"",
- "port":"",
- "pathname":"",
- "search":"",
- "hash":"",
- "origin":t39,
- "reload":caml_js_wrap_meth_callback(t40),
- "replace":caml_js_wrap_meth_callback(t41$0),
- "assign":caml_js_wrap_meth_callback(t42)};
- var
- host=urldecode_js_string_string(_s_.hostname),
- protocol=urldecode_js_string_string(_s_.protocol),
- _t_=0,
- port=
- function(param)
- {try
- {var _dq_=[0,caml_int_of_string(caml_string_of_jsbytes(_s_.port))];
- return _dq_}
- catch(_dr_)
- {_dr_ = caml_wrap_exception(_dr_);
- if(_dr_[1] === Stdlib[7])return 0;
- throw _dr_}}
- (_t_),
- path_string=urldecode_js_string_string(_s_.pathname),
- path=path_of_path_string(path_string),
- t49=_s_.search;
- if(t49.charAt(0) === "?")
- var t52=_s_.search,_u_=t52.slice(1);
- else
- var _u_=_s_.search;
- var arguments$0=decode_arguments_js_string(_u_);
- function get_fragment(param)
- {function _dn_(res){return caml_string_of_jsstring(res[1])}
- function _do_(param){return cst$37}
- var t57=new t11("#(.*)"),t58=_s_.href,_dp_=t58.match(t57);
- return caml_call3(Opt[7],_dp_,_do_,_dn_)}
- function set_fragment(s)
- {var t59=caml_jsbytes_of_string(urlencode(0,s));return _s_.hash = t59}
- function get$2(param){return url_of_js_string(_s_.href)}
- function set$0(u)
- {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62}
- var
- as_string=urldecode_js_string_string(_s_.href),
- Js_of_ocaml_Url=
- [0,
- urldecode,
- urlencode,
- default_http_port,
- default_https_port,
- path_of_path_string,
- encode_arguments,
- decode_arguments,
- url_of_string,
- string_of_url,
- [0,
- host,
- port,
- protocol,
- path_string,
- path,
- arguments$0,
- get_fragment,
- set_fragment,
- get$2,
- set$0,
- as_string]];
- caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url");
- var Js_of_ocaml_Lib_version=[0,s,git_version];
- caml_register_global
- (1660,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version");
- function update_file(name,content)
- {var oc=caml_call1(Stdlib[60],name);
- caml_call2(Stdlib[66],oc,content);
- return caml_call1(Stdlib[76],oc)}
- function set_channel_flusher(out_channel,f)
- {var
- f$0=
- caml_js_wrap_callback
- (function(s){return caml_call1(f,caml_string_of_jsbytes(s))});
- return runtime.caml_ml_set_channel_output(out_channel,f$0)}
- function set_channel_filler(in_channel,f)
- {var f$0=caml_js_wrap_callback(f);
- return runtime.caml_ml_set_channel_refill(in_channel,f$0)}
- function mount(path,f)
- {return runtime.caml_mount_autoload
- (path,
- caml_js_wrap_callback
- (function(prefix,path){return caml_call2(f,prefix,path)}))}
- function unmount(path){return runtime.caml_unmount(path)}
- if(caml_call2(String[62],git_version,cst$38))
- var js_of_ocaml_version=s;
- else
- var
- _co_=caml_call2(Stdlib[28],cst$41,git_version),
- js_of_ocaml_version=caml_call2(Stdlib[28],s,_co_);
- var
- _v_=runtime.caml_create_file,
- _w_=runtime.caml_read_file_content,
- Js_of_ocaml_Sys_js=
- [0,
- set_channel_flusher,
- set_channel_filler,
- function(_dm_){return runtime.caml_list_mount_point(_dm_)},
- unmount,
- mount,
- _w_,
- _v_,
- update_file,
- js_of_ocaml_version];
- caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js");
- function empty_resize_observer_options(param){return {}}
- var t2$0=Unsafe[1].ResizeObserver;
- function is_supported$0(param){return caml_call1(Optdef[5],t2$0)}
- function observe(node,f,box,param)
- {var t1=caml_js_wrap_callback(f),t4=new t2$0(t1);
- if(box)
- {var box$0=box[1],t8={};t8.box = box$0;t4.observe(node,t8)}
- else
- t4.observe(node);
- return t4}
- var
- Js_of_ocaml_ResizeObserver=
- [0,empty_resize_observer_options,t2$0,is_supported$0,observe];
- caml_register_global
- (1662,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver");
- var t4$1=Unsafe[1].PerformanceObserver;
- function is_supported$1(param){return caml_call1(Optdef[5],t4$1)}
- function observe$0(entry_types,f)
- {var
- _dl_=
- caml_call1
- (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types),
- t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)),
- t5={};
- t5.entryTypes = t1;
- var t3=caml_js_wrap_callback(f),t6=new t4$1(t3);
- t6.observe(t5);
- return t6}
- var Js_of_ocaml_PerformanceObserve=[0,t4$1,is_supported$1,observe$0];
- caml_register_global
- (1663,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver");
- function empty_mutation_observer_init(param){return {}}
- var t2$1=Unsafe[1].MutationObserver;
- function is_supported$2(param){return caml_call1(Optdef[5],t2$1)}
- function observe$1
- (node,
- f,
- child_list,
- attributes,
- character_data,
- subtree,
- attribute_old_value,
- character_data_old_value,
- attribute_filter,
- param)
- {function opt_iter(x,f)
- {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0}
- var t1=caml_js_wrap_callback(f),t19=new t2$1(t1),t18={};
- opt_iter(child_list,function(t3){return t18.childList = t3});
- opt_iter(attributes,function(t5){return t18.attributes = t5});
- opt_iter(character_data,function(t7){return t18.characterData = t7});
- opt_iter(subtree,function(t9){return t18.subtree = t9});
- opt_iter
- (attribute_old_value,function(t11){return t18.attributeOldValue = t11});
- opt_iter
- (character_data_old_value,
- function(t13){return t18.characterDataOldValue = t13});
- opt_iter
- (attribute_filter,
- function(l)
- {var t15=caml_js_from_array(caml_call1(Stdlib_Array[12],l));
- return t18.attributeFilter = t15});
- t19.observe(node,t18);
- return t19}
- var
- Js_of_ocaml_MutationObserver=
- [0,empty_mutation_observer_init,t2$1,is_supported$2,observe$1];
- caml_register_global
- (1664,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver");
- var t1=Unsafe[1].Object;
- function create$0(param){return new t1()}
- function add$0(t,k,v){return t[k.concat("_")] = v}
- function remove(t,k){return delete t[k.concat("_")]}
- function find(t,k){return t[k.concat("_")]}
- function keys(t)
- {var
- t10=Unsafe[1].Object,
- t11=t10.keys(t),
- res=[0,0],
- _dh_=t11.length - 1 | 0,
- _dg_=0;
- if(! (_dh_ < 0))
- {var i=_dg_;
- for(;;)
- {var
- _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)},
- t15=caml_call2(Optdef[8],t11[i],_di_),
- t14=t15.length - 1 | 0,
- _dj_=res[1];
- res[1] = [0,t15.substring(0,t14),_dj_];
- var _dk_=i + 1 | 0;
- if(_dh_ !== i){var i=_dk_;continue}
- break}}
- return caml_call1(Stdlib_List[9],res[1])}
- var Js_of_ocaml_Jstable=[0,create$0,add$0,remove,find,keys];
- caml_register_global(1665,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable");
- var t11$1=Unsafe[1].JSON;
- function reviver(this$0,key,value)
- {if(typeof value === "string")return caml_string_of_jsbytes(value);
- if
- (value instanceof array_length
- &&
- 4
- ===
- value.length
- &&
- 255
- ===
- value[0])
- return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]);
- return value}
- var t3$0=caml_js_wrap_meth_callback(reviver);
- function unsafe_input(t2){return t11$1.parse(t2,t3$0)}
- var mlInt64_constr=t5.constructor;
- function t10(key,value)
- {var _df_=Stdlib_Obj[13];
- return caml_call2(symbol$8,runtime.caml_obj_tag(value),_df_)
- ?caml_jsbytes_of_string(value)
- :value instanceof mlInt64_constr
- ?caml_js_from_array([0,255,value.lo,value.mi,value.hi])
- :value}
- function output(t9){return t11$1.stringify(t9,t10)}
- var Js_of_ocaml_Json=[0,output,unsafe_input];
- caml_register_global(1667,Js_of_ocaml_Json,"Js_of_ocaml__Json");
- function string_of_name(param)
- {var _de_=param;
- if(74 <= _de_)
- {if(111 <= _de_)
- switch(_de_)
- {case 111:return cst_palevioletred;
- case 112:return cst_papayawhip;
- case 113:return cst_peachpuff;
- case 114:return cst_peru;
- case 115:return cst_pink;
- case 116:return cst_plum;
- case 117:return cst_powderblue;
- case 118:return cst_purple;
- case 119:return cst_red;
- case 120:return cst_rosybrown;
- case 121:return cst_royalblue;
- case 122:return cst_saddlebrown;
- case 123:return cst_salmon;
- case 124:return cst_sandybrown;
- case 125:return cst_seagreen;
- case 126:return cst_seashell;
- case 127:return cst_sienna;
- case 128:return cst_silver;
- case 129:return cst_skyblue;
- case 130:return cst_slateblue;
- case 131:return cst_slategray;
- case 132:return cst_slategrey;
- case 133:return cst_snow;
- case 134:return cst_springgreen;
- case 135:return cst_steelblue;
- case 136:return cst_tan;
- case 137:return cst_teal;
- case 138:return cst_thistle;
- case 139:return cst_tomato;
- case 140:return cst_turquoise;
- case 141:return cst_violet;
- case 142:return cst_wheat;
- case 143:return cst_white;
- case 144:return cst_whitesmoke;
- case 145:return cst_yellow;
- default:return cst_yellowgreen}
- switch(_de_)
- {case 74:return cst_lightpink;
- case 75:return cst_lightsalmon;
- case 76:return cst_lightseagreen;
- case 77:return cst_lightskyblue;
- case 78:return cst_lightslategray;
- case 79:return cst_lightslategrey;
- case 80:return cst_lightsteelblue;
- case 81:return cst_lightyellow;
- case 82:return cst_lime;
- case 83:return cst_limegreen;
- case 84:return cst_linen;
- case 85:return cst_magenta;
- case 86:return cst_maroon;
- case 87:return cst_mediumaquamarine;
- case 88:return cst_mediumblue;
- case 89:return cst_mediumorchid;
- case 90:return cst_mediumpurple;
- case 91:return cst_mediumseagreen;
- case 92:return cst_mediumslateblue;
- case 93:return cst_mediumspringgreen;
- case 94:return cst_mediumturquoise;
- case 95:return cst_mediumvioletred;
- case 96:return cst_midnightblue;
- case 97:return cst_mintcream;
- case 98:return cst_mistyrose;
- case 99:return cst_moccasin;
- case 100:return cst_navajowhite;
- case 101:return cst_navy;
- case 102:return cst_oldlace;
- case 103:return cst_olive;
- case 104:return cst_olivedrab;
- case 105:return cst_orange;
- case 106:return cst_orangered;
- case 107:return cst_orchid;
- case 108:return cst_palegoldenrod;
- case 109:return cst_palegreen;
- default:return cst_paleturquoise}}
- if(37 <= _de_)
- switch(_de_)
- {case 37:return cst_darkslategrey;
- case 38:return cst_darkturquoise;
- case 39:return cst_darkviolet;
- case 40:return cst_deeppink;
- case 41:return cst_deepskyblue;
- case 42:return cst_dimgray;
- case 43:return cst_dimgrey;
- case 44:return cst_dodgerblue;
- case 45:return cst_firebrick;
- case 46:return cst_floralwhite;
- case 47:return cst_forestgreen;
- case 48:return cst_fuchsia;
- case 49:return cst_gainsboro;
- case 50:return cst_ghostwhite;
- case 51:return cst_gold;
- case 52:return cst_goldenrod;
- case 53:return cst_gray;
- case 54:return cst_grey;
- case 55:return cst_green;
- case 56:return cst_greenyellow;
- case 57:return cst_honeydew;
- case 58:return cst_hotpink;
- case 59:return cst_indianred;
- case 60:return cst_indigo;
- case 61:return cst_ivory;
- case 62:return cst_khaki;
- case 63:return cst_lavender;
- case 64:return cst_lavenderblush;
- case 65:return cst_lawngreen;
- case 66:return cst_lemonchiffon;
- case 67:return cst_lightblue;
- case 68:return cst_lightcoral;
- case 69:return cst_lightcyan;
- case 70:return cst_lightgoldenrodyellow;
- case 71:return cst_lightgray;
- case 72:return cst_lightgreen;
- default:return cst_lightgrey}
- switch(_de_)
- {case 0:return cst_aliceblue;
- case 1:return cst_antiquewhite;
- case 2:return cst_aqua;
- case 3:return cst_aquamarine;
- case 4:return cst_azure;
- case 5:return cst_beige;
- case 6:return cst_bisque;
- case 7:return cst_black;
- case 8:return cst_blanchedalmond;
- case 9:return cst_blue;
- case 10:return cst_blueviolet;
- case 11:return cst_brown;
- case 12:return cst_burlywood;
- case 13:return cst_cadetblue;
- case 14:return cst_chartreuse;
- case 15:return cst_chocolate;
- case 16:return cst_coral;
- case 17:return cst_cornflowerblue;
- case 18:return cst_cornsilk;
- case 19:return cst_crimson;
- case 20:return cst_cyan;
- case 21:return cst_darkblue;
- case 22:return cst_darkcyan;
- case 23:return cst_darkgoldenrod;
- case 24:return cst_darkgray;
- case 25:return cst_darkgreen;
- case 26:return cst_darkgrey;
- case 27:return cst_darkkhaki;
- case 28:return cst_darkmagenta;
- case 29:return cst_darkolivegreen;
- case 30:return cst_darkorange;
- case 31:return cst_darkorchid;
- case 32:return cst_darkred;
- case 33:return cst_darksalmon;
- case 34:return cst_darkseagreen;
- case 35:return cst_darkslateblue;
- default:return cst_darkslategray}}
- function name_of_string(s)
- {var switch$0=caml_string_compare(s,cst_lightgrey$0);
- if(0 <= switch$0)
- {if(! (0 < switch$0))return 73;
- var switch$1=caml_string_compare(s,cst_paleturquoise$0);
- if(0 <= switch$1)
- {if(! (0 < switch$1))return 110;
- var switch$2=caml_string_compare(s,cst_skyblue$0);
- if(0 <= switch$2)
- {if(! (0 < switch$2))return 129;
- var switch$3=caml_string_compare(s,cst_thistle$0);
- if(0 <= switch$3)
- {if(! (0 < switch$3))return 138;
- if(! caml_string_notequal(s,cst_tomato$0))return 139;
- if(! caml_string_notequal(s,cst_turquoise$0))return 140;
- if(! caml_string_notequal(s,cst_violet$0))return 141;
- if(! caml_string_notequal(s,cst_wheat$0))return 142;
- if(! caml_string_notequal(s,cst_white$0))return 143;
- if(! caml_string_notequal(s,cst_whitesmoke$0))return 144;
- if(! caml_string_notequal(s,cst_yellow$0))return 145;
- if(! caml_string_notequal(s,cst_yellowgreen$0))return 146}
- else
- {if(! caml_string_notequal(s,cst_slateblue$0))return 130;
- if(! caml_string_notequal(s,cst_slategray$0))return 131;
- if(! caml_string_notequal(s,cst_slategrey$0))return 132;
- if(! caml_string_notequal(s,cst_snow$0))return 133;
- if(! caml_string_notequal(s,cst_springgreen$0))return 134;
- if(! caml_string_notequal(s,cst_steelblue$0))return 135;
- if(! caml_string_notequal(s,cst_tan$0))return 136;
- if(! caml_string_notequal(s,cst_teal$0))return 137}}
- else
- {var switch$4=caml_string_compare(s,cst_rosybrown$0);
- if(0 <= switch$4)
- {if(! (0 < switch$4))return 120;
- if(! caml_string_notequal(s,cst_royalblue$0))return 121;
- if(! caml_string_notequal(s,cst_saddlebrown$0))return 122;
- if(! caml_string_notequal(s,cst_salmon$0))return 123;
- if(! caml_string_notequal(s,cst_sandybrown$0))return 124;
- if(! caml_string_notequal(s,cst_seagreen$0))return 125;
- if(! caml_string_notequal(s,cst_seashell$0))return 126;
- if(! caml_string_notequal(s,cst_sienna$0))return 127;
- if(! caml_string_notequal(s,cst_silver$0))return 128}
- else
- {if(! caml_string_notequal(s,cst_palevioletred$0))return 111;
- if(! caml_string_notequal(s,cst_papayawhip$0))return 112;
- if(! caml_string_notequal(s,cst_peachpuff$0))return 113;
- if(! caml_string_notequal(s,cst_peru$0))return 114;
- if(! caml_string_notequal(s,cst_pink$0))return 115;
- if(! caml_string_notequal(s,cst_plum$0))return 116;
- if(! caml_string_notequal(s,cst_powderblue$0))return 117;
- if(! caml_string_notequal(s,cst_purple$0))return 118;
- if(! caml_string_notequal(s,cst_red$0))return 119}}}
- else
- {var switch$5=caml_string_compare(s,cst_mediumslateblue$0);
- if(0 <= switch$5)
- {if(! (0 < switch$5))return 92;
- var switch$6=caml_string_compare(s,cst_navy$0);
- if(0 <= switch$6)
- {if(! (0 < switch$6))return 101;
- if(! caml_string_notequal(s,cst_oldlace$0))return 102;
- if(! caml_string_notequal(s,cst_olive$0))return 103;
- if(! caml_string_notequal(s,cst_olivedrab$0))return 104;
- if(! caml_string_notequal(s,cst_orange$0))return 105;
- if(! caml_string_notequal(s,cst_orangered$0))return 106;
- if(! caml_string_notequal(s,cst_orchid$0))return 107;
- if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108;
- if(! caml_string_notequal(s,cst_palegreen$0))return 109}
- else
- {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93;
- if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94;
- if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95;
- if(! caml_string_notequal(s,cst_midnightblue$0))return 96;
- if(! caml_string_notequal(s,cst_mintcream$0))return 97;
- if(! caml_string_notequal(s,cst_mistyrose$0))return 98;
- if(! caml_string_notequal(s,cst_moccasin$0))return 99;
- if(! caml_string_notequal(s,cst_navajowhite$0))return 100}}
- else
- {var switch$7=caml_string_compare(s,cst_limegreen$0);
- if(0 <= switch$7)
- {if(! (0 < switch$7))return 83;
- if(! caml_string_notequal(s,cst_linen$0))return 84;
- if(! caml_string_notequal(s,cst_magenta$0))return 85;
- if(! caml_string_notequal(s,cst_maroon$0))return 86;
- if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87;
- if(! caml_string_notequal(s,cst_mediumblue$0))return 88;
- if(! caml_string_notequal(s,cst_mediumorchid$0))return 89;
- if(! caml_string_notequal(s,cst_mediumpurple$0))return 90;
- if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91}
- else
- {if(! caml_string_notequal(s,cst_lightpink$0))return 74;
- if(! caml_string_notequal(s,cst_lightsalmon$0))return 75;
- if(! caml_string_notequal(s,cst_lightseagreen$0))return 76;
- if(! caml_string_notequal(s,cst_lightskyblue$0))return 77;
- if(! caml_string_notequal(s,cst_lightslategray$0))return 78;
- if(! caml_string_notequal(s,cst_lightslategrey$0))return 79;
- if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80;
- if(! caml_string_notequal(s,cst_lightyellow$0))return 81;
- if(! caml_string_notequal(s,cst_lime$0))return 82}}}}
- else
- {var switch$8=caml_string_compare(s,cst_darkslategray$0);
- if(0 <= switch$8)
- {if(! (0 < switch$8))return 36;
- var switch$9=caml_string_compare(s,cst_greenyellow$0);
- if(0 <= switch$9)
- {if(! (0 < switch$9))return 56;
- var switch$10=caml_string_compare(s,cst_lavenderblush$0);
- if(0 <= switch$10)
- {if(! (0 < switch$10))return 64;
- if(! caml_string_notequal(s,cst_lawngreen$0))return 65;
- if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66;
- if(! caml_string_notequal(s,cst_lightblue$0))return 67;
- if(! caml_string_notequal(s,cst_lightcoral$0))return 68;
- if(! caml_string_notequal(s,cst_lightcyan$0))return 69;
- if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0))
- return 70;
- if(! caml_string_notequal(s,cst_lightgray$0))return 71;
- if(! caml_string_notequal(s,cst_lightgreen$0))return 72}
- else
- {if(! caml_string_notequal(s,cst_grey$0))return 54;
- if(! caml_string_notequal(s,cst_honeydew$0))return 57;
- if(! caml_string_notequal(s,cst_hotpink$0))return 58;
- if(! caml_string_notequal(s,cst_indianred$0))return 59;
- if(! caml_string_notequal(s,cst_indigo$0))return 60;
- if(! caml_string_notequal(s,cst_ivory$0))return 61;
- if(! caml_string_notequal(s,cst_khaki$0))return 62;
- if(! caml_string_notequal(s,cst_lavender$0))return 63}}
- else
- {var switch$11=caml_string_compare(s,cst_floralwhite$0);
- if(0 <= switch$11)
- {if(! (0 < switch$11))return 46;
- if(! caml_string_notequal(s,cst_forestgreen$0))return 47;
- if(! caml_string_notequal(s,cst_fuchsia$0))return 48;
- if(! caml_string_notequal(s,cst_gainsboro$0))return 49;
- if(! caml_string_notequal(s,cst_ghostwhite$0))return 50;
- if(! caml_string_notequal(s,cst_gold$0))return 51;
- if(! caml_string_notequal(s,cst_goldenrod$0))return 52;
- if(! caml_string_notequal(s,cst_gray$0))return 53;
- if(! caml_string_notequal(s,cst_green$0))return 55}
- else
- {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37;
- if(! caml_string_notequal(s,cst_darkturquoise$0))return 38;
- if(! caml_string_notequal(s,cst_darkviolet$0))return 39;
- if(! caml_string_notequal(s,cst_deeppink$0))return 40;
- if(! caml_string_notequal(s,cst_deepskyblue$0))return 41;
- if(! caml_string_notequal(s,cst_dimgray$0))return 42;
- if(! caml_string_notequal(s,cst_dimgrey$0))return 43;
- if(! caml_string_notequal(s,cst_dodgerblue$0))return 44;
- if(! caml_string_notequal(s,cst_firebrick$0))return 45}}}
- else
- {var switch$12=caml_string_compare(s,cst_cornsilk$0);
- if(0 <= switch$12)
- {if(! (0 < switch$12))return 18;
- var switch$13=caml_string_compare(s,cst_darkkhaki$0);
- if(0 <= switch$13)
- {if(! (0 < switch$13))return 27;
- if(! caml_string_notequal(s,cst_darkmagenta$0))return 28;
- if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29;
- if(! caml_string_notequal(s,cst_darkorange$0))return 30;
- if(! caml_string_notequal(s,cst_darkorchid$0))return 31;
- if(! caml_string_notequal(s,cst_darkred$0))return 32;
- if(! caml_string_notequal(s,cst_darksalmon$0))return 33;
- if(! caml_string_notequal(s,cst_darkseagreen$0))return 34;
- if(! caml_string_notequal(s,cst_darkslateblue$0))return 35}
- else
- {if(! caml_string_notequal(s,cst_crimson$0))return 19;
- if(! caml_string_notequal(s,cst_cyan$0))return 20;
- if(! caml_string_notequal(s,cst_darkblue$0))return 21;
- if(! caml_string_notequal(s,cst_darkcyan$0))return 22;
- if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23;
- if(! caml_string_notequal(s,cst_darkgray$0))return 24;
- if(! caml_string_notequal(s,cst_darkgreen$0))return 25;
- if(! caml_string_notequal(s,cst_darkgrey$0))return 26}}
- else
- {var switch$14=caml_string_compare(s,cst_blue$0);
- if(0 <= switch$14)
- {if(! (0 < switch$14))return 9;
- if(! caml_string_notequal(s,cst_blueviolet$0))return 10;
- if(! caml_string_notequal(s,cst_brown$0))return 11;
- if(! caml_string_notequal(s,cst_burlywood$0))return 12;
- if(! caml_string_notequal(s,cst_cadetblue$0))return 13;
- if(! caml_string_notequal(s,cst_chartreuse$0))return 14;
- if(! caml_string_notequal(s,cst_chocolate$0))return 15;
- if(! caml_string_notequal(s,cst_coral$0))return 16;
- if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17}
- else
- {if(! caml_string_notequal(s,cst_aliceblue$0))return 0;
- if(! caml_string_notequal(s,cst_antiquewhite$0))return 1;
- if(! caml_string_notequal(s,cst_aqua$0))return 2;
- if(! caml_string_notequal(s,cst_aquamarine$0))return 3;
- if(! caml_string_notequal(s,cst_azure$0))return 4;
- if(! caml_string_notequal(s,cst_beige$0))return 5;
- if(! caml_string_notequal(s,cst_bisque$0))return 6;
- if(! caml_string_notequal(s,cst_black$0))return 7;
- if(! caml_string_notequal(s,cst_blanchedalmond$0))return 8}}}}
- var _dd_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name);
- throw [0,Stdlib[6],_dd_]}
- function rgb_of_name(param)
- {var _dc_=param;
- if(74 <= _dc_)
- {if(111 <= _dc_)
- switch(_dc_)
- {case 111:return _bq_;
- case 112:return _br_;
- case 113:return _bs_;
- case 114:return _bt_;
- case 115:return _bu_;
- case 116:return _bv_;
- case 117:return _bw_;
- case 118:return _bx_;
- case 119:return _by_;
- case 120:return _bz_;
- case 121:return _bA_;
- case 122:return _bB_;
- case 123:return _bC_;
- case 124:return _bD_;
- case 125:return _bE_;
- case 126:return _bF_;
- case 127:return _bG_;
- case 128:return _bH_;
- case 129:return _bI_;
- case 130:return _bJ_;
- case 131:return _bK_;
- case 132:return _bL_;
- case 133:return _bM_;
- case 134:return _bN_;
- case 135:return _bO_;
- case 136:return _bP_;
- case 137:return _bQ_;
- case 138:return _bR_;
- case 139:return _bS_;
- case 140:return _bT_;
- case 141:return _bU_;
- case 142:return _bV_;
- case 143:return _bW_;
- case 144:return _bX_;
- case 145:return _bY_;
- default:return _bZ_}
- switch(_dc_)
- {case 74:return _aR_;
- case 75:return _aS_;
- case 76:return _aT_;
- case 77:return _aU_;
- case 78:return _aV_;
- case 79:return _aW_;
- case 80:return _aX_;
- case 81:return _aY_;
- case 82:return _aZ_;
- case 83:return _a0_;
- case 84:return _a1_;
- case 85:return _a2_;
- case 86:return _a3_;
- case 87:return _a4_;
- case 88:return _a5_;
- case 89:return _a6_;
- case 90:return _a7_;
- case 91:return _a8_;
- case 92:return _a9_;
- case 93:return _a__;
- case 94:return _a$_;
- case 95:return _ba_;
- case 96:return _bb_;
- case 97:return _bc_;
- case 98:return _bd_;
- case 99:return _be_;
- case 100:return _bf_;
- case 101:return _bg_;
- case 102:return _bh_;
- case 103:return _bi_;
- case 104:return _bj_;
- case 105:return _bk_;
- case 106:return _bl_;
- case 107:return _bm_;
- case 108:return _bn_;
- case 109:return _bo_;
- default:return _bp_}}
- if(37 <= _dc_)
- switch(_dc_)
- {case 37:return _ag_;
- case 38:return _ah_;
- case 39:return _ai_;
- case 40:return _aj_;
- case 41:return _ak_;
- case 42:return _al_;
- case 43:return _am_;
- case 44:return _an_;
- case 45:return _ao_;
- case 46:return _ap_;
- case 47:return _aq_;
- case 48:return _ar_;
- case 49:return _as_;
- case 50:return _at_;
- case 51:return _au_;
- case 52:return _av_;
- case 53:return _aw_;
- case 54:return _ax_;
- case 55:return _ay_;
- case 56:return _az_;
- case 57:return _aA_;
- case 58:return _aB_;
- case 59:return _aC_;
- case 60:return _aD_;
- case 61:return _aE_;
- case 62:return _aF_;
- case 63:return _aG_;
- case 64:return _aH_;
- case 65:return _aI_;
- case 66:return _aJ_;
- case 67:return _aK_;
- case 68:return _aL_;
- case 69:return _aM_;
- case 70:return _aN_;
- case 71:return _aO_;
- case 72:return _aP_;
- default:return _aQ_}
- switch(_dc_)
- {case 0:return _x_;
- case 1:return _y_;
- case 2:return _z_;
- case 3:return _A_;
- case 4:return _B_;
- case 5:return _C_;
- case 6:return _D_;
- case 7:return _E_;
- case 8:return _F_;
- case 9:return _G_;
- case 10:return _H_;
- case 11:return _I_;
- case 12:return _J_;
- case 13:return _K_;
- case 14:return _L_;
- case 15:return _M_;
- case 16:return _N_;
- case 17:return _O_;
- case 18:return _P_;
- case 19:return _Q_;
- case 20:return _R_;
- case 21:return _S_;
- case 22:return _T_;
- case 23:return _U_;
- case 24:return _V_;
- case 25:return _W_;
- case 26:return _X_;
- case 27:return _Y_;
- case 28:return _Z_;
- case 29:return ___;
- case 30:return _$_;
- case 31:return _aa_;
- case 32:return _ab_;
- case 33:return _ac_;
- case 34:return _ad_;
- case 35:return _ae_;
- default:return _af_}}
- function rgb(a,r,g,b)
- {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]}
- function hsl(a,h,s,l)
- {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]}
- function string_of_t(param)
- {switch(param[0])
- {case 0:var n=param[1];return string_of_name(n);
- case 1:
- var match=param[1],b=match[3],g=match[2],r=match[1];
- return caml_call4(Stdlib_Printf[4],_b0_,r,g,b);
- case 2:
- var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1];
- return caml_call4(Stdlib_Printf[4],_b1_,r$0,g$0,b$0);
- case 3:
- var
- match$1=param[1],
- a=match$1[4],
- b$1=match$1[3],
- g$1=match$1[2],
- r$1=match$1[1];
- return caml_call5(Stdlib_Printf[4],_b2_,r$1,g$1,b$1,a);
- case 4:
- var
- match$2=param[1],
- a$0=match$2[4],
- b$2=match$2[3],
- g$2=match$2[2],
- r$2=match$2[1];
- return caml_call5(Stdlib_Printf[4],_b3_,r$2,g$2,b$2,a$0);
- case 5:
- var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1];
- return caml_call4(Stdlib_Printf[4],_b4_,h,s,l);
- default:
- var
- match$4=param[1],
- a$1=match$4[4],
- l$0=match$4[3],
- s$0=match$4[2],
- h$0=match$4[1];
- return caml_call5(Stdlib_Printf[4],_b5_,h$0,s$0,l$0,a$1)}}
- function hex_of_rgb(param)
- {var blue=param[3],green=param[2],red=param[1];
- function in_range(i)
- {var
- _c__=caml_call2(symbol$5,i,0),
- _c$_=_c__ || caml_call2(symbol$9,i,255);
- if(_c$_)
- {var
- _da_=caml_call1(Stdlib[33],i),
- _db_=caml_call2(Stdlib[28],_da_,cst_is_out_of_valid_range);
- throw [0,Stdlib[6],_db_]}
- return _c$_}
- in_range(red);
- in_range(green);
- in_range(blue);
- return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)}
- function js_t_of_js_string(s)
- {var
- t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d),
- t13=new t11(t0),
- t2=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0),
- t17=new t11(t2),
- t4=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d),
- t15=new t11(t4),
- t6=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0),
- t19=new t11(t6),
- t8=caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d),
- t21=new t11(t8),
- t10=caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d),
- t23=new t11(t10);
- if
- (!
- (t13.test(s) | 0)
- &&
- !
- (t15.test(s) | 0)
- &&
- !
- (t17.test(s) | 0)
- &&
- !
- (t19.test(s) | 0)
- &&
- !
- (t21.test(s) | 0)
- &&
- !
- (t23.test(s) | 0))
- {var _c7_=caml_string_of_jsstring(s);
- if(caml_call2(Stdlib_List[36],_c7_,_b7_))return s;
- var
- _c8_=caml_string_of_jsstring(s),
- _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color);
- throw [0,Stdlib[6],_c9_]}
- return s}
- function js(c)
- {if(0 === c[0])
- {var n=c[1];return caml_jsstring_of_string(string_of_name(n))}
- return caml_jsstring_of_string(string_of_t(c))}
- function ml(c)
- {var s=caml_string_of_jsstring(c);
- try
- {var _cU_=[0,name_of_string(s)];return _cU_}
- catch(_cV_)
- {_cV_ = caml_wrap_exception(_cV_);
- if(_cV_[1] === Stdlib[6])
- {var
- fail=
- function(param)
- {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0);
- throw [0,Stdlib[6],_c6_]},
- re_rgb=regexp(cst_rgba_d_d_d_d_d),
- re_rgb_pct=regexp(cst_rgba_d_d_d_d_d$0),
- re_hsl=regexp(cst_hsla_d_d_d_d_d),
- i_of_s_o=
- function(param)
- {if(param)
- {var i=param[1];
- try
- {var _c4_=caml_int_of_string(i);return _c4_}
- catch(_c5_)
- {_c5_ = caml_wrap_exception(_c5_);
- if(_c5_[1] === Stdlib[6])
- var s=_c5_[2];
- else
- {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[2]}
- var
- _c1_=caml_call2(Stdlib[28],cst$39,s),
- _c2_=caml_call2(Stdlib[28],i,_c1_),
- _c3_=caml_call2(Stdlib[28],cst_color_conversion_error,_c2_);
- throw [0,Stdlib[6],_c3_]}}
- return fail(0)},
- f_of_s=
- function(f)
- {try
- {var _cZ_=caml_float_of_string(f);return _cZ_}
- catch(_c0_)
- {_c0_ = caml_wrap_exception(_c0_);
- if(_c0_[1] === Stdlib[6])
- var s=_c0_[2];
- else
- {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[2]}
- var
- _cW_=caml_call2(Stdlib[28],cst$40,s),
- _cX_=caml_call2(Stdlib[28],f,_cW_),
- _cY_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cX_);
- throw [0,Stdlib[6],_cY_]}},
- match=string_match(re_rgb,s,0);
- if(match)
- {var
- r=match[1],
- red=matched_group(r,2),
- green=matched_group(r,3),
- blue=matched_group(r,4),
- alpha=matched_group(r,5),
- match$0=matched_group(r,1);
- if(match$0)
- {var _cC_=match$0[1];
- if(! caml_string_notequal(_cC_,cst_rgb))
- {if(alpha)return fail(0);
- var _cG_=i_of_s_o(blue),_cH_=i_of_s_o(green);
- return [1,[0,i_of_s_o(red),_cH_,_cG_]]}
- if(! caml_string_notequal(_cC_,cst_rgba))
- {if(alpha)
- {var
- a=alpha[1],
- _cD_=f_of_s(a),
- _cE_=i_of_s_o(blue),
- _cF_=i_of_s_o(green);
- return [3,[0,i_of_s_o(red),_cF_,_cE_,_cD_]]}
- return fail(0)}}
- return fail(0)}
- var match$1=string_match(re_rgb_pct,s,0);
- if(match$1)
- {var
- r$0=match$1[1],
- red$0=matched_group(r$0,2),
- green$0=matched_group(r$0,3),
- blue$0=matched_group(r$0,4),
- alpha$0=matched_group(r$0,5),
- match$2=matched_group(r$0,1);
- if(match$2)
- {var _cI_=match$2[1];
- if(! caml_string_notequal(_cI_,cst_rgb$0))
- {if(alpha$0)return fail(0);
- var _cM_=i_of_s_o(blue$0),_cN_=i_of_s_o(green$0);
- return [2,[0,i_of_s_o(red$0),_cN_,_cM_]]}
- if(! caml_string_notequal(_cI_,cst_rgba$0))
- {if(alpha$0)
- {var
- a$0=alpha$0[1],
- _cJ_=f_of_s(a$0),
- _cK_=i_of_s_o(blue$0),
- _cL_=i_of_s_o(green$0);
- return [4,[0,i_of_s_o(red$0),_cL_,_cK_,_cJ_]]}
- return fail(0)}}
- return fail(0)}
- var match$3=string_match(re_hsl,s,0);
- if(match$3)
- {var
- r$1=match$3[1],
- red$1=matched_group(r$1,2),
- green$1=matched_group(r$1,3),
- blue$1=matched_group(r$1,4),
- alpha$1=matched_group(r$1,5),
- match$4=matched_group(r$1,1);
- if(match$4)
- {var _cO_=match$4[1];
- if(! caml_string_notequal(_cO_,cst_hsl))
- {if(alpha$1)return fail(0);
- var _cS_=i_of_s_o(blue$1),_cT_=i_of_s_o(green$1);
- return [5,[0,i_of_s_o(red$1),_cT_,_cS_]]}
- if(! caml_string_notequal(_cO_,cst_hsla))
- {if(alpha$1)
- {var
- a$1=alpha$1[1],
- _cP_=f_of_s(a$1),
- _cQ_=i_of_s_o(blue$1),
- _cR_=i_of_s_o(green$1);
- return [6,[0,i_of_s_o(red$1),_cR_,_cQ_,_cP_]]}
- return fail(0)}}
- return fail(0)}
- return fail(0)}
- throw _cV_}}
- function string_of_t$0(param)
- {if(typeof param === "number")
- return cst_0;
- else
- switch(param[0])
- {case 0:
- var f=param[1];return caml_call3(Stdlib_Printf[4],_b8_,f,cst_em$0);
- case 1:
- var f$0=param[1];
- return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex);
- case 2:
- var f$1=param[1];
- return caml_call3(Stdlib_Printf[4],_b__,f$1,cst_px);
- case 3:
- var f$2=param[1];
- return caml_call3(Stdlib_Printf[4],_b$_,f$2,cst_gd);
- case 4:
- var f$3=param[1];
- return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem);
- case 5:
- var f$4=param[1];
- return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw);
- case 6:
- var f$5=param[1];
- return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh);
- case 7:
- var f$6=param[1];
- return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm);
- case 8:
- var f$7=param[1];
- return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch);
- case 9:
- var f$8=param[1];
- return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm);
- case 10:
- var f$9=param[1];
- return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm);
- case 11:
- var f$10=param[1];
- return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in);
- case 12:
- var f$11=param[1];
- return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt);
- default:
- var f$12=param[1];
- return caml_call3(Stdlib_Printf[4],_cj_,f$12,cst_pc)}}
- function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))}
- function ml$0(t)
- {var s=caml_string_of_jsstring(t);
- if(caml_call2(String[62],s,cst_0$0))return 0;
- function fail(param)
- {var _cB_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length);
- throw [0,Stdlib[6],_cB_]}
- var re=regexp(cst_d_d_s_S),match=string_match(re,s,0);
- if(match)
- {var r=match[1],match$0=matched_group(r,1);
- if(match$0)
- {var f=match$0[1];
- try
- {var _cz_=caml_float_of_string(f)}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Stdlib[6])
- {var
- s$0=exn[2],
- _cy_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0);
- throw [0,Stdlib[6],_cy_]}
- throw exn}
- var f$0=_cz_}
- else
- var f$0=fail(0);
- var match$1=matched_group(r,2);
- if(match$1)
- {var _cA_=match$1[1],switch$0=caml_string_compare(_cA_,cst_pc$0);
- if(0 <= switch$0)
- {if(! (0 < switch$0))return [13,f$0];
- if(! caml_string_notequal(_cA_,cst_pt$0))return [12,f$0];
- if(! caml_string_notequal(_cA_,cst_px$0))return [2,f$0];
- if(! caml_string_notequal(_cA_,cst_rem$0))return [4,f$0];
- if(! caml_string_notequal(_cA_,cst_vh$0))return [6,f$0];
- if(! caml_string_notequal(_cA_,cst_vm$0))return [7,f$0];
- if(! caml_string_notequal(_cA_,cst_vw$0))return [5,f$0]}
- else
- {if(! caml_string_notequal(_cA_,cst_ch$0))return [8,f$0];
- if(! caml_string_notequal(_cA_,cst_cm$0))return [10,f$0];
- if(! caml_string_notequal(_cA_,cst_em$1))return [0,f$0];
- if(! caml_string_notequal(_cA_,cst_ex$0))return [1,f$0];
- if(! caml_string_notequal(_cA_,cst_gd$0))return [3,f$0];
- if(! caml_string_notequal(_cA_,cst_in$0))return [11,f$0];
- if(! caml_string_notequal(_cA_,cst_mm$0))return [9,f$0]}
- return fail(0)}
- return fail(0)}
- return fail(0)}
- var Length=[0,string_of_t$0,js$0,ml$0];
- function string_of_t$1(param)
- {switch(param[0])
- {case 0:
- var f=param[1];return caml_call3(Stdlib_Printf[4],_ck_,f,cst_deg);
- case 1:
- var f$0=param[1];
- return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad);
- case 2:
- var f$1=param[1];
- return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad);
- default:
- var f$2=param[1];
- return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}}
- function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))}
- function ml$1(j)
- {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns);
- function fail(param)
- {var _cx_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0);
- throw [0,Stdlib[6],_cx_]}
- var match=string_match(re,s,0);
- if(match)
- {var r=match[1],match$0=matched_group(r,1);
- if(match$0)
- {var f=match$0[1];
- try
- {var _cv_=caml_float_of_string(f)}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Stdlib[6])
- {var
- s$0=exn[2],
- _cu_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0);
- throw [0,Stdlib[6],_cu_]}
- throw exn}
- var f$0=_cv_}
- else
- var f$0=fail(0);
- var match$1=matched_group(r,2);
- if(match$1)
- {var _cw_=match$1[1];
- if(! caml_string_notequal(_cw_,cst_deg$0))return [0,f$0];
- if(! caml_string_notequal(_cw_,cst_grad$0))return [1,f$0];
- if(! caml_string_notequal(_cw_,cst_rad$0))return [2,f$0];
- if(! caml_string_notequal(_cw_,cst_turns$0))return [3,f$0]}
- return fail(0)}
- return fail(0)}
- var
- Angle=[0,string_of_t$1,js$1,ml$1],
- Js_of_ocaml_CSS=
- [0,
- [0,
- string_of_name,
- rgb_of_name,
- hex_of_rgb,
- rgb,
- hsl,
- string_of_t,
- js,
- ml,
- js_t_of_js_string],
- Length,
- Angle];
- caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS");
- function listen(opt,target,typ,cb)
- {if(opt)var sth=opt[1],capture=sth;else var capture=0;
- var _ct_=! ! capture;
- return addEventListener
- (target,
- typ,
- full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}),
- _ct_)}
- var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener];
- caml_register_global
- (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events");
- var
- t0="http://www.w3.org/2000/svg",
- SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)];
- function createElement$0(t2,name)
- {var t1=caml_jsstring_of_string(name);
- return t2.createElementNS("http://www.w3.org/2000/svg",t1)}
- function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)}
- function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)}
- function createAltGlyph(doc)
- {return unsafeCreateElement$0(doc,cst_altglyph)}
- function createAltGlyphDef(doc)
- {return unsafeCreateElement$0(doc,cst_altglyphdef)}
- function createAltGlyphItem(doc)
- {return unsafeCreateElement$0(doc,cst_altglyphitem)}
- function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)}
- function createAnimateColor(doc)
- {return unsafeCreateElement$0(doc,cst_animatecolor)}
- function createAnimateMotion(doc)
- {return unsafeCreateElement$0(doc,cst_animatemotion)}
- function createAnimateTransform(doc)
- {return unsafeCreateElement$0(doc,cst_animatetransform)}
- function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)}
- function createClipPath(doc)
- {return unsafeCreateElement$0(doc,cst_clippath)}
- function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)}
- function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)}
- function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)}
- function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)}
- function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)}
- function createFont(doc){return unsafeCreateElement$0(doc,cst_font)}
- function createFontFace(doc)
- {return unsafeCreateElement$0(doc,cst_font_face)}
- function createFontFaceFormat(doc)
- {return unsafeCreateElement$0(doc,cst_font_face_format)}
- function createFontFaceName(doc)
- {return unsafeCreateElement$0(doc,cst_font_face_name)}
- function createFontFaceSrc(doc)
- {return unsafeCreateElement$0(doc,cst_font_face_src)}
- function createFontFaceUri(doc)
- {return unsafeCreateElement$0(doc,cst_font_face_uri)}
- function createForeignObject(doc)
- {return unsafeCreateElement$0(doc,cst_foreignObject)}
- function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)}
- function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)}
- function createGlyphRef(doc)
- {return unsafeCreateElement$0(doc,cst_glyphref)}
- function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)}
- function createImage(doc){return unsafeCreateElement$0(doc,cst_image)}
- function createLineElement(doc)
- {return unsafeCreateElement$0(doc,cst_line)}
- function createLinearElement(doc)
- {return unsafeCreateElement$0(doc,cst_lineargradient)}
- function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)}
- function createMetaData(doc)
- {return unsafeCreateElement$0(doc,cst_metadata)}
- function createMissingGlyph(doc)
- {return unsafeCreateElement$0(doc,cst_missing_glyph)}
- function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)}
- function createPath(doc){return unsafeCreateElement$0(doc,cst_path)}
- function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)}
- function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)}
- function createPolyline(doc)
- {return unsafeCreateElement$0(doc,cst_polyline)}
- function createRadialgradient(doc)
- {return unsafeCreateElement$0(doc,cst_radialgradient)}
- function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)}
- function createScript$0(doc)
- {return unsafeCreateElement$0(doc,cst_script$2)}
- function createSet(doc){return unsafeCreateElement$0(doc,cst_set)}
- function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)}
- function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)}
- function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)}
- function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)}
- function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)}
- function createTextElement(doc)
- {return unsafeCreateElement$0(doc,cst_text$0)}
- function createTextpath(doc)
- {return unsafeCreateElement$0(doc,cst_textpath)}
- function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)}
- function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)}
- function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)}
- function createUse(doc){return unsafeCreateElement$0(doc,cst_use)}
- function createView(doc){return unsafeCreateElement$0(doc,cst_view)}
- function createvkern(doc){return unsafeCreateElement$0(doc,cst_vkern)}
- var svg_element=Unsafe[1].SVGElement,document$0=Unsafe[1].document;
- function getElementById$0(id)
- {function _cq_(e){if(e instanceof svg_element)return e;throw Stdlib[8]}
- function _cr_(param){throw Stdlib[8]}
- var
- t6=caml_jsstring_of_string(id),
- t7=Unsafe[1].document,
- _cs_=t7.getElementById(t6);
- return caml_call3(Opt[7],_cs_,_cr_,_cq_)}
- function element$2(e){return e instanceof svg_element?e:no_handler}
- function unsafeCoerce$0(e,tag)
- {var t9=e.tagName,_cp_=caml_jsstring_of_string(tag);
- return t9.toLowerCase() === _cp_?e:no_handler}
- function a$0(e){return unsafeCoerce$0(e,cst_a$3)}
- function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)}
- function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)}
- function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)}
- function animate(e){return unsafeCoerce$0(e,cst_animate$0)}
- function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)}
- function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)}
- function animateTransform(e)
- {return unsafeCoerce$0(e,cst_animatetransform$0)}
- function circle(e){return unsafeCoerce$0(e,cst_circle$0)}
- function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)}
- function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)}
- function defs(e){return unsafeCoerce$0(e,cst_defs$0)}
- function desc(e){return unsafeCoerce$0(e,cst_desc$0)}
- function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)}
- function filter(e){return unsafeCoerce$0(e,cst_filter$0)}
- function font(e){return unsafeCoerce$0(e,cst_font$0)}
- function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)}
- function fontFaceFormat(e)
- {return unsafeCoerce$0(e,cst_font_face_format$0)}
- function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)}
- function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)}
- function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)}
- function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)}
- function g(e){return unsafeCoerce$0(e,cst_g$1)}
- function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)}
- function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)}
- function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)}
- function image(e){return unsafeCoerce$0(e,cst_image$0)}
- function lineElement(e){return unsafeCoerce$0(e,cst_line$0)}
- function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)}
- function mask(e){return unsafeCoerce$0(e,cst_mask$0)}
- function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)}
- function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)}
- function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)}
- function path$0(e){return unsafeCoerce$0(e,cst_path$0)}
- function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)}
- function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)}
- function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)}
- function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)}
- function rect(e){return unsafeCoerce$0(e,cst_rect$0)}
- function script$0(e){return unsafeCoerce$0(e,cst_script$3)}
- function set$1(e){return unsafeCoerce$0(e,cst_set$0)}
- function stop(e){return unsafeCoerce$0(e,cst_stop$0)}
- function style$0(e){return unsafeCoerce$0(e,cst_style$3)}
- function svg(e){return unsafeCoerce$0(e,cst_svg$0)}
- function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)}
- function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)}
- function textElement(e){return unsafeCoerce$0(e,cst_text$1)}
- function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)}
- function title$0(e){return unsafeCoerce$0(e,cst_title$3)}
- function tref(e){return unsafeCoerce$0(e,cst_tref$0)}
- function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)}
- function use(e){return unsafeCoerce$0(e,cst_use$0)}
- function view(e){return unsafeCoerce$0(e,cst_view$0)}
- function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)}
- var
- Js_of_ocaml_Dom_svg=
- [0,
- t0,
- SVGError,
- createElement$0,
- createA$0,
- createAltGlyph,
- createAltGlyphDef,
- createAltGlyphItem,
- createAnimate,
- createAnimateColor,
- createAnimateMotion,
- createAnimateTransform,
- createCircle,
- createClipPath,
- createCursor,
- createDefs,
- createDesc,
- createEllipse,
- createFilter,
- createFont,
- createFontFace,
- createFontFaceFormat,
- createFontFaceName,
- createFontFaceSrc,
- createFontFaceUri,
- createForeignObject,
- createG,
- createGlyph,
- createGlyphRef,
- createhkern,
- createImage,
- createLineElement,
- createLinearElement,
- createMask,
- createMetaData,
- createMissingGlyph,
- createMPath,
- createPath,
- createPattern,
- createPolygon,
- createPolyline,
- createRadialgradient,
- createRect,
- createScript$0,
- createSet,
- createStop,
- createStyle$0,
- createSvg,
- createSwitch,
- createSymbol,
- createTextElement,
- createTextpath,
- createTitle$0,
- createTref,
- createTspan,
- createUse,
- createView,
- createvkern,
- svg_element,
- document$0,
- getElementById$0,
- [0,
- element$2,
- a$0,
- altGlyph,
- altGlyphDef,
- altGlyphItem,
- animate,
- animateColor,
- animateMotion,
- animateTransform,
- circle,
- clipPath,
- cursor,
- defs,
- desc,
- ellipse,
- filter,
- font,
- fontFace,
- fontFaceFormat,
- fontFaceName,
- fontFaceSrc,
- fontFaceUri,
- foreignObject,
- g,
- glyph,
- glyphRef,
- hkern,
- image,
- lineElement,
- linearElement,
- mask,
- metaData,
- missingGlyph,
- mPath,
- path$0,
- pattern,
- polygon,
- polyline,
- radialgradient,
- rect,
- script$0,
- set$1,
- stop,
- style$0,
- svg,
- switch$0,
- symbol$12,
- textElement,
- textpath,
- title$0,
- tref,
- tspan,
- use,
- view,
- vkern]];
- caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg");
- function withCredentials(b)
- {var t1={},t0=! ! b;t1.withCredentials = t0;return t1}
- var
- eventSource=Unsafe[1].EventSource,
- eventSource_options=Unsafe[1].EventSource,
- Js_of_ocaml_EventSource=
- [0,withCredentials,eventSource,eventSource_options,addEventListener];
- caml_register_global
- (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource");
- var
- console=runtime.caml_js_get_console(0),
- Js_of_ocaml_Firebug=[0,console];
- caml_register_global(1672,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug");
- function empty_position_options(param){return {}}
- var
- t1$0=Unsafe[1].navigator,
- geolocation=caml_call1(Optdef[5],t1$0)?t1$0.geolocation:t1$0;
- function is_supported$3(param){return caml_call1(Optdef[5],geolocation)}
- var
- Js_of_ocaml_Geolocation=
- [0,empty_position_options,geolocation,is_supported$3];
- caml_register_global
- (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation");
- function empty_intersection_observer_op(param){return {}}
- var intersectionObserver_unsafe=Unsafe[1].IntersectionObserver;
- function is_supported$4(param)
- {return caml_call1(Optdef[5],intersectionObserver_unsafe)}
- var
- Js_of_ocaml_IntersectionObserv=
- [0,
- empty_intersection_observer_op,
- is_supported$4,
- intersectionObserver_unsafe];
- caml_register_global
- (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver");
- function object_options(param){return {"localeMatcher":"best fit"}}
- function options(param)
- {return {"localeMatcher":"best fit",
- "usage":"sort",
- "sensitivity":"variant",
- "ignorePunctuation":t4,
- "numeric":t4,
- "caseFirst":"false"}}
- var Collator=[0,object_options,options];
- function options$0(param)
- {return {"localeMatcher":"best fit",
- "timeZone":t39,
- "hour12":t39,
- "hourCycle":t39,
- "formatMatcher":"best fit",
- "weekday":t39,
- "era":t39,
- "year":t39,
- "month":t39,
- "day":t39,
- "hour":t39,
- "minute":t39,
- "second":t39,
- "timeZoneName":t39}}
- var DateTimeFormat=[0,object_options,options$0];
- function options$1(param)
- {return {"localeMatcher":"best fit",
- "style":"decimal",
- "currency":t39,
- "currencyDisplay":t39,
- "useGrouping":t25,
- "minimumIntegerDigits":t39,
- "minimumFractionDigits":t39,
- "maximumFractionDigits":t39,
- "minimumSignificantDigits":t39,
- "maximumSignificantDigits":t39}}
- var NumberFormat=[0,object_options,options$1];
- function options$2(param)
- {return {"localeMatcher":"best fit","type":"cardinal"}}
- var
- PluralRules=[0,object_options,options$2],
- intl=Unsafe[1].Intl,
- t35=Unsafe[1].Intl,
- collator_constr=t35.Collator,
- t37=Unsafe[1].Intl,
- dateTimeFormat_constr=t37.DateTimeFormat,
- t39$0=Unsafe[1].Intl,
- numberFormat_constr=t39$0.NumberFormat,
- t41=Unsafe[1].Intl,
- pluralRules_constr=t41.PluralRules;
- function is_supported$5(param){return caml_call1(Optdef[5],intl)}
- var
- Js_of_ocaml_Intl=
- [0,
- Collator,
- DateTimeFormat,
- NumberFormat,
- PluralRules,
- intl,
- collator_constr,
- dateTimeFormat_constr,
- numberFormat_constr,
- pluralRules_constr,
- is_supported$5];
- caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl");
- var Js_of_ocaml$0=[0];
- caml_register_global(1676,Js_of_ocaml$0,"Js_of_ocaml");
- return}
- (globalThis));
-
-
-//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_int_of_string=runtime.caml_int_of_string,
- caml_js_from_array=runtime.caml_js_from_array,
- caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback,
- caml_jsstring_of_string=runtime.caml_jsstring_of_string,
- caml_register_global=runtime.caml_register_global,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
- {return f.length == 7
- ?f(a0,a1,a2,a3,a4,a5,a6)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
- var
- global_data=runtime.caml_get_global_data(),
- partial=[4,0,0,0,[12,46,0]],
- cst_No_rule_applies_in_the_giv=
- caml_string_of_jsbytes
- ("No rule applies in the given context to give a value to the variable"),
- cst_A_conflict_happend_between=
- caml_string_of_jsbytes
- ("A conflict happend between two rules giving a value to the variable"),
- cst_A_failure_happened_in_the_=
- caml_string_of_jsbytes("A failure happened in the assertion"),
- cst_Begin_call=caml_string_of_jsbytes("Begin call"),
- cst_End_call=caml_string_of_jsbytes("End call"),
- cst_Variable_definition=caml_string_of_jsbytes("Variable definition"),
- cst_Decision_taken=caml_string_of_jsbytes("Decision taken"),
- cst_date_of_jsoo_invalid_date=
- caml_string_of_jsbytes("date_of_jsoo: invalid date"),
- Stdlib_Format=global_data.Stdlib__Format,
- Js_of_ocaml_Js=global_data.Js_of_ocaml__Js,
- Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime,
- Yojson=global_data.Yojson,
- Stdlib_List=global_data.Stdlib__List,
- Stdlib_Array=global_data.Stdlib__Array,
- Stdlib_String=global_data.Stdlib__String,
- Stdlib=global_data.Stdlib,
- Runtime_jsoo=[0];
- caml_register_global(52,Runtime_jsoo,"Runtime_jsoo");
- var
- _a_=
- [0,
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(" in file "),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes(", position "),
- [4,
- 0,
- 0,
- 0,
- [12,
- 58,
- [4,
- 0,
- 0,
- 0,
- [11,caml_string_of_jsbytes("--"),[4,0,0,0,[12,58,partial]]]]]]]]]],
- caml_string_of_jsbytes("%s in file %s, position %d:%d--%d:%d.")];
- function duration_of_jsoo(d)
- {return caml_call3(Runtime_ocaml_Runtime[59],d.years,d.months,d.days)}
- function duration_to_jsoo(d)
- {var
- match=caml_call1(Runtime_ocaml_Runtime[60],d),
- days=match[3],
- months=match[2],
- years=match[1];
- return {"years":years,"months":months,"days":days}}
- function date_of_jsoo(d)
- {var d$0=runtime.caml_string_of_jsstring(d);
- if(caml_call2(Stdlib_String[14],d$0,84))
- var
- _r_=caml_call1(caml_call1(Stdlib_String[16],84),d$0),
- d$1=caml_call1(Stdlib_List[5],_r_);
- else
- var d$1=d$0;
- var match=caml_call2(Stdlib_String[16],45,d$1);
- if(match)
- {var _s_=match[2];
- if(_s_)
- {var _t_=_s_[2];
- if(_t_ && ! _t_[2])
- {var
- day=_t_[1],
- month=_s_[1],
- year=match[1],
- _u_=caml_int_of_string(day),
- _v_=caml_int_of_string(month),
- _w_=caml_int_of_string(year);
- return caml_call3(Runtime_ocaml_Runtime[56],_w_,_v_,_u_)}}}
- return caml_call1(Stdlib[2],cst_date_of_jsoo_invalid_date)}
- function date_to_jsoo(d)
- {return caml_jsstring_of_string(caml_call1(Runtime_ocaml_Runtime[55],d))}
- function t19(param)
- {return caml_js_wrap_meth_callback
- (function(param)
- {var _i_=caml_call1(Runtime_ocaml_Runtime[23],0);
- function _j_(evt)
- {if(3 === evt[0])
- var
- pos=evt[1],
- _q_=
- caml_call2(Stdlib_List[19],caml_jsstring_of_string,pos[6]),
- t12=caml_js_from_array(caml_call1(Stdlib_Array[12],_q_)),
- t7=caml_jsstring_of_string(pos[1]),
- _l_=
- caml_call1
- (Js_of_ocaml_Js[4],
- {"fileName":t7,
- "startLine":pos[2],
- "endLine":pos[4],
- "startColumn":pos[3],
- "endColumn":pos[5],
- "lawHeadings":t12});
- else
- var _l_=Js_of_ocaml_Js[3];
- if(2 === evt[0])
- var v=evt[2],_m_=v;
- else
- var _m_=caml_call1(Runtime_ocaml_Runtime[10],0);
- var
- _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_),
- t15=
- caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_));
- if(3 === evt[0])
- var _o_=0;
- else
- var
- info=evt[1],
- _o_=caml_call2(Stdlib_List[19],caml_jsstring_of_string,info);
- var
- t14=
- caml_js_from_array(caml_call1(Stdlib_Array[12],_o_));
- switch(evt[0])
- {case 0:var _p_=cst_Begin_call;break;
- case 1:var _p_=cst_End_call;break;
- case 2:var _p_=cst_Variable_definition;break;
- default:var _p_=cst_Decision_taken}
- var t13=caml_jsstring_of_string(_p_);
- return {"eventType":t13,
- "information":t14,
- "loggedValueJson":t15,
- "sourcePosition":_l_}}
- var _k_=caml_call2(Stdlib_List[19],_j_,_i_);
- return caml_js_from_array(caml_call1(Stdlib_Array[12],_k_))})}
- function t18(param)
- {return caml_js_wrap_meth_callback
- (function(param)
- {var
- _d_=caml_call1(Runtime_ocaml_Runtime[23],0),
- _e_=caml_call1(Runtime_ocaml_Runtime[24][1],_d_);
- function _f_(event)
- {var
- _h_=caml_call1(Runtime_ocaml_Runtime[20],event),
- t6=
- caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_));
- return {"data":t6}}
- var _g_=caml_call1(caml_call1(Stdlib_List[19],_f_),_e_);
- return caml_js_from_array(caml_call1(Stdlib_Array[12],_g_))})}
- function t17(param)
- {return caml_js_wrap_meth_callback(Runtime_ocaml_Runtime[25])}
- var
- event_manager=
- {"resetLog":caml_js_wrap_meth_callback(t17),
- "retrieveEvents":caml_js_wrap_meth_callback(t18),
- "retrieveRawEvents":caml_js_wrap_meth_callback(t19)};
- function execute_or_throw_error(f)
- {function throw_error(descr,pos)
- {var
- t21=
- caml_jsstring_of_string
- (caml_call7
- (Stdlib_Format[133],_a_,descr,pos[1],pos[2],pos[3],pos[4],pos[5]));
- function t23(param){return t21}
- var
- _c_=
- caml_call1
- (Js_of_ocaml_Js[33][9],
- {"name":"NoValueProvided",
- "message":t21,
- "stack":Js_of_ocaml_Js[6][1],
- "toString":caml_js_wrap_meth_callback(t23)});
- return caml_call1(Js_of_ocaml_Js[33][5],_c_)}
- try
- {var _b_=caml_call1(f,0);return _b_}
- catch(exn)
- {exn = caml_wrap_exception(exn);
- if(exn[1] === Runtime_ocaml_Runtime[8])
- {var pos=exn[2];
- return throw_error(cst_No_rule_applies_in_the_giv,pos)}
- if(exn[1] === Runtime_ocaml_Runtime[4])
- {var pos$0=exn[2];
- return throw_error(cst_A_conflict_happend_between,pos$0)}
- if(exn[1] === Runtime_ocaml_Runtime[3])
- {var pos$1=exn[2];
- return throw_error(cst_A_failure_happened_in_the_,pos$1)}
- throw exn}}
- var
- Runtime_jsoo_Runtime=
- [0,
- event_manager,
- duration_of_jsoo,
- duration_to_jsoo,
- date_of_jsoo,
- date_to_jsoo,
- execute_or_throw_error];
- caml_register_global(62,Runtime_jsoo_Runtime,"Runtime_jsoo__Runtime");
- return}
- (globalThis));
-
-
-//# 1 "law_source/.law_source.objs/law_source.cma.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_equal=runtime.caml_equal,
- caml_js_from_array=runtime.caml_js_from_array,
- caml_js_to_array=runtime.caml_js_to_array,
- caml_js_wrap_callback=runtime.caml_js_wrap_callback,
- caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback,
- caml_register_global=runtime.caml_register_global,
- caml_string_notequal=runtime.caml_string_notequal,
- caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
- caml_string_of_jsstring=runtime.caml_string_of_jsstring,
- caml_wrap_exception=runtime.caml_wrap_exception;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- function caml_call2(f,a0,a1)
- {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
- function caml_call3(f,a0,a1,a2)
- {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
- function caml_call4(f,a0,a1,a2,a3)
- {return f.length == 4
- ?f(a0,a1,a2,a3)
- :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
- var
- global_data=runtime.caml_get_global_data(),
- cst_0$68=caml_string_of_jsbytes("0"),
- cst_0$67=caml_string_of_jsbytes("0"),
- cst_0$65=caml_string_of_jsbytes("0"),
- cst_0$66=caml_string_of_jsbytes("0"),
- cst_0$64=caml_string_of_jsbytes("0"),
- cst_1$28=caml_string_of_jsbytes("1."),
- cst_0_5$0=caml_string_of_jsbytes("0.5"),
- cst_0$63=caml_string_of_jsbytes("0."),
- cst_12$10=caml_string_of_jsbytes("12."),
- cst_12$8=caml_string_of_jsbytes("12."),
- cst_1$27=caml_string_of_jsbytes("1."),
- cst_12$9=caml_string_of_jsbytes("12."),
- cst_12$7=caml_string_of_jsbytes("12."),
- cst_12$5=caml_string_of_jsbytes("12."),
- cst_1$26=caml_string_of_jsbytes("1."),
- cst_12$6=caml_string_of_jsbytes("12."),
- cst_0$62=caml_string_of_jsbytes("0"),
- cst_1$25=caml_string_of_jsbytes("1"),
- cst_11=caml_string_of_jsbytes("11"),
- cst_16$1=caml_string_of_jsbytes("16"),
- cst_0_0369=caml_string_of_jsbytes("0.0369"),
- cst_1$24=caml_string_of_jsbytes("1"),
- cst_16$0=caml_string_of_jsbytes("16"),
- cst_0_0567=caml_string_of_jsbytes("0.0567"),
- cst_1$23=caml_string_of_jsbytes("1"),
- cst_1$22=caml_string_of_jsbytes("1"),
- cst_0$61=caml_string_of_jsbytes("0"),
- cst_0_16$1=caml_string_of_jsbytes("0.16"),
- cst_0_08$0=caml_string_of_jsbytes("0.08"),
- cst_0_04=caml_string_of_jsbytes("0.04"),
- cst_0$60=caml_string_of_jsbytes("0"),
- cst_0$58=caml_string_of_jsbytes("0."),
- cst_0$59=caml_string_of_jsbytes("0."),
- cst_1$21=caml_string_of_jsbytes("1"),
- cst_0_232=caml_string_of_jsbytes("0.232"),
- cst_0$57=caml_string_of_jsbytes("0"),
- cst_1$20=caml_string_of_jsbytes("1"),
- cst_0_2379=caml_string_of_jsbytes("0.2379"),
- cst_0$56=caml_string_of_jsbytes("0"),
- cst_1$19=caml_string_of_jsbytes("1"),
- cst_0_2437=caml_string_of_jsbytes("0.2437"),
- cst_0$55=caml_string_of_jsbytes("0"),
- cst_1$18=caml_string_of_jsbytes("1"),
- cst_0_2496=caml_string_of_jsbytes("0.2496"),
- cst_0$54=caml_string_of_jsbytes("0"),
- cst_1$17=caml_string_of_jsbytes("1"),
- cst_0_2555=caml_string_of_jsbytes("0.2555"),
- cst_0$53=caml_string_of_jsbytes("0"),
- cst_1$16=caml_string_of_jsbytes("1"),
- cst_0_2613=caml_string_of_jsbytes("0.2613"),
- cst_0$52=caml_string_of_jsbytes("0"),
- cst_1$15=caml_string_of_jsbytes("1"),
- cst_0_2672=caml_string_of_jsbytes("0.2672"),
- cst_0$51=caml_string_of_jsbytes("0"),
- cst_1$14=caml_string_of_jsbytes("1"),
- cst_0_2804=caml_string_of_jsbytes("0.2804"),
- cst_0$50=caml_string_of_jsbytes("0"),
- cst_1$13=caml_string_of_jsbytes("1"),
- cst_0_2936=caml_string_of_jsbytes("0.2936"),
- cst_0$49=caml_string_of_jsbytes("0"),
- cst_1$12=caml_string_of_jsbytes("1"),
- cst_0_3068=caml_string_of_jsbytes("0.3068"),
- cst_0$48=caml_string_of_jsbytes("0"),
- cst_1$11=caml_string_of_jsbytes("1"),
- cst_0_32$0=caml_string_of_jsbytes("0.32"),
- cst_0$47=caml_string_of_jsbytes("0"),
- cst_1$10=caml_string_of_jsbytes("1"),
- cst_0_32=caml_string_of_jsbytes("0.32"),
- cst_0$46=caml_string_of_jsbytes("0"),
- cst_1$9=caml_string_of_jsbytes("1"),
- cst_0_16$0=caml_string_of_jsbytes("0.16"),
- cst_0$45=caml_string_of_jsbytes("0"),
- cst_1$8=caml_string_of_jsbytes("1"),
- cst_0_08=caml_string_of_jsbytes("0.08"),
- cst_0$44=caml_string_of_jsbytes("0"),
- cst_2$15=caml_string_of_jsbytes("2"),
- cst_2$16=caml_string_of_jsbytes("2"),
- cst_0_41=caml_string_of_jsbytes("0.41"),
- cst_0$43=caml_string_of_jsbytes("0"),
- cst_2$13=caml_string_of_jsbytes("2"),
- cst_2$14=caml_string_of_jsbytes("2"),
- cst_0_205=caml_string_of_jsbytes("0.205"),
- cst_0$42=caml_string_of_jsbytes("0"),
- cst_2$11=caml_string_of_jsbytes("2"),
- cst_2$12=caml_string_of_jsbytes("2"),
- cst_0_1025=caml_string_of_jsbytes("0.1025"),
- cst_0$41=caml_string_of_jsbytes("0"),
- cst_0_20234=caml_string_of_jsbytes("0.20234"),
- cst_0_10117=caml_string_of_jsbytes("0.10117"),
- cst_0_05059=caml_string_of_jsbytes("0.05059"),
- cst_12$4=caml_string_of_jsbytes("12."),
- cst_12$2=caml_string_of_jsbytes("12."),
- cst_1$7=caml_string_of_jsbytes("1."),
- cst_12$3=caml_string_of_jsbytes("12."),
- cst_12$1=caml_string_of_jsbytes("12."),
- cst_12=caml_string_of_jsbytes("12."),
- cst_1$6=caml_string_of_jsbytes("1."),
- cst_12$0=caml_string_of_jsbytes("12."),
- cst_0$40=caml_string_of_jsbytes("0"),
- cst_1$5=caml_string_of_jsbytes("1"),
- cst_1$4=caml_string_of_jsbytes("1"),
- cst_2$10=caml_string_of_jsbytes("2"),
- cst_0$38=caml_string_of_jsbytes("0"),
- cst_0_145=caml_string_of_jsbytes("0.145"),
- cst_0$39=caml_string_of_jsbytes("0"),
- cst_0$36=caml_string_of_jsbytes("0"),
- cst_0_1393=caml_string_of_jsbytes("0.1393"),
- cst_0$37=caml_string_of_jsbytes("0"),
- cst_0$34=caml_string_of_jsbytes("0"),
- cst_0_1335=caml_string_of_jsbytes("0.1335"),
- cst_0$35=caml_string_of_jsbytes("0"),
- cst_0$32=caml_string_of_jsbytes("0"),
- cst_0_1278=caml_string_of_jsbytes("0.1278"),
- cst_0$33=caml_string_of_jsbytes("0"),
- cst_0$30=caml_string_of_jsbytes("0"),
- cst_0_122=caml_string_of_jsbytes("0.122"),
- cst_0$31=caml_string_of_jsbytes("0"),
- cst_0$28=caml_string_of_jsbytes("0"),
- cst_0_1163=caml_string_of_jsbytes("0.1163"),
- cst_0$29=caml_string_of_jsbytes("0"),
- cst_0$26=caml_string_of_jsbytes("0"),
- cst_0_1105=caml_string_of_jsbytes("0.1105"),
- cst_0$27=caml_string_of_jsbytes("0"),
- cst_0$24=caml_string_of_jsbytes("0"),
- cst_0_0976=caml_string_of_jsbytes("0.0976"),
- cst_0$25=caml_string_of_jsbytes("0"),
- cst_0$22=caml_string_of_jsbytes("0"),
- cst_0_0847=caml_string_of_jsbytes("0.0847"),
- cst_0$23=caml_string_of_jsbytes("0"),
- cst_0$20=caml_string_of_jsbytes("0"),
- cst_0_0717=caml_string_of_jsbytes("0.0717"),
- cst_0$21=caml_string_of_jsbytes("0"),
- cst_0$18=caml_string_of_jsbytes("0"),
- cst_5728=caml_string_of_jsbytes("5728"),
- cst_0$19=caml_string_of_jsbytes("0"),
- cst_0$16=caml_string_of_jsbytes("0"),
- cst_0_0588$0=caml_string_of_jsbytes("0.0588"),
- cst_0$17=caml_string_of_jsbytes("0"),
- cst_1$3=caml_string_of_jsbytes("1"),
- cst_0_0588=caml_string_of_jsbytes("0.0588"),
- cst_0$15=caml_string_of_jsbytes("0"),
- cst_1$2=caml_string_of_jsbytes("1."),
- cst_0_5=caml_string_of_jsbytes("0.5"),
- cst_0$14=caml_string_of_jsbytes("0."),
- cst_0$13=caml_string_of_jsbytes("0."),
- cst_2$9=caml_string_of_jsbytes("2"),
- cst_0_0463$0=caml_string_of_jsbytes("0.0463"),
- cst_0$12=caml_string_of_jsbytes("0"),
- cst_2$8=caml_string_of_jsbytes("2"),
- cst_0_0539=caml_string_of_jsbytes("0.0539"),
- cst_0$11=caml_string_of_jsbytes("0"),
- cst_2$7=caml_string_of_jsbytes("2"),
- cst_0_0615=caml_string_of_jsbytes("0.0615"),
- cst_0$10=caml_string_of_jsbytes("0"),
- cst_2$6=caml_string_of_jsbytes("2"),
- cst_0_069=caml_string_of_jsbytes("0.069"),
- cst_0$9=caml_string_of_jsbytes("0"),
- cst_2$5=caml_string_of_jsbytes("2"),
- cst_0_0766=caml_string_of_jsbytes("0.0766"),
- cst_0$8=caml_string_of_jsbytes("0"),
- cst_2$4=caml_string_of_jsbytes("2"),
- cst_0_0842=caml_string_of_jsbytes("0.0842"),
- cst_0$7=caml_string_of_jsbytes("0"),
- cst_2$3=caml_string_of_jsbytes("2"),
- cst_0_0918=caml_string_of_jsbytes("0.0918"),
- cst_0$6=caml_string_of_jsbytes("0"),
- cst_2$2=caml_string_of_jsbytes("2"),
- cst_0_1089=caml_string_of_jsbytes("0.1089"),
- cst_0$5=caml_string_of_jsbytes("0"),
- cst_2$1=caml_string_of_jsbytes("2"),
- cst_0_1259=caml_string_of_jsbytes("0.1259"),
- cst_0$4=caml_string_of_jsbytes("0"),
- cst_2$0=caml_string_of_jsbytes("2"),
- cst_0_143=caml_string_of_jsbytes("0.143"),
- cst_0$3=caml_string_of_jsbytes("0"),
- cst_2=caml_string_of_jsbytes("2"),
- cst_0_16=caml_string_of_jsbytes("0.16"),
- cst_0$2=caml_string_of_jsbytes("0"),
- cst_3$1=caml_string_of_jsbytes("3"),
- cst_3$2=caml_string_of_jsbytes("3"),
- cst_0_0463=caml_string_of_jsbytes("0.0463"),
- cst_0$1=caml_string_of_jsbytes("0"),
- cst_1$1=caml_string_of_jsbytes("1"),
- cst_1$0=caml_string_of_jsbytes("1"),
- cst_562800$0=caml_string_of_jsbytes("562800"),
- cst_5628600=caml_string_of_jsbytes("5628600"),
- cst_568400$0=caml_string_of_jsbytes("568400"),
- cst_5684900=caml_string_of_jsbytes("5684900"),
- cst_577500$0=caml_string_of_jsbytes("577500"),
- cst_5775900=caml_string_of_jsbytes("5775900"),
- cst_582700$0=caml_string_of_jsbytes("582700"),
- cst_5827900=caml_string_of_jsbytes("5827900"),
- cst_559500$0=caml_string_of_jsbytes("559500"),
- cst_5595000=caml_string_of_jsbytes("5595000"),
- cst_562800=caml_string_of_jsbytes("562800"),
- cst_7877000=caml_string_of_jsbytes("7877000"),
- cst_568400=caml_string_of_jsbytes("568400"),
- cst_7955800=caml_string_of_jsbytes("7955800"),
- cst_577500=caml_string_of_jsbytes("577500"),
- cst_8083100=caml_string_of_jsbytes("8083100"),
- cst_582700=caml_string_of_jsbytes("582700"),
- cst_8155800=caml_string_of_jsbytes("8155800"),
- cst_559500=caml_string_of_jsbytes("559500"),
- cst_7830000=caml_string_of_jsbytes("7830000"),
- cst_14=caml_string_of_jsbytes("14"),
- cst_3$0=caml_string_of_jsbytes("3"),
- cst_3=caml_string_of_jsbytes("3"),
- cst_169$0=caml_string_of_jsbytes("169."),
- cst_0_55$0=caml_string_of_jsbytes("0.55"),
- cst_169=caml_string_of_jsbytes("169."),
- cst_0_55=caml_string_of_jsbytes("0.55"),
- cst_20=caml_string_of_jsbytes("20"),
- cst_41316=caml_string_of_jsbytes("41316"),
- cst_41440=caml_string_of_jsbytes("41440"),
- cst_41481=caml_string_of_jsbytes("41481"),
- cst_42228=caml_string_of_jsbytes("42228"),
- cst_1003=caml_string_of_jsbytes("1003"),
- cst_757=caml_string_of_jsbytes("757"),
- cst_1015=caml_string_of_jsbytes("1015"),
- cst_766=caml_string_of_jsbytes("766"),
- cst_1025=caml_string_of_jsbytes("1025"),
- cst_774=caml_string_of_jsbytes("774"),
- cst_1057=caml_string_of_jsbytes("1057"),
- cst_798=caml_string_of_jsbytes("798"),
- cst_1085=caml_string_of_jsbytes("1085"),
- cst_819=caml_string_of_jsbytes("819"),
- cst_0=caml_string_of_jsbytes("0"),
- cst_0$0=caml_string_of_jsbytes("0"),
- cst_1=caml_string_of_jsbytes("-1"),
- cst_16=caml_string_of_jsbytes("16"),
- cst_i_avait_enfant_charge_avan=
- caml_string_of_jsbytes
- ("i_avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"),
- cst_i_personne_charge_effectiv=
- caml_string_of_jsbytes
- ("i_personne_charge_effective_permanente_remplit_titre_I_in"),
- cst_i_personne_charge_effectiv$0=
- caml_string_of_jsbytes
- ("i_personne_charge_effective_permanente_est_parent_in"),
- cst_i_r_sidence_in=caml_string_of_jsbytes("i_r\xc3\xa9sidence_in"),
- cst_i_ressources_m_nage_in=
- caml_string_of_jsbytes("i_ressources_m\xc3\xa9nage_in"),
- cst_i_enfants_in=caml_string_of_jsbytes("i_enfants_in"),
- cst_i_date_courante_in=caml_string_of_jsbytes("i_date_courante_in"),
- cst_i_montant_vers_out=
- caml_string_of_jsbytes("i_montant_vers\xc3\xa9_out"),
- cst_date_courante_in$2=caml_string_of_jsbytes("date_courante_in"),
- cst_montant_out=caml_string_of_jsbytes("montant_out"),
- cst_r_sidence_in$1=caml_string_of_jsbytes("r\xc3\xa9sidence_in"),
- cst_date_courante_in$1=caml_string_of_jsbytes("date_courante_in"),
- cst_brut_horaire_out=caml_string_of_jsbytes("brut_horaire_out"),
- cst_avait_enfant_charge_avant_=
- caml_string_of_jsbytes
- ("avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"),
- cst_enfants_charge_in=
- caml_string_of_jsbytes("enfants_\xc3\xa0_charge_in"),
- cst_date_courante_in$0=caml_string_of_jsbytes("date_courante_in"),
- cst_r_sidence_in$0=caml_string_of_jsbytes("r\xc3\xa9sidence_in"),
- cst_ressources_m_nage_in=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_in"),
- cst_personne_charge_effective_=
- caml_string_of_jsbytes
- ("personne_charge_effective_permanente_remplit_titre_I_in"),
- cst_personne_charge_effective_$0=
- caml_string_of_jsbytes
- ("personne_charge_effective_permanente_est_parent_in"),
- cst_montant_vers_out=caml_string_of_jsbytes("montant_vers\xc3\xa9_out"),
- cst_enfants_in=caml_string_of_jsbytes("enfants_in"),
- cst_le_plus_g_out=caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9_out"),
- cst_ge_minimum_alin_a_1_l521_3=
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3_out"),
- cst_r_sidence_in=caml_string_of_jsbytes("r\xc3\xa9sidence_in"),
- cst_prestation_courante_in=
- caml_string_of_jsbytes("prestation_courante_in"),
- cst_date_courante_in=caml_string_of_jsbytes("date_courante_in"),
- cst_r_gime_outre_mer_l751_1_ou=
- caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1_out"),
- cst_ge_l512_3_2_out=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2_out"),
- cst_conditions_hors_ge_out=
- caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge_out"),
- cst_droit_ouvert_out=caml_string_of_jsbytes("droit_ouvert_out"),
- cst_b_n_ficie_titre_personnel_=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"),
- cst_a_d_j_ouvert_droit_aux_all=
- caml_string_of_jsbytes
- ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),
- cst_prise_en_charge=caml_string_of_jsbytes("prise_en_charge"),
- cst_ge=caml_string_of_jsbytes("\xc3\xa2ge"),
- cst_date_de_naissance=caml_string_of_jsbytes("date_de_naissance"),
- cst_r_muneration_mensuelle=
- caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"),
- cst_obligation_scolaire=caml_string_of_jsbytes("obligation_scolaire"),
- cst_identifiant=caml_string_of_jsbytes("identifiant"),
- cst_d_b_n_ficie_titre_personne=
- caml_string_of_jsbytes
- ("d_b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"),
- cst_d_a_d_j_ouvert_droit_aux_a=
- caml_string_of_jsbytes
- ("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),
- cst_d_prise_en_charge=caml_string_of_jsbytes("d_prise_en_charge"),
- cst_d_date_de_naissance=caml_string_of_jsbytes("d_date_de_naissance"),
- cst_d_r_muneration_mensuelle=
- caml_string_of_jsbytes("d_r\xc3\xa9muneration_mensuelle"),
- cst_d_identifiant=caml_string_of_jsbytes("d_identifiant"),
- cst_Guadeloupe=caml_string_of_jsbytes("Guadeloupe"),
- cst_Guyane=caml_string_of_jsbytes("Guyane"),
- cst_Martinique=caml_string_of_jsbytes("Martinique"),
- cst_LaR_union=caml_string_of_jsbytes("LaR\xc3\xa9union"),
- cst_SaintBarth_lemy=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"),
- cst_SaintMartin=caml_string_of_jsbytes("SaintMartin"),
- cst_M_tropole=caml_string_of_jsbytes("M\xc3\xa9tropole"),
- cst_SaintPierreEtMiquelon=caml_string_of_jsbytes("SaintPierreEtMiquelon"),
- cst_Mayotte=caml_string_of_jsbytes("Mayotte"),
- cst_PrestationAccueilJeuneEnfa=
- caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"),
- cst_AllocationsFamiliales=caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_Compl_mentFamilial=
- caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"),
- cst_AllocationLogement=caml_string_of_jsbytes("AllocationLogement"),
- cst_Allocation_ducationEnfantH=
- caml_string_of_jsbytes
- ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"),
- cst_AllocationSoutienFamilial=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationRentr_eScolaire=
- caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"),
- cst_AllocationJournali_rePrese=
- caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"),
- cst_Normal=caml_string_of_jsbytes("Normal"),
- cst_AllocationVers_eAuxService=
- caml_string_of_jsbytes("AllocationVers\xc3\xa9eAuxServicesSociaux"),
- cst_Compl_te=caml_string_of_jsbytes("Compl\xc3\xa8te"),
- cst_Partag_e=caml_string_of_jsbytes("Partag\xc3\xa9e"),
- cst_Z_ro=caml_string_of_jsbytes("Z\xc3\xa9ro"),
- cst_Avant=caml_string_of_jsbytes("Avant"),
- cst_Pendant=caml_string_of_jsbytes("Pendant"),
- cst_Apr_s=caml_string_of_jsbytes("Apr\xc3\xa8s"),
- cst_GardeAltern_ePartageAlloca=
- caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"),
- cst_GardeAltern_eAllocataireUn=
- caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"),
- cst_EffectiveEtPermanente=caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_ServicesSociauxAllocationV=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"),
- cst_ServicesSociauxAllocationV$0=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"),
- cst_The_function_conditions_ho=
- caml_string_of_jsbytes
- ("The function 'conditions_hors_age_out' translation isn't yet supported..."),
- cst_The_function_droit_ouvert_=
- caml_string_of_jsbytes
- ("The function 'droit_ouvert_out' translation isn't yet supported..."),
- cst_Guadeloupe$0=caml_string_of_jsbytes("Guadeloupe"),
- cst_Guyane$0=caml_string_of_jsbytes("Guyane"),
- cst_LaReunion=caml_string_of_jsbytes("LaReunion"),
- cst_Martinique$0=caml_string_of_jsbytes("Martinique"),
- cst_Mayotte$0=caml_string_of_jsbytes("Mayotte"),
- cst_Metropole=caml_string_of_jsbytes("Metropole"),
- cst_SaintBarthelemy=caml_string_of_jsbytes("SaintBarthelemy"),
- cst_SaintMartin$0=caml_string_of_jsbytes("SaintMartin"),
- cst_SaintPierreEtMiquelon$0=
- caml_string_of_jsbytes("SaintPierreEtMiquelon"),
- cst_AllocationEducationEnfantH=
- caml_string_of_jsbytes("AllocationEducationEnfantHandicape"),
- cst_AllocationJournalierePrese=
- caml_string_of_jsbytes("AllocationJournalierePresenceParentale"),
- cst_AllocationLogement$0=caml_string_of_jsbytes("AllocationLogement"),
- cst_AllocationRentreeScolaire=
- caml_string_of_jsbytes("AllocationRentreeScolaire"),
- cst_AllocationSoutienFamilial$0=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationsFamiliales$0=
- caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_ComplementFamilial=caml_string_of_jsbytes("ComplementFamilial"),
- cst_PrestationAccueilJeuneEnfa$0=
- caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"),
- cst_AllocationVerseeAuxService=
- caml_string_of_jsbytes("AllocationVerseeAuxServicesSociaux"),
- cst_Normal$0=caml_string_of_jsbytes("Normal"),
- cst_Complete=caml_string_of_jsbytes("Complete"),
- cst_Partagee=caml_string_of_jsbytes("Partagee"),
- cst_Zero=caml_string_of_jsbytes("Zero"),
- cst_Apres=caml_string_of_jsbytes("Apres"),
- cst_Avant$0=caml_string_of_jsbytes("Avant"),
- cst_Pendant$0=caml_string_of_jsbytes("Pendant"),
- cst_EffectiveEtPermanente$0=
- caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_GardeAlterneeAllocataireUn=
- caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"),
- cst_GardeAlterneePartageAlloca=
- caml_string_of_jsbytes("GardeAlterneePartageAllocations"),
- cst_ServicesSociauxAllocationV$1=
- caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"),
- cst_ServicesSociauxAllocationV$2=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVerseeAuxServicesSociaux"),
- cst_AllocationsFamilialesLib=
- caml_string_of_jsbytes("AllocationsFamilialesLib"),
- cst_0$403=caml_string_of_jsbytes("0"),
- cst_0$404=caml_string_of_jsbytes("0"),
- cst_0$405=caml_string_of_jsbytes("0."),
- cst_0$402=caml_string_of_jsbytes("0"),
- cst_0$400=caml_string_of_jsbytes("0"),
- cst_0$401=caml_string_of_jsbytes("0"),
- cst_0$398=caml_string_of_jsbytes("0"),
- cst_0$399=caml_string_of_jsbytes("0"),
- cst_0$396=caml_string_of_jsbytes("0"),
- cst_0$397=caml_string_of_jsbytes("0"),
- cst_0$394=caml_string_of_jsbytes("0"),
- cst_0$395=caml_string_of_jsbytes("0"),
- cst_0$392=caml_string_of_jsbytes("0"),
- cst_0$393=caml_string_of_jsbytes("0"),
- cst_100$11=caml_string_of_jsbytes("100."),
- cst_0_01$1=caml_string_of_jsbytes("0.01"),
- cst_4999$1=caml_string_of_jsbytes("4999"),
- cst_0$391=caml_string_of_jsbytes("0"),
- cst_1$268=caml_string_of_jsbytes("1"),
- cst_1$267=caml_string_of_jsbytes("1"),
- cst_0$390=caml_string_of_jsbytes("0"),
- cst_1$266=caml_string_of_jsbytes("1"),
- cst_1$265=caml_string_of_jsbytes("1"),
- cst_0$389=caml_string_of_jsbytes("0"),
- cst_1$264=caml_string_of_jsbytes("1"),
- cst_0$387=caml_string_of_jsbytes("0"),
- cst_0$388=caml_string_of_jsbytes("0"),
- cst_1$263=caml_string_of_jsbytes("1"),
- cst_1$262=caml_string_of_jsbytes("1"),
- cst_0$386=caml_string_of_jsbytes("0"),
- cst_1$261=caml_string_of_jsbytes("1"),
- cst_1$260=caml_string_of_jsbytes("1"),
- cst_3$87=caml_string_of_jsbytes("3"),
- cst_0$383=caml_string_of_jsbytes("0"),
- cst_0_2$1=caml_string_of_jsbytes("0.2"),
- cst_3$88=caml_string_of_jsbytes("3"),
- cst_0$384=caml_string_of_jsbytes("0"),
- cst_0$385=caml_string_of_jsbytes("0"),
- cst_2_4=caml_string_of_jsbytes("2.4"),
- cst_1$259=caml_string_of_jsbytes("1"),
- cst_3$86=caml_string_of_jsbytes("3"),
- cst_0$382=caml_string_of_jsbytes("0"),
- cst_0$380=caml_string_of_jsbytes("0"),
- cst_0$381=caml_string_of_jsbytes("0"),
- cst_0$378=caml_string_of_jsbytes("0"),
- cst_0$379=caml_string_of_jsbytes("0"),
- cst_0$376=caml_string_of_jsbytes("0"),
- cst_0$377=caml_string_of_jsbytes("0"),
- cst_0$374=caml_string_of_jsbytes("0"),
- cst_0$375=caml_string_of_jsbytes("0"),
- cst_100$10=caml_string_of_jsbytes("100."),
- cst_0_01$0=caml_string_of_jsbytes("0.01"),
- cst_4999$0=caml_string_of_jsbytes("4999"),
- cst_0$373=caml_string_of_jsbytes("0"),
- cst_0$371=caml_string_of_jsbytes("0"),
- cst_50$7=caml_string_of_jsbytes("50"),
- cst_50$8=caml_string_of_jsbytes("50"),
- cst_0$372=caml_string_of_jsbytes("0"),
- cst_0$369=caml_string_of_jsbytes("0"),
- cst_0$370=caml_string_of_jsbytes("0"),
- cst_0$368=caml_string_of_jsbytes("0"),
- cst_0$367=caml_string_of_jsbytes("0"),
- cst_100$9=caml_string_of_jsbytes("100."),
- cst_0_01=caml_string_of_jsbytes("0.01"),
- cst_4999=caml_string_of_jsbytes("4999"),
- cst_0_75$7=caml_string_of_jsbytes("0.75"),
- cst_0$364=caml_string_of_jsbytes("0"),
- cst_158700=caml_string_of_jsbytes("158700"),
- cst_191300=caml_string_of_jsbytes("191300"),
- cst_1$256=caml_string_of_jsbytes("1"),
- cst_205500=caml_string_of_jsbytes("205500"),
- cst_2$104=caml_string_of_jsbytes("2"),
- cst_211300=caml_string_of_jsbytes("211300"),
- cst_3$83=caml_string_of_jsbytes("3"),
- cst_217100=caml_string_of_jsbytes("217100"),
- cst_4$79=caml_string_of_jsbytes("4"),
- cst_222900=caml_string_of_jsbytes("222900"),
- cst_5$129=caml_string_of_jsbytes("5"),
- cst_228000=caml_string_of_jsbytes("228000"),
- cst_5$130=caml_string_of_jsbytes("5"),
- cst_19800=caml_string_of_jsbytes("19800"),
- cst_228000$0=caml_string_of_jsbytes("228000"),
- cst_0$365=caml_string_of_jsbytes("0"),
- cst_139300=caml_string_of_jsbytes("139300"),
- cst_170600=caml_string_of_jsbytes("170600"),
- cst_1$257=caml_string_of_jsbytes("1"),
- cst_184700=caml_string_of_jsbytes("184700"),
- cst_2$105=caml_string_of_jsbytes("2"),
- cst_191200=caml_string_of_jsbytes("191200"),
- cst_3$84=caml_string_of_jsbytes("3"),
- cst_197700$0=caml_string_of_jsbytes("197700"),
- cst_4$80=caml_string_of_jsbytes("4"),
- cst_204200=caml_string_of_jsbytes("204200"),
- cst_5$131=caml_string_of_jsbytes("5"),
- cst_218700=caml_string_of_jsbytes("218700"),
- cst_5$132=caml_string_of_jsbytes("5"),
- cst_19100$1=caml_string_of_jsbytes("19100"),
- cst_218700$0=caml_string_of_jsbytes("218700"),
- cst_0$366=caml_string_of_jsbytes("0"),
- cst_130600=caml_string_of_jsbytes("130600"),
- cst_158400=caml_string_of_jsbytes("158400"),
- cst_1$258=caml_string_of_jsbytes("1"),
- cst_172600=caml_string_of_jsbytes("172600"),
- cst_2$106=caml_string_of_jsbytes("2"),
- cst_179800$0=caml_string_of_jsbytes("179800"),
- cst_3$85=caml_string_of_jsbytes("3"),
- cst_187000=caml_string_of_jsbytes("187000"),
- cst_4$81=caml_string_of_jsbytes("4"),
- cst_194200$0=caml_string_of_jsbytes("194200"),
- cst_5$133=caml_string_of_jsbytes("5"),
- cst_208600$0=caml_string_of_jsbytes("208600"),
- cst_5$134=caml_string_of_jsbytes("5"),
- cst_18200=caml_string_of_jsbytes("18200"),
- cst_208600$1=caml_string_of_jsbytes("208600"),
- cst_0$361=caml_string_of_jsbytes("0"),
- cst_160400=caml_string_of_jsbytes("160400"),
- cst_193400=caml_string_of_jsbytes("193400"),
- cst_1$253=caml_string_of_jsbytes("1"),
- cst_207800=caml_string_of_jsbytes("207800"),
- cst_2$101=caml_string_of_jsbytes("2"),
- cst_213700=caml_string_of_jsbytes("213700"),
- cst_3$80=caml_string_of_jsbytes("3"),
- cst_219600=caml_string_of_jsbytes("219600"),
- cst_4$76=caml_string_of_jsbytes("4"),
- cst_225500$0=caml_string_of_jsbytes("225500"),
- cst_5$123=caml_string_of_jsbytes("5"),
- cst_230500$1=caml_string_of_jsbytes("230500"),
- cst_5$124=caml_string_of_jsbytes("5"),
- cst_20000=caml_string_of_jsbytes("20000"),
- cst_230500$2=caml_string_of_jsbytes("230500"),
- cst_0$362=caml_string_of_jsbytes("0"),
- cst_140800$0=caml_string_of_jsbytes("140800"),
- cst_172500$0=caml_string_of_jsbytes("172500"),
- cst_1$254=caml_string_of_jsbytes("1"),
- cst_186700=caml_string_of_jsbytes("186700"),
- cst_2$102=caml_string_of_jsbytes("2"),
- cst_193300=caml_string_of_jsbytes("193300"),
- cst_3$81=caml_string_of_jsbytes("3"),
- cst_199900$1=caml_string_of_jsbytes("199900"),
- cst_4$77=caml_string_of_jsbytes("4"),
- cst_206500=caml_string_of_jsbytes("206500"),
- cst_5$125=caml_string_of_jsbytes("5"),
- cst_221100=caml_string_of_jsbytes("221100"),
- cst_5$126=caml_string_of_jsbytes("5"),
- cst_19300$0=caml_string_of_jsbytes("19300"),
- cst_221100$0=caml_string_of_jsbytes("221100"),
- cst_0$363=caml_string_of_jsbytes("0"),
- cst_132000$0=caml_string_of_jsbytes("132000"),
- cst_180100$0=caml_string_of_jsbytes("180100"),
- cst_1$255=caml_string_of_jsbytes("1"),
- cst_174500=caml_string_of_jsbytes("174500"),
- cst_2$103=caml_string_of_jsbytes("2"),
- cst_181800$0=caml_string_of_jsbytes("181800"),
- cst_3$82=caml_string_of_jsbytes("3"),
- cst_189100=caml_string_of_jsbytes("189100"),
- cst_4$78=caml_string_of_jsbytes("4"),
- cst_194200=caml_string_of_jsbytes("194200"),
- cst_5$127=caml_string_of_jsbytes("5"),
- cst_210900=caml_string_of_jsbytes("210900"),
- cst_5$128=caml_string_of_jsbytes("5"),
- cst_18400=caml_string_of_jsbytes("18400"),
- cst_210900$0=caml_string_of_jsbytes("210900"),
- cst_0$358=caml_string_of_jsbytes("0"),
- cst_163300=caml_string_of_jsbytes("163300"),
- cst_196900=caml_string_of_jsbytes("196900"),
- cst_1$250=caml_string_of_jsbytes("1"),
- cst_211600=caml_string_of_jsbytes("211600"),
- cst_2$98=caml_string_of_jsbytes("2"),
- cst_217600$0=caml_string_of_jsbytes("217600"),
- cst_3$77=caml_string_of_jsbytes("3"),
- cst_223600=caml_string_of_jsbytes("223600"),
- cst_4$73=caml_string_of_jsbytes("4"),
- cst_229600=caml_string_of_jsbytes("229600"),
- cst_5$117=caml_string_of_jsbytes("5"),
- cst_234600=caml_string_of_jsbytes("234600"),
- cst_5$118=caml_string_of_jsbytes("5"),
- cst_20400=caml_string_of_jsbytes("20400"),
- cst_234600$0=caml_string_of_jsbytes("234600"),
- cst_0$359=caml_string_of_jsbytes("0"),
- cst_143300=caml_string_of_jsbytes("143300"),
- cst_175600=caml_string_of_jsbytes("175600"),
- cst_1$251=caml_string_of_jsbytes("1"),
- cst_190100=caml_string_of_jsbytes("190100"),
- cst_2$99=caml_string_of_jsbytes("2"),
- cst_196600=caml_string_of_jsbytes("196600"),
- cst_3$78=caml_string_of_jsbytes("3"),
- cst_203500=caml_string_of_jsbytes("203500"),
- cst_4$74=caml_string_of_jsbytes("4"),
- cst_210200=caml_string_of_jsbytes("210200"),
- cst_5$119=caml_string_of_jsbytes("5"),
- cst_225100=caml_string_of_jsbytes("225100"),
- cst_5$120=caml_string_of_jsbytes("5"),
- cst_19600=caml_string_of_jsbytes("19600"),
- cst_225100$0=caml_string_of_jsbytes("225100"),
- cst_0$360=caml_string_of_jsbytes("0"),
- cst_134400=caml_string_of_jsbytes("134400"),
- cst_163000$0=caml_string_of_jsbytes("163000"),
- cst_1$252=caml_string_of_jsbytes("1"),
- cst_177700=caml_string_of_jsbytes("177700"),
- cst_2$100=caml_string_of_jsbytes("2"),
- cst_185100=caml_string_of_jsbytes("185100"),
- cst_3$79=caml_string_of_jsbytes("3"),
- cst_192500$0=caml_string_of_jsbytes("192500"),
- cst_4$75=caml_string_of_jsbytes("4"),
- cst_199900$0=caml_string_of_jsbytes("199900"),
- cst_5$121=caml_string_of_jsbytes("5"),
- cst_214700=caml_string_of_jsbytes("214700"),
- cst_5$122=caml_string_of_jsbytes("5"),
- cst_18700=caml_string_of_jsbytes("18700"),
- cst_214700$0=caml_string_of_jsbytes("214700"),
- cst_0$355=caml_string_of_jsbytes("0"),
- cst_167200=caml_string_of_jsbytes("167200"),
- cst_201600=caml_string_of_jsbytes("201600"),
- cst_1$247=caml_string_of_jsbytes("1"),
- cst_216700=caml_string_of_jsbytes("216700"),
- cst_2$95=caml_string_of_jsbytes("2"),
- cst_222800=caml_string_of_jsbytes("222800"),
- cst_3$74=caml_string_of_jsbytes("3"),
- cst_229000=caml_string_of_jsbytes("229000"),
- cst_4$70=caml_string_of_jsbytes("4"),
- cst_235100=caml_string_of_jsbytes("235100"),
- cst_5$111=caml_string_of_jsbytes("5"),
- cst_240200=caml_string_of_jsbytes("240200"),
- cst_5$112=caml_string_of_jsbytes("5"),
- cst_20900$0=caml_string_of_jsbytes("20900"),
- cst_240200$0=caml_string_of_jsbytes("240200"),
- cst_0$356=caml_string_of_jsbytes("0"),
- cst_146700=caml_string_of_jsbytes("146700"),
- cst_179800=caml_string_of_jsbytes("179800"),
- cst_1$248=caml_string_of_jsbytes("1"),
- cst_194700=caml_string_of_jsbytes("194700"),
- cst_2$96=caml_string_of_jsbytes("2"),
- cst_201500=caml_string_of_jsbytes("201500"),
- cst_3$75=caml_string_of_jsbytes("3"),
- cst_208400=caml_string_of_jsbytes("208400"),
- cst_4$71=caml_string_of_jsbytes("4"),
- cst_215200=caml_string_of_jsbytes("215200"),
- cst_5$113=caml_string_of_jsbytes("5"),
- cst_230500=caml_string_of_jsbytes("230500"),
- cst_5$114=caml_string_of_jsbytes("5"),
- cst_20100$0=caml_string_of_jsbytes("20100"),
- cst_230500$0=caml_string_of_jsbytes("230500"),
- cst_0$357=caml_string_of_jsbytes("0"),
- cst_137600=caml_string_of_jsbytes("137600"),
- cst_166900=caml_string_of_jsbytes("166900"),
- cst_1$249=caml_string_of_jsbytes("1"),
- cst_182000=caml_string_of_jsbytes("182000"),
- cst_2$97=caml_string_of_jsbytes("2"),
- cst_189500=caml_string_of_jsbytes("189500"),
- cst_3$76=caml_string_of_jsbytes("3"),
- cst_197100=caml_string_of_jsbytes("197100"),
- cst_4$72=caml_string_of_jsbytes("4"),
- cst_204700$0=caml_string_of_jsbytes("204700"),
- cst_5$115=caml_string_of_jsbytes("5"),
- cst_219900=caml_string_of_jsbytes("219900"),
- cst_5$116=caml_string_of_jsbytes("5"),
- cst_19100$0=caml_string_of_jsbytes("19100"),
- cst_219900$0=caml_string_of_jsbytes("219900"),
- cst_0$352=caml_string_of_jsbytes("0"),
- cst_167400=caml_string_of_jsbytes("167400"),
- cst_201800=caml_string_of_jsbytes("201800"),
- cst_1$244=caml_string_of_jsbytes("1"),
- cst_216900=caml_string_of_jsbytes("216900"),
- cst_2$92=caml_string_of_jsbytes("2"),
- cst_223000=caml_string_of_jsbytes("223000"),
- cst_3$71=caml_string_of_jsbytes("3"),
- cst_229200=caml_string_of_jsbytes("229200"),
- cst_4$67=caml_string_of_jsbytes("4"),
- cst_235300=caml_string_of_jsbytes("235300"),
- cst_5$105=caml_string_of_jsbytes("5"),
- cst_240400=caml_string_of_jsbytes("240400"),
- cst_5$106=caml_string_of_jsbytes("5"),
- cst_20900=caml_string_of_jsbytes("20900"),
- cst_240400$0=caml_string_of_jsbytes("240400"),
- cst_0$353=caml_string_of_jsbytes("0"),
- cst_146800=caml_string_of_jsbytes("146800"),
- cst_180000=caml_string_of_jsbytes("180000"),
- cst_1$245=caml_string_of_jsbytes("1"),
- cst_194900=caml_string_of_jsbytes("194900"),
- cst_2$93=caml_string_of_jsbytes("2"),
- cst_201700$0=caml_string_of_jsbytes("201700"),
- cst_3$72=caml_string_of_jsbytes("3"),
- cst_208600=caml_string_of_jsbytes("208600"),
- cst_4$68=caml_string_of_jsbytes("4"),
- cst_215400=caml_string_of_jsbytes("215400"),
- cst_5$107=caml_string_of_jsbytes("5"),
- cst_230700=caml_string_of_jsbytes("230700"),
- cst_5$108=caml_string_of_jsbytes("5"),
- cst_20100=caml_string_of_jsbytes("20100"),
- cst_230700$0=caml_string_of_jsbytes("230700"),
- cst_0$354=caml_string_of_jsbytes("0"),
- cst_137700=caml_string_of_jsbytes("137700"),
- cst_167100=caml_string_of_jsbytes("167100"),
- cst_1$246=caml_string_of_jsbytes("1"),
- cst_182200=caml_string_of_jsbytes("182200"),
- cst_2$94=caml_string_of_jsbytes("2"),
- cst_189700=caml_string_of_jsbytes("189700"),
- cst_3$73=caml_string_of_jsbytes("3"),
- cst_197300=caml_string_of_jsbytes("197300"),
- cst_4$69=caml_string_of_jsbytes("4"),
- cst_204900=caml_string_of_jsbytes("204900"),
- cst_5$109=caml_string_of_jsbytes("5"),
- cst_220100=caml_string_of_jsbytes("220100"),
- cst_5$110=caml_string_of_jsbytes("5"),
- cst_19100=caml_string_of_jsbytes("19100"),
- cst_220100$0=caml_string_of_jsbytes("220100"),
- cst_0$349=caml_string_of_jsbytes("0"),
- cst_169100=caml_string_of_jsbytes("169100"),
- cst_203800=caml_string_of_jsbytes("203800"),
- cst_1$241=caml_string_of_jsbytes("1"),
- cst_219100=caml_string_of_jsbytes("219100"),
- cst_2$89=caml_string_of_jsbytes("2"),
- cst_225200=caml_string_of_jsbytes("225200"),
- cst_3$68=caml_string_of_jsbytes("3"),
- cst_231500=caml_string_of_jsbytes("231500"),
- cst_4$64=caml_string_of_jsbytes("4"),
- cst_237700=caml_string_of_jsbytes("237700"),
- cst_5$99=caml_string_of_jsbytes("5"),
- cst_242800$2=caml_string_of_jsbytes("242800"),
- cst_5$100=caml_string_of_jsbytes("5"),
- cst_21100=caml_string_of_jsbytes("21100"),
- cst_242800$3=caml_string_of_jsbytes("242800"),
- cst_0$350=caml_string_of_jsbytes("0"),
- cst_148300=caml_string_of_jsbytes("148300"),
- cst_181800=caml_string_of_jsbytes("181800"),
- cst_1$242=caml_string_of_jsbytes("1"),
- cst_196800=caml_string_of_jsbytes("196800"),
- cst_2$90=caml_string_of_jsbytes("2"),
- cst_203700=caml_string_of_jsbytes("203700"),
- cst_3$69=caml_string_of_jsbytes("3"),
- cst_210700=caml_string_of_jsbytes("210700"),
- cst_4$65=caml_string_of_jsbytes("4"),
- cst_217600=caml_string_of_jsbytes("217600"),
- cst_5$101=caml_string_of_jsbytes("5"),
- cst_233000=caml_string_of_jsbytes("233000"),
- cst_5$102=caml_string_of_jsbytes("5"),
- cst_20300=caml_string_of_jsbytes("20300"),
- cst_233000$0=caml_string_of_jsbytes("233000"),
- cst_0$351=caml_string_of_jsbytes("0"),
- cst_139100=caml_string_of_jsbytes("139100"),
- cst_168800=caml_string_of_jsbytes("168800"),
- cst_1$243=caml_string_of_jsbytes("1"),
- cst_184000$1=caml_string_of_jsbytes("184000"),
- cst_2$91=caml_string_of_jsbytes("2"),
- cst_191600=caml_string_of_jsbytes("191600"),
- cst_3$70=caml_string_of_jsbytes("3"),
- cst_199300=caml_string_of_jsbytes("199300"),
- cst_4$66=caml_string_of_jsbytes("4"),
- cst_206900=caml_string_of_jsbytes("206900"),
- cst_5$103=caml_string_of_jsbytes("5"),
- cst_222300=caml_string_of_jsbytes("222300"),
- cst_5$104=caml_string_of_jsbytes("5"),
- cst_19300=caml_string_of_jsbytes("19300"),
- cst_222300$0=caml_string_of_jsbytes("222300"),
- cst_0$346=caml_string_of_jsbytes("0"),
- cst_171100=caml_string_of_jsbytes("171100"),
- cst_206200=caml_string_of_jsbytes("206200"),
- cst_1$238=caml_string_of_jsbytes("1"),
- cst_221700=caml_string_of_jsbytes("221700"),
- cst_2$86=caml_string_of_jsbytes("2"),
- cst_227900=caml_string_of_jsbytes("227900"),
- cst_3$65=caml_string_of_jsbytes("3"),
- cst_234300=caml_string_of_jsbytes("234300"),
- cst_4$61=caml_string_of_jsbytes("4"),
- cst_240600=caml_string_of_jsbytes("240600"),
- cst_5$93=caml_string_of_jsbytes("5"),
- cst_245700=caml_string_of_jsbytes("245700"),
- cst_5$94=caml_string_of_jsbytes("5"),
- cst_21400=caml_string_of_jsbytes("21400"),
- cst_245700$0=caml_string_of_jsbytes("245700"),
- cst_0$347=caml_string_of_jsbytes("0"),
- cst_150100=caml_string_of_jsbytes("150100"),
- cst_184000$0=caml_string_of_jsbytes("184000"),
- cst_1$239=caml_string_of_jsbytes("1"),
- cst_199200=caml_string_of_jsbytes("199200"),
- cst_2$87=caml_string_of_jsbytes("2"),
- cst_206100=caml_string_of_jsbytes("206100"),
- cst_3$66=caml_string_of_jsbytes("3"),
- cst_213200=caml_string_of_jsbytes("213200"),
- cst_4$62=caml_string_of_jsbytes("4"),
- cst_220200=caml_string_of_jsbytes("220200"),
- cst_5$95=caml_string_of_jsbytes("5"),
- cst_235800=caml_string_of_jsbytes("235800"),
- cst_5$96=caml_string_of_jsbytes("5"),
- cst_20500=caml_string_of_jsbytes("20500"),
- cst_235800$0=caml_string_of_jsbytes("235800"),
- cst_0$348=caml_string_of_jsbytes("0"),
- cst_140800=caml_string_of_jsbytes("140800"),
- cst_170800=caml_string_of_jsbytes("170800"),
- cst_1$240=caml_string_of_jsbytes("1"),
- cst_186200=caml_string_of_jsbytes("186200"),
- cst_2$88=caml_string_of_jsbytes("2"),
- cst_193900=caml_string_of_jsbytes("193900"),
- cst_3$67=caml_string_of_jsbytes("3"),
- cst_201700=caml_string_of_jsbytes("201700"),
- cst_4$63=caml_string_of_jsbytes("4"),
- cst_209400=caml_string_of_jsbytes("209400"),
- cst_5$97=caml_string_of_jsbytes("5"),
- cst_225000=caml_string_of_jsbytes("225000"),
- cst_5$98=caml_string_of_jsbytes("5"),
- cst_19500=caml_string_of_jsbytes("19500"),
- cst_225000$0=caml_string_of_jsbytes("225000"),
- cst_0$343=caml_string_of_jsbytes("0"),
- cst_26084=caml_string_of_jsbytes("26084"),
- cst_31435=caml_string_of_jsbytes("31435"),
- cst_1$235=caml_string_of_jsbytes("1"),
- cst_33798=caml_string_of_jsbytes("33798"),
- cst_2$83=caml_string_of_jsbytes("2"),
- cst_34743=caml_string_of_jsbytes("34743"),
- cst_3$62=caml_string_of_jsbytes("3"),
- cst_35719=caml_string_of_jsbytes("35719"),
- cst_4$58=caml_string_of_jsbytes("4"),
- cst_36679=caml_string_of_jsbytes("36679"),
- cst_5$87=caml_string_of_jsbytes("5"),
- cst_37457=caml_string_of_jsbytes("37457"),
- cst_5$88=caml_string_of_jsbytes("5"),
- cst_3262=caml_string_of_jsbytes("3262"),
- cst_37457$0=caml_string_of_jsbytes("37457"),
- cst_0$344=caml_string_of_jsbytes("0"),
- cst_22883=caml_string_of_jsbytes("22883"),
- cst_28051=caml_string_of_jsbytes("28051"),
- cst_1$236=caml_string_of_jsbytes("1"),
- cst_30368=caml_string_of_jsbytes("30368"),
- cst_2$84=caml_string_of_jsbytes("2"),
- cst_31420=caml_string_of_jsbytes("31420"),
- cst_3$63=caml_string_of_jsbytes("3"),
- cst_32502=caml_string_of_jsbytes("32502"),
- cst_4$59=caml_string_of_jsbytes("4"),
- cst_33569=caml_string_of_jsbytes("33569"),
- cst_5$89=caml_string_of_jsbytes("5"),
- cst_35947=caml_string_of_jsbytes("35947"),
- cst_5$90=caml_string_of_jsbytes("5"),
- cst_3125=caml_string_of_jsbytes("3125"),
- cst_35947$0=caml_string_of_jsbytes("35947"),
- cst_0$345=caml_string_of_jsbytes("0"),
- cst_21465=caml_string_of_jsbytes("21465"),
- cst_26038=caml_string_of_jsbytes("26038"),
- cst_1$237=caml_string_of_jsbytes("1"),
- cst_28386=caml_string_of_jsbytes("28386"),
- cst_2$85=caml_string_of_jsbytes("2"),
- cst_29560=caml_string_of_jsbytes("29560"),
- cst_3$64=caml_string_of_jsbytes("3"),
- cst_30749=caml_string_of_jsbytes("30749"),
- cst_4$60=caml_string_of_jsbytes("4"),
- cst_31923=caml_string_of_jsbytes("31923"),
- cst_5$91=caml_string_of_jsbytes("5"),
- cst_34301=caml_string_of_jsbytes("34301"),
- cst_5$92=caml_string_of_jsbytes("5"),
- cst_2973=caml_string_of_jsbytes("2973"),
- cst_34301$0=caml_string_of_jsbytes("34301"),
- cst_0$340=caml_string_of_jsbytes("0"),
- cst_26397=caml_string_of_jsbytes("26397"),
- cst_31812=caml_string_of_jsbytes("31812"),
- cst_1$232=caml_string_of_jsbytes("1"),
- cst_34204=caml_string_of_jsbytes("34204"),
- cst_2$80=caml_string_of_jsbytes("2"),
- cst_35160=caml_string_of_jsbytes("35160"),
- cst_3$59=caml_string_of_jsbytes("3"),
- cst_36148=caml_string_of_jsbytes("36148"),
- cst_4$55=caml_string_of_jsbytes("4"),
- cst_37119=caml_string_of_jsbytes("37119"),
- cst_5$81=caml_string_of_jsbytes("5"),
- cst_37906=caml_string_of_jsbytes("37906"),
- cst_5$82=caml_string_of_jsbytes("5"),
- cst_3301=caml_string_of_jsbytes("3301"),
- cst_37906$0=caml_string_of_jsbytes("37906"),
- cst_0$341=caml_string_of_jsbytes("0"),
- cst_23158=caml_string_of_jsbytes("23158"),
- cst_28388=caml_string_of_jsbytes("28388"),
- cst_1$233=caml_string_of_jsbytes("1"),
- cst_30732=caml_string_of_jsbytes("30732"),
- cst_2$81=caml_string_of_jsbytes("2"),
- cst_31797$1=caml_string_of_jsbytes("31797"),
- cst_3$60=caml_string_of_jsbytes("3"),
- cst_32892=caml_string_of_jsbytes("32892"),
- cst_4$56=caml_string_of_jsbytes("4"),
- cst_33972=caml_string_of_jsbytes("33972"),
- cst_5$83=caml_string_of_jsbytes("5"),
- cst_36378=caml_string_of_jsbytes("36378"),
- cst_5$84=caml_string_of_jsbytes("5"),
- cst_3163=caml_string_of_jsbytes("3163"),
- cst_36378$0=caml_string_of_jsbytes("36378"),
- cst_0$342=caml_string_of_jsbytes("0"),
- cst_21723=caml_string_of_jsbytes("21723"),
- cst_26350=caml_string_of_jsbytes("26350"),
- cst_1$234=caml_string_of_jsbytes("1"),
- cst_28727=caml_string_of_jsbytes("28727"),
- cst_2$82=caml_string_of_jsbytes("2"),
- cst_29915=caml_string_of_jsbytes("29915"),
- cst_3$61=caml_string_of_jsbytes("3"),
- cst_31118=caml_string_of_jsbytes("31118"),
- cst_4$57=caml_string_of_jsbytes("4"),
- cst_32306=caml_string_of_jsbytes("32306"),
- cst_5$85=caml_string_of_jsbytes("5"),
- cst_34713=caml_string_of_jsbytes("34713"),
- cst_5$86=caml_string_of_jsbytes("5"),
- cst_3009=caml_string_of_jsbytes("3009"),
- cst_34713$0=caml_string_of_jsbytes("34713"),
- cst_0$337=caml_string_of_jsbytes("0"),
- cst_26714$0=caml_string_of_jsbytes("26714"),
- cst_32194=caml_string_of_jsbytes("32194"),
- cst_1$229=caml_string_of_jsbytes("1"),
- cst_34614=caml_string_of_jsbytes("34614"),
- cst_2$77=caml_string_of_jsbytes("2"),
- cst_35582=caml_string_of_jsbytes("35582"),
- cst_3$56=caml_string_of_jsbytes("3"),
- cst_36582=caml_string_of_jsbytes("36582"),
- cst_4$52=caml_string_of_jsbytes("4"),
- cst_37564=caml_string_of_jsbytes("37564"),
- cst_5$75=caml_string_of_jsbytes("5"),
- cst_38361=caml_string_of_jsbytes("38361"),
- cst_5$76=caml_string_of_jsbytes("5"),
- cst_3341=caml_string_of_jsbytes("3341"),
- cst_38361$0=caml_string_of_jsbytes("38361"),
- cst_0$338=caml_string_of_jsbytes("0"),
- cst_23436=caml_string_of_jsbytes("23436"),
- cst_28729=caml_string_of_jsbytes("28729"),
- cst_1$230=caml_string_of_jsbytes("1"),
- cst_31101=caml_string_of_jsbytes("31101"),
- cst_2$78=caml_string_of_jsbytes("2"),
- cst_32179=caml_string_of_jsbytes("32179"),
- cst_3$57=caml_string_of_jsbytes("3"),
- cst_33287=caml_string_of_jsbytes("33287"),
- cst_4$53=caml_string_of_jsbytes("4"),
- cst_34380=caml_string_of_jsbytes("34380"),
- cst_5$77=caml_string_of_jsbytes("5"),
- cst_36815=caml_string_of_jsbytes("36815"),
- cst_5$78=caml_string_of_jsbytes("5"),
- cst_3201=caml_string_of_jsbytes("3201"),
- cst_36815$0=caml_string_of_jsbytes("36815"),
- cst_0$339=caml_string_of_jsbytes("0"),
- cst_21984=caml_string_of_jsbytes("21984"),
- cst_26666=caml_string_of_jsbytes("26666"),
- cst_1$231=caml_string_of_jsbytes("1"),
- cst_29072=caml_string_of_jsbytes("29072"),
- cst_2$79=caml_string_of_jsbytes("2"),
- cst_30274=caml_string_of_jsbytes("30274"),
- cst_3$58=caml_string_of_jsbytes("3"),
- cst_31491=caml_string_of_jsbytes("31491"),
- cst_4$54=caml_string_of_jsbytes("4"),
- cst_32694=caml_string_of_jsbytes("32694"),
- cst_5$79=caml_string_of_jsbytes("5"),
- cst_35130=caml_string_of_jsbytes("35130"),
- cst_5$80=caml_string_of_jsbytes("5"),
- cst_3045=caml_string_of_jsbytes("3045"),
- cst_35130$0=caml_string_of_jsbytes("35130"),
- cst_0$334=caml_string_of_jsbytes("0"),
- cst_27195=caml_string_of_jsbytes("27195"),
- cst_32773=caml_string_of_jsbytes("32773"),
- cst_1$226=caml_string_of_jsbytes("1"),
- cst_35237=caml_string_of_jsbytes("35237"),
- cst_2$74=caml_string_of_jsbytes("2"),
- cst_36222=caml_string_of_jsbytes("36222"),
- cst_3$53=caml_string_of_jsbytes("3"),
- cst_37240=caml_string_of_jsbytes("37240"),
- cst_4$49=caml_string_of_jsbytes("4"),
- cst_38240=caml_string_of_jsbytes("38240"),
- cst_5$69=caml_string_of_jsbytes("5"),
- cst_39051=caml_string_of_jsbytes("39051"),
- cst_5$70=caml_string_of_jsbytes("5"),
- cst_3401=caml_string_of_jsbytes("3401"),
- cst_39051$0=caml_string_of_jsbytes("39051"),
- cst_0$335=caml_string_of_jsbytes("0"),
- cst_23858=caml_string_of_jsbytes("23858"),
- cst_29246=caml_string_of_jsbytes("29246"),
- cst_1$227=caml_string_of_jsbytes("1"),
- cst_31661=caml_string_of_jsbytes("31661"),
- cst_2$75=caml_string_of_jsbytes("2"),
- cst_32758=caml_string_of_jsbytes("32758"),
- cst_3$54=caml_string_of_jsbytes("3"),
- cst_33886=caml_string_of_jsbytes("33886"),
- cst_4$50=caml_string_of_jsbytes("4"),
- cst_34999=caml_string_of_jsbytes("34999"),
- cst_5$71=caml_string_of_jsbytes("5"),
- cst_37478=caml_string_of_jsbytes("37478"),
- cst_5$72=caml_string_of_jsbytes("5"),
- cst_3259=caml_string_of_jsbytes("3259"),
- cst_37478$0=caml_string_of_jsbytes("37478"),
- cst_0$336=caml_string_of_jsbytes("0"),
- cst_22380=caml_string_of_jsbytes("22380"),
- cst_27146=caml_string_of_jsbytes("27146"),
- cst_1$228=caml_string_of_jsbytes("1"),
- cst_29595=caml_string_of_jsbytes("29595"),
- cst_2$76=caml_string_of_jsbytes("2"),
- cst_30819=caml_string_of_jsbytes("30819"),
- cst_3$55=caml_string_of_jsbytes("3"),
- cst_32058=caml_string_of_jsbytes("32058"),
- cst_4$51=caml_string_of_jsbytes("4"),
- cst_33282=caml_string_of_jsbytes("33282"),
- cst_5$73=caml_string_of_jsbytes("5"),
- cst_35762=caml_string_of_jsbytes("35762"),
- cst_5$74=caml_string_of_jsbytes("5"),
- cst_3100=caml_string_of_jsbytes("3100"),
- cst_35762$0=caml_string_of_jsbytes("35762"),
- cst_0$331=caml_string_of_jsbytes("0"),
- cst_27956=caml_string_of_jsbytes("27956"),
- cst_33691=caml_string_of_jsbytes("33691"),
- cst_1$223=caml_string_of_jsbytes("1"),
- cst_36224=caml_string_of_jsbytes("36224"),
- cst_2$71=caml_string_of_jsbytes("2"),
- cst_37236=caml_string_of_jsbytes("37236"),
- cst_3$50=caml_string_of_jsbytes("3"),
- cst_38283=caml_string_of_jsbytes("38283"),
- cst_4$46=caml_string_of_jsbytes("4"),
- cst_39311=caml_string_of_jsbytes("39311"),
- cst_5$63=caml_string_of_jsbytes("5"),
- cst_40144=caml_string_of_jsbytes("40144"),
- cst_5$64=caml_string_of_jsbytes("5"),
- cst_3496=caml_string_of_jsbytes("3496"),
- cst_40144$0=caml_string_of_jsbytes("40144"),
- cst_0$332=caml_string_of_jsbytes("0"),
- cst_24526=caml_string_of_jsbytes("24526"),
- cst_30065=caml_string_of_jsbytes("30065"),
- cst_1$224=caml_string_of_jsbytes("1"),
- cst_32548=caml_string_of_jsbytes("32548"),
- cst_2$72=caml_string_of_jsbytes("2"),
- cst_33675=caml_string_of_jsbytes("33675"),
- cst_3$51=caml_string_of_jsbytes("3"),
- cst_34865$0=caml_string_of_jsbytes("34865"),
- cst_4$47=caml_string_of_jsbytes("4"),
- cst_35979=caml_string_of_jsbytes("35979"),
- cst_5$65=caml_string_of_jsbytes("5"),
- cst_38527=caml_string_of_jsbytes("38527"),
- cst_5$66=caml_string_of_jsbytes("5"),
- cst_3350=caml_string_of_jsbytes("3350"),
- cst_38527$0=caml_string_of_jsbytes("38527"),
- cst_0$333=caml_string_of_jsbytes("0"),
- cst_23007=caml_string_of_jsbytes("23007"),
- cst_27906=caml_string_of_jsbytes("27906"),
- cst_1$225=caml_string_of_jsbytes("1"),
- cst_30424=caml_string_of_jsbytes("30424"),
- cst_2$73=caml_string_of_jsbytes("2"),
- cst_31682=caml_string_of_jsbytes("31682"),
- cst_3$52=caml_string_of_jsbytes("3"),
- cst_32956$0=caml_string_of_jsbytes("32956"),
- cst_4$48=caml_string_of_jsbytes("4"),
- cst_34214=caml_string_of_jsbytes("34214"),
- cst_5$67=caml_string_of_jsbytes("5"),
- cst_36733=caml_string_of_jsbytes("36733"),
- cst_5$68=caml_string_of_jsbytes("5"),
- cst_3187=caml_string_of_jsbytes("3187"),
- cst_36733$0=caml_string_of_jsbytes("36733"),
- cst_0$328=caml_string_of_jsbytes("0"),
- cst_28728=caml_string_of_jsbytes("28728"),
- cst_34621=caml_string_of_jsbytes("34621"),
- cst_1$220=caml_string_of_jsbytes("1"),
- cst_37224=caml_string_of_jsbytes("37224"),
- cst_2$68=caml_string_of_jsbytes("2"),
- cst_38264=caml_string_of_jsbytes("38264"),
- cst_3$47=caml_string_of_jsbytes("3"),
- cst_39340$0=caml_string_of_jsbytes("39340"),
- cst_4$43=caml_string_of_jsbytes("4"),
- cst_40396=caml_string_of_jsbytes("40396"),
- cst_5$57=caml_string_of_jsbytes("5"),
- cst_41252=caml_string_of_jsbytes("41252"),
- cst_5$58=caml_string_of_jsbytes("5"),
- cst_3592=caml_string_of_jsbytes("3592"),
- cst_41252$0=caml_string_of_jsbytes("41252"),
- cst_0$329=caml_string_of_jsbytes("0"),
- cst_25203=caml_string_of_jsbytes("25203"),
- cst_30895=caml_string_of_jsbytes("30895"),
- cst_1$221=caml_string_of_jsbytes("1"),
- cst_33446=caml_string_of_jsbytes("33446"),
- cst_2$69=caml_string_of_jsbytes("2"),
- cst_34604=caml_string_of_jsbytes("34604"),
- cst_3$48=caml_string_of_jsbytes("3"),
- cst_35796=caml_string_of_jsbytes("35796"),
- cst_4$44=caml_string_of_jsbytes("4"),
- cst_36972=caml_string_of_jsbytes("36972"),
- cst_5$59=caml_string_of_jsbytes("5"),
- cst_39590=caml_string_of_jsbytes("39590"),
- cst_5$60=caml_string_of_jsbytes("5"),
- cst_3442=caml_string_of_jsbytes("3442"),
- cst_39590$0=caml_string_of_jsbytes("39590"),
- cst_0$330=caml_string_of_jsbytes("0"),
- cst_23642=caml_string_of_jsbytes("23642"),
- cst_28676=caml_string_of_jsbytes("28676"),
- cst_1$222=caml_string_of_jsbytes("1"),
- cst_31264$0=caml_string_of_jsbytes("31264"),
- cst_2$70=caml_string_of_jsbytes("2"),
- cst_32556=caml_string_of_jsbytes("32556"),
- cst_3$49=caml_string_of_jsbytes("3"),
- cst_33866=caml_string_of_jsbytes("33866"),
- cst_4$45=caml_string_of_jsbytes("4"),
- cst_35158=caml_string_of_jsbytes("35158"),
- cst_5$61=caml_string_of_jsbytes("5"),
- cst_37778=caml_string_of_jsbytes("37778"),
- cst_5$62=caml_string_of_jsbytes("5"),
- cst_3275=caml_string_of_jsbytes("3275"),
- cst_37778$0=caml_string_of_jsbytes("37778"),
- cst_0$325=caml_string_of_jsbytes("0"),
- cst_29575=caml_string_of_jsbytes("29575"),
- cst_35642=caml_string_of_jsbytes("35642"),
- cst_1$217=caml_string_of_jsbytes("1"),
- cst_38322=caml_string_of_jsbytes("38322"),
- cst_2$65=caml_string_of_jsbytes("2"),
- cst_39393=caml_string_of_jsbytes("39393"),
- cst_3$44=caml_string_of_jsbytes("3"),
- cst_40501=caml_string_of_jsbytes("40501"),
- cst_4$40=caml_string_of_jsbytes("4"),
- cst_41588=caml_string_of_jsbytes("41588"),
- cst_5$51=caml_string_of_jsbytes("5"),
- cst_42469=caml_string_of_jsbytes("42469"),
- cst_5$52=caml_string_of_jsbytes("5"),
- cst_3698=caml_string_of_jsbytes("3698"),
- cst_42469$0=caml_string_of_jsbytes("42469"),
- cst_0$326=caml_string_of_jsbytes("0"),
- cst_25946=caml_string_of_jsbytes("25946"),
- cst_31806=caml_string_of_jsbytes("31806"),
- cst_1$218=caml_string_of_jsbytes("1"),
- cst_34433=caml_string_of_jsbytes("34433"),
- cst_2$66=caml_string_of_jsbytes("2"),
- cst_35625=caml_string_of_jsbytes("35625"),
- cst_3$45=caml_string_of_jsbytes("3"),
- cst_36852=caml_string_of_jsbytes("36852"),
- cst_4$41=caml_string_of_jsbytes("4"),
- cst_38063=caml_string_of_jsbytes("38063"),
- cst_5$53=caml_string_of_jsbytes("5"),
- cst_40758=caml_string_of_jsbytes("40758"),
- cst_5$54=caml_string_of_jsbytes("5"),
- cst_3544=caml_string_of_jsbytes("3544"),
- cst_40758$0=caml_string_of_jsbytes("40758"),
- cst_0$327=caml_string_of_jsbytes("0"),
- cst_24339=caml_string_of_jsbytes("24339"),
- cst_29522=caml_string_of_jsbytes("29522"),
- cst_1$219=caml_string_of_jsbytes("1"),
- cst_32186=caml_string_of_jsbytes("32186"),
- cst_2$67=caml_string_of_jsbytes("2"),
- cst_33516=caml_string_of_jsbytes("33516"),
- cst_3$46=caml_string_of_jsbytes("3"),
- cst_34865=caml_string_of_jsbytes("34865"),
- cst_4$42=caml_string_of_jsbytes("4"),
- cst_36195=caml_string_of_jsbytes("36195"),
- cst_5$55=caml_string_of_jsbytes("5"),
- cst_38892=caml_string_of_jsbytes("38892"),
- cst_5$56=caml_string_of_jsbytes("5"),
- cst_3372=caml_string_of_jsbytes("3372"),
- cst_38892$0=caml_string_of_jsbytes("38892"),
- cst_0$322=caml_string_of_jsbytes("0"),
- cst_29670=caml_string_of_jsbytes("29670"),
- cst_35757=caml_string_of_jsbytes("35757"),
- cst_1$214=caml_string_of_jsbytes("1"),
- cst_38445=caml_string_of_jsbytes("38445"),
- cst_2$62=caml_string_of_jsbytes("2"),
- cst_39519=caml_string_of_jsbytes("39519"),
- cst_3$41=caml_string_of_jsbytes("3"),
- cst_40601=caml_string_of_jsbytes("40601"),
- cst_4$37=caml_string_of_jsbytes("4"),
- cst_41721=caml_string_of_jsbytes("41721"),
- cst_5$45=caml_string_of_jsbytes("5"),
- cst_42605=caml_string_of_jsbytes("42605"),
- cst_5$46=caml_string_of_jsbytes("5"),
- cst_3710=caml_string_of_jsbytes("3710"),
- cst_42605$0=caml_string_of_jsbytes("42605"),
- cst_0$323=caml_string_of_jsbytes("0"),
- cst_26029=caml_string_of_jsbytes("26029"),
- cst_31908=caml_string_of_jsbytes("31908"),
- cst_1$215=caml_string_of_jsbytes("1"),
- cst_34643=caml_string_of_jsbytes("34643"),
- cst_2$63=caml_string_of_jsbytes("2"),
- cst_35739=caml_string_of_jsbytes("35739"),
- cst_3$42=caml_string_of_jsbytes("3"),
- cst_36970=caml_string_of_jsbytes("36970"),
- cst_4$38=caml_string_of_jsbytes("4"),
- cst_38185=caml_string_of_jsbytes("38185"),
- cst_5$47=caml_string_of_jsbytes("5"),
- cst_40888=caml_string_of_jsbytes("40888"),
- cst_5$48=caml_string_of_jsbytes("5"),
- cst_3555=caml_string_of_jsbytes("3555"),
- cst_40888$0=caml_string_of_jsbytes("40888"),
- cst_0$324=caml_string_of_jsbytes("0"),
- cst_24417=caml_string_of_jsbytes("24417"),
- cst_29616=caml_string_of_jsbytes("29616"),
- cst_1$216=caml_string_of_jsbytes("1"),
- cst_32289=caml_string_of_jsbytes("32289"),
- cst_2$64=caml_string_of_jsbytes("2"),
- cst_33623$0=caml_string_of_jsbytes("33623"),
- cst_3$43=caml_string_of_jsbytes("3"),
- cst_34977=caml_string_of_jsbytes("34977"),
- cst_4$39=caml_string_of_jsbytes("4"),
- cst_36311=caml_string_of_jsbytes("36311"),
- cst_5$49=caml_string_of_jsbytes("5"),
- cst_39016=caml_string_of_jsbytes("39016"),
- cst_5$50=caml_string_of_jsbytes("5"),
- cst_3383=caml_string_of_jsbytes("3383"),
- cst_39016$0=caml_string_of_jsbytes("39016"),
- cst_0$319=caml_string_of_jsbytes("0"),
- cst_29996=caml_string_of_jsbytes("29996"),
- cst_36149=caml_string_of_jsbytes("36149"),
- cst_1$211=caml_string_of_jsbytes("1"),
- cst_38868=caml_string_of_jsbytes("38868"),
- cst_2$59=caml_string_of_jsbytes("2"),
- cst_39954=caml_string_of_jsbytes("39954"),
- cst_3$38=caml_string_of_jsbytes("3"),
- cst_41078=caml_string_of_jsbytes("41078"),
- cst_4$34=caml_string_of_jsbytes("4"),
- cst_42180=caml_string_of_jsbytes("42180"),
- cst_5$39=caml_string_of_jsbytes("5"),
- cst_43074=caml_string_of_jsbytes("43074"),
- cst_5$40=caml_string_of_jsbytes("5"),
- cst_3751=caml_string_of_jsbytes("3751"),
- cst_43074$0=caml_string_of_jsbytes("43074"),
- cst_0$320=caml_string_of_jsbytes("0"),
- cst_26315=caml_string_of_jsbytes("26315"),
- cst_32259=caml_string_of_jsbytes("32259"),
- cst_1$212=caml_string_of_jsbytes("1"),
- cst_34923=caml_string_of_jsbytes("34923"),
- cst_2$60=caml_string_of_jsbytes("2"),
- cst_36132=caml_string_of_jsbytes("36132"),
- cst_3$39=caml_string_of_jsbytes("3"),
- cst_37373=caml_string_of_jsbytes("37373"),
- cst_4$35=caml_string_of_jsbytes("4"),
- cst_38605=caml_string_of_jsbytes("38605"),
- cst_5$41=caml_string_of_jsbytes("5"),
- cst_41338=caml_string_of_jsbytes("41338"),
- cst_5$42=caml_string_of_jsbytes("5"),
- cst_3594=caml_string_of_jsbytes("3594"),
- cst_41338$0=caml_string_of_jsbytes("41338"),
- cst_0$321=caml_string_of_jsbytes("0"),
- cst_24686=caml_string_of_jsbytes("24686"),
- cst_29942=caml_string_of_jsbytes("29942"),
- cst_1$213=caml_string_of_jsbytes("1"),
- cst_32644=caml_string_of_jsbytes("32644"),
- cst_2$61=caml_string_of_jsbytes("2"),
- cst_33993=caml_string_of_jsbytes("33993"),
- cst_3$40=caml_string_of_jsbytes("3"),
- cst_35362=caml_string_of_jsbytes("35362"),
- cst_4$36=caml_string_of_jsbytes("4"),
- cst_36710=caml_string_of_jsbytes("36710"),
- cst_5$43=caml_string_of_jsbytes("5"),
- cst_39445=caml_string_of_jsbytes("39445"),
- cst_5$44=caml_string_of_jsbytes("5"),
- cst_3420=caml_string_of_jsbytes("3420"),
- cst_39445$0=caml_string_of_jsbytes("39445"),
- cst_0$316=caml_string_of_jsbytes("0"),
- cst_30296=caml_string_of_jsbytes("30296"),
- cst_36510=caml_string_of_jsbytes("36510"),
- cst_1$208=caml_string_of_jsbytes("1"),
- cst_39257=caml_string_of_jsbytes("39257"),
- cst_2$56=caml_string_of_jsbytes("2"),
- cst_40354=caml_string_of_jsbytes("40354"),
- cst_3$35=caml_string_of_jsbytes("3"),
- cst_41489=caml_string_of_jsbytes("41489"),
- cst_4$31=caml_string_of_jsbytes("4"),
- cst_42602=caml_string_of_jsbytes("42602"),
- cst_5$33=caml_string_of_jsbytes("5"),
- cst_43505=caml_string_of_jsbytes("43505"),
- cst_5$34=caml_string_of_jsbytes("5"),
- cst_3789=caml_string_of_jsbytes("3789"),
- cst_43505$0=caml_string_of_jsbytes("43505"),
- cst_0$317=caml_string_of_jsbytes("0"),
- cst_26578=caml_string_of_jsbytes("26578"),
- cst_32582=caml_string_of_jsbytes("32582"),
- cst_1$209=caml_string_of_jsbytes("1"),
- cst_35272=caml_string_of_jsbytes("35272"),
- cst_2$57=caml_string_of_jsbytes("2"),
- cst_36493=caml_string_of_jsbytes("36493"),
- cst_3$36=caml_string_of_jsbytes("3"),
- cst_37751=caml_string_of_jsbytes("37751"),
- cst_4$32=caml_string_of_jsbytes("4"),
- cst_38991=caml_string_of_jsbytes("38991"),
- cst_5$35=caml_string_of_jsbytes("5"),
- cst_41751=caml_string_of_jsbytes("41751"),
- cst_5$36=caml_string_of_jsbytes("5"),
- cst_3630=caml_string_of_jsbytes("3630"),
- cst_41751$0=caml_string_of_jsbytes("41751"),
- cst_0$318=caml_string_of_jsbytes("0"),
- cst_24933=caml_string_of_jsbytes("24933"),
- cst_30241=caml_string_of_jsbytes("30241"),
- cst_1$210=caml_string_of_jsbytes("1"),
- cst_32970=caml_string_of_jsbytes("32970"),
- cst_2$58=caml_string_of_jsbytes("2"),
- cst_34333=caml_string_of_jsbytes("34333"),
- cst_3$37=caml_string_of_jsbytes("3"),
- cst_35716=caml_string_of_jsbytes("35716"),
- cst_4$33=caml_string_of_jsbytes("4"),
- cst_37077=caml_string_of_jsbytes("37077"),
- cst_5$37=caml_string_of_jsbytes("5"),
- cst_39839=caml_string_of_jsbytes("39839"),
- cst_5$38=caml_string_of_jsbytes("5"),
- cst_3454=caml_string_of_jsbytes("3454"),
- cst_39839$0=caml_string_of_jsbytes("39839"),
- cst_0$313=caml_string_of_jsbytes("0"),
- cst_30947=caml_string_of_jsbytes("30947"),
- cst_37295=caml_string_of_jsbytes("37295"),
- cst_1$205=caml_string_of_jsbytes("1"),
- cst_40101=caml_string_of_jsbytes("40101"),
- cst_2$53=caml_string_of_jsbytes("2"),
- cst_41222=caml_string_of_jsbytes("41222"),
- cst_3$32=caml_string_of_jsbytes("3"),
- cst_42381=caml_string_of_jsbytes("42381"),
- cst_4$28=caml_string_of_jsbytes("4"),
- cst_43518=caml_string_of_jsbytes("43518"),
- cst_5$27=caml_string_of_jsbytes("5"),
- cst_44440=caml_string_of_jsbytes("44440"),
- cst_5$28=caml_string_of_jsbytes("5"),
- cst_3870=caml_string_of_jsbytes("3870"),
- cst_44440$0=caml_string_of_jsbytes("44440"),
- cst_0$314=caml_string_of_jsbytes("0"),
- cst_27149=caml_string_of_jsbytes("27149"),
- cst_33283=caml_string_of_jsbytes("33283"),
- cst_1$206=caml_string_of_jsbytes("1"),
- cst_36030=caml_string_of_jsbytes("36030"),
- cst_2$54=caml_string_of_jsbytes("2"),
- cst_37278=caml_string_of_jsbytes("37278"),
- cst_3$33=caml_string_of_jsbytes("3"),
- cst_38563=caml_string_of_jsbytes("38563"),
- cst_4$29=caml_string_of_jsbytes("4"),
- cst_39829=caml_string_of_jsbytes("39829"),
- cst_5$29=caml_string_of_jsbytes("5"),
- cst_42649=caml_string_of_jsbytes("42649"),
- cst_5$30=caml_string_of_jsbytes("5"),
- cst_3708=caml_string_of_jsbytes("3708"),
- cst_42659=caml_string_of_jsbytes("42659"),
- cst_0$315=caml_string_of_jsbytes("0"),
- cst_25469=caml_string_of_jsbytes("25469"),
- cst_30891=caml_string_of_jsbytes("30891"),
- cst_1$207=caml_string_of_jsbytes("1"),
- cst_33679=caml_string_of_jsbytes("33679"),
- cst_2$55=caml_string_of_jsbytes("2"),
- cst_35071=caml_string_of_jsbytes("35071"),
- cst_3$34=caml_string_of_jsbytes("3"),
- cst_36484=caml_string_of_jsbytes("36484"),
- cst_4$30=caml_string_of_jsbytes("4"),
- cst_37874=caml_string_of_jsbytes("37874"),
- cst_5$31=caml_string_of_jsbytes("5"),
- cst_40696=caml_string_of_jsbytes("40696"),
- cst_5$32=caml_string_of_jsbytes("5"),
- cst_3528=caml_string_of_jsbytes("3528"),
- cst_40696$0=caml_string_of_jsbytes("40696"),
- cst_0$310=caml_string_of_jsbytes("0"),
- cst_31123=caml_string_of_jsbytes("31123"),
- cst_37508=caml_string_of_jsbytes("37508"),
- cst_1$202=caml_string_of_jsbytes("1"),
- cst_40330=caml_string_of_jsbytes("40330"),
- cst_2$50=caml_string_of_jsbytes("2"),
- cst_41457=caml_string_of_jsbytes("41457"),
- cst_3$29=caml_string_of_jsbytes("3"),
- cst_42623=caml_string_of_jsbytes("42623"),
- cst_4$25=caml_string_of_jsbytes("4"),
- cst_43766=caml_string_of_jsbytes("43766"),
- cst_5$21=caml_string_of_jsbytes("5"),
- cst_44693=caml_string_of_jsbytes("44693"),
- cst_5$22=caml_string_of_jsbytes("5"),
- cst_3892=caml_string_of_jsbytes("3892"),
- cst_44693$0=caml_string_of_jsbytes("44693"),
- cst_0$311=caml_string_of_jsbytes("0"),
- cst_27304=caml_string_of_jsbytes("27304"),
- cst_33473=caml_string_of_jsbytes("33473"),
- cst_1$203=caml_string_of_jsbytes("1"),
- cst_36235=caml_string_of_jsbytes("36235"),
- cst_2$51=caml_string_of_jsbytes("2"),
- cst_37490=caml_string_of_jsbytes("37490"),
- cst_3$30=caml_string_of_jsbytes("3"),
- cst_38783=caml_string_of_jsbytes("38783"),
- cst_4$26=caml_string_of_jsbytes("4"),
- cst_40056=caml_string_of_jsbytes("40056"),
- cst_5$23=caml_string_of_jsbytes("5"),
- cst_42892=caml_string_of_jsbytes("42892"),
- cst_5$24=caml_string_of_jsbytes("5"),
- cst_3729=caml_string_of_jsbytes("3729"),
- cst_42892$0=caml_string_of_jsbytes("42892"),
- cst_0$312=caml_string_of_jsbytes("0"),
- cst_25614=caml_string_of_jsbytes("25614"),
- cst_31067=caml_string_of_jsbytes("31067"),
- cst_1$204=caml_string_of_jsbytes("1"),
- cst_33871=caml_string_of_jsbytes("33871"),
- cst_2$52=caml_string_of_jsbytes("2"),
- cst_35271=caml_string_of_jsbytes("35271"),
- cst_3$31=caml_string_of_jsbytes("3"),
- cst_36692=caml_string_of_jsbytes("36692"),
- cst_4$27=caml_string_of_jsbytes("4"),
- cst_38090=caml_string_of_jsbytes("38090"),
- cst_5$25=caml_string_of_jsbytes("5"),
- cst_40928=caml_string_of_jsbytes("40928"),
- cst_5$26=caml_string_of_jsbytes("5"),
- cst_3548=caml_string_of_jsbytes("3548"),
- cst_40928$0=caml_string_of_jsbytes("40928"),
- cst_0$307=caml_string_of_jsbytes("0"),
- cst_31148=caml_string_of_jsbytes("31148"),
- cst_37538=caml_string_of_jsbytes("37538"),
- cst_1$199=caml_string_of_jsbytes("1"),
- cst_40362=caml_string_of_jsbytes("40362"),
- cst_2$47=caml_string_of_jsbytes("2"),
- cst_41490=caml_string_of_jsbytes("41490"),
- cst_3$26=caml_string_of_jsbytes("3"),
- cst_42657=caml_string_of_jsbytes("42657"),
- cst_4$22=caml_string_of_jsbytes("4"),
- cst_43801=caml_string_of_jsbytes("43801"),
- cst_5$15=caml_string_of_jsbytes("5"),
- cst_44729=caml_string_of_jsbytes("44729"),
- cst_5$16=caml_string_of_jsbytes("5"),
- cst_3895=caml_string_of_jsbytes("3895"),
- cst_44729$0=caml_string_of_jsbytes("44729"),
- cst_0$308=caml_string_of_jsbytes("0"),
- cst_27326=caml_string_of_jsbytes("27326"),
- cst_33500$0=caml_string_of_jsbytes("33500"),
- cst_1$200=caml_string_of_jsbytes("1"),
- cst_36264=caml_string_of_jsbytes("36264"),
- cst_2$48=caml_string_of_jsbytes("2"),
- cst_37520=caml_string_of_jsbytes("37520"),
- cst_3$27=caml_string_of_jsbytes("3"),
- cst_38814=caml_string_of_jsbytes("38814"),
- cst_4$23=caml_string_of_jsbytes("4"),
- cst_40088=caml_string_of_jsbytes("40088"),
- cst_5$17=caml_string_of_jsbytes("5"),
- cst_42926=caml_string_of_jsbytes("42926"),
- cst_5$18=caml_string_of_jsbytes("5"),
- cst_3732=caml_string_of_jsbytes("3732"),
- cst_42926$0=caml_string_of_jsbytes("42926"),
- cst_0$309=caml_string_of_jsbytes("0"),
- cst_25634=caml_string_of_jsbytes("25634"),
- cst_31092=caml_string_of_jsbytes("31092"),
- cst_1$201=caml_string_of_jsbytes("1"),
- cst_33898=caml_string_of_jsbytes("33898"),
- cst_2$49=caml_string_of_jsbytes("2"),
- cst_35299=caml_string_of_jsbytes("35299"),
- cst_3$28=caml_string_of_jsbytes("3"),
- cst_36721=caml_string_of_jsbytes("36721"),
- cst_4$24=caml_string_of_jsbytes("4"),
- cst_38120=caml_string_of_jsbytes("38120"),
- cst_5$19=caml_string_of_jsbytes("5"),
- cst_40961=caml_string_of_jsbytes("40961"),
- cst_5$20=caml_string_of_jsbytes("5"),
- cst_3551=caml_string_of_jsbytes("3551"),
- cst_40961$0=caml_string_of_jsbytes("40961"),
- cst_0$304=caml_string_of_jsbytes("0"),
- cst_31382=caml_string_of_jsbytes("31382"),
- cst_37820=caml_string_of_jsbytes("37820"),
- cst_1$196=caml_string_of_jsbytes("1"),
- cst_40665=caml_string_of_jsbytes("40665"),
- cst_2$44=caml_string_of_jsbytes("2"),
- cst_41801=caml_string_of_jsbytes("41801"),
- cst_3$23=caml_string_of_jsbytes("3"),
- cst_42977=caml_string_of_jsbytes("42977"),
- cst_4$19=caml_string_of_jsbytes("4"),
- cst_44130=caml_string_of_jsbytes("44130"),
- cst_5$9=caml_string_of_jsbytes("5"),
- cst_45064=caml_string_of_jsbytes("45064"),
- cst_5$10=caml_string_of_jsbytes("5"),
- cst_3924=caml_string_of_jsbytes("3924"),
- cst_45064$0=caml_string_of_jsbytes("45064"),
- cst_0$305=caml_string_of_jsbytes("0"),
- cst_27531=caml_string_of_jsbytes("27531"),
- cst_33751=caml_string_of_jsbytes("33751"),
- cst_1$197=caml_string_of_jsbytes("1"),
- cst_36536=caml_string_of_jsbytes("36536"),
- cst_2$45=caml_string_of_jsbytes("2"),
- cst_37801=caml_string_of_jsbytes("37801"),
- cst_3$24=caml_string_of_jsbytes("3"),
- cst_39105=caml_string_of_jsbytes("39105"),
- cst_4$20=caml_string_of_jsbytes("4"),
- cst_40389=caml_string_of_jsbytes("40389"),
- cst_5$11=caml_string_of_jsbytes("5"),
- cst_43248=caml_string_of_jsbytes("43248"),
- cst_5$12=caml_string_of_jsbytes("5"),
- cst_3760=caml_string_of_jsbytes("3760"),
- cst_43248$0=caml_string_of_jsbytes("43248"),
- cst_0$306=caml_string_of_jsbytes("0"),
- cst_25826=caml_string_of_jsbytes("25826"),
- cst_31325=caml_string_of_jsbytes("31325"),
- cst_1$198=caml_string_of_jsbytes("1"),
- cst_34152=caml_string_of_jsbytes("34152"),
- cst_2$46=caml_string_of_jsbytes("2"),
- cst_35564=caml_string_of_jsbytes("35564"),
- cst_3$25=caml_string_of_jsbytes("3"),
- cst_36996=caml_string_of_jsbytes("36996"),
- cst_4$21=caml_string_of_jsbytes("4"),
- cst_38406=caml_string_of_jsbytes("38406"),
- cst_5$13=caml_string_of_jsbytes("5"),
- cst_41268=caml_string_of_jsbytes("41268"),
- cst_5$14=caml_string_of_jsbytes("5"),
- cst_3578=caml_string_of_jsbytes("3578"),
- cst_41268$0=caml_string_of_jsbytes("41268"),
- cst_0$301=caml_string_of_jsbytes("0"),
- cst_31476=caml_string_of_jsbytes("31476"),
- cst_37933=caml_string_of_jsbytes("37933"),
- cst_1$193=caml_string_of_jsbytes("1"),
- cst_40787=caml_string_of_jsbytes("40787"),
- cst_2$41=caml_string_of_jsbytes("2"),
- cst_41927=caml_string_of_jsbytes("41927"),
- cst_3$20=caml_string_of_jsbytes("3"),
- cst_43106=caml_string_of_jsbytes("43106"),
- cst_4$16=caml_string_of_jsbytes("4"),
- cst_44262=caml_string_of_jsbytes("44262"),
- cst_5$3=caml_string_of_jsbytes("5"),
- cst_45200=caml_string_of_jsbytes("45200"),
- cst_5$4=caml_string_of_jsbytes("5"),
- cst_3936=caml_string_of_jsbytes("3936"),
- cst_45200$0=caml_string_of_jsbytes("45200"),
- cst_0$302=caml_string_of_jsbytes("0"),
- cst_27614=caml_string_of_jsbytes("27614"),
- cst_33853=caml_string_of_jsbytes("33853"),
- cst_1$194=caml_string_of_jsbytes("1"),
- cst_36646=caml_string_of_jsbytes("36646"),
- cst_2$42=caml_string_of_jsbytes("2"),
- cst_37915=caml_string_of_jsbytes("37915"),
- cst_3$21=caml_string_of_jsbytes("3"),
- cst_39222=caml_string_of_jsbytes("39222"),
- cst_4$17=caml_string_of_jsbytes("4"),
- cst_40510=caml_string_of_jsbytes("40510"),
- cst_5$5=caml_string_of_jsbytes("5"),
- cst_43378=caml_string_of_jsbytes("43378"),
- cst_5$6=caml_string_of_jsbytes("5"),
- cst_3771=caml_string_of_jsbytes("3771"),
- cst_43378$0=caml_string_of_jsbytes("43378"),
- cst_0$303=caml_string_of_jsbytes("0"),
- cst_25904=caml_string_of_jsbytes("25904"),
- cst_31419=caml_string_of_jsbytes("31419"),
- cst_1$195=caml_string_of_jsbytes("1"),
- cst_34255=caml_string_of_jsbytes("34255"),
- cst_2$43=caml_string_of_jsbytes("2"),
- cst_35670=caml_string_of_jsbytes("35670"),
- cst_3$22=caml_string_of_jsbytes("3"),
- cst_37107=caml_string_of_jsbytes("37107"),
- cst_4$18=caml_string_of_jsbytes("4"),
- cst_38521=caml_string_of_jsbytes("38521"),
- cst_5$7=caml_string_of_jsbytes("5"),
- cst_41392=caml_string_of_jsbytes("41392"),
- cst_5$8=caml_string_of_jsbytes("5"),
- cst_3588=caml_string_of_jsbytes("3588"),
- cst_41392$0=caml_string_of_jsbytes("41392"),
- cst_0$299=caml_string_of_jsbytes("0"),
- cst_0$300=caml_string_of_jsbytes("0"),
- cst_1229$5=caml_string_of_jsbytes("1229"),
- cst_2710$1=caml_string_of_jsbytes("2710"),
- cst_5422$7=caml_string_of_jsbytes("5422"),
- cst_0$298=caml_string_of_jsbytes("0"),
- cst_5422$5=caml_string_of_jsbytes("5422"),
- cst_1229$4=caml_string_of_jsbytes("1229"),
- cst_5422$6=caml_string_of_jsbytes("5422"),
- cst_16_25$0=caml_string_of_jsbytes("16.25"),
- cst_0_0234$1=caml_string_of_jsbytes("0.0234"),
- cst_390000=caml_string_of_jsbytes("390000"),
- cst_1500$1=caml_string_of_jsbytes("1500"),
- cst_1000$4=caml_string_of_jsbytes("1000"),
- cst_6_55957$0=caml_string_of_jsbytes("6.55957"),
- cst_1$192=caml_string_of_jsbytes("1."),
- cst_500$3=caml_string_of_jsbytes("500"),
- cst_0$297=caml_string_of_jsbytes("0"),
- cst_0$295=caml_string_of_jsbytes("0"),
- cst_50$5=caml_string_of_jsbytes("50"),
- cst_50$6=caml_string_of_jsbytes("50"),
- cst_0$296=caml_string_of_jsbytes("0"),
- cst_0$293=caml_string_of_jsbytes("0"),
- cst_0$294=caml_string_of_jsbytes("0"),
- cst_0$292=caml_string_of_jsbytes("0"),
- cst_0$290=caml_string_of_jsbytes("0"),
- cst_0$291=caml_string_of_jsbytes("0"),
- cst_8414=caml_string_of_jsbytes("8414"),
- cst_13100=caml_string_of_jsbytes("13100"),
- cst_20640=caml_string_of_jsbytes("20640"),
- cst_32073=caml_string_of_jsbytes("32073"),
- cst_17012$0=caml_string_of_jsbytes("17012"),
- cst_26440$0=caml_string_of_jsbytes("26440"),
- cst_17012=caml_string_of_jsbytes("17012"),
- cst_26440=caml_string_of_jsbytes("26440"),
- cst_0$289=caml_string_of_jsbytes("0"),
- cst_5422$3=caml_string_of_jsbytes("5422"),
- cst_1229$3=caml_string_of_jsbytes("1229"),
- cst_5422$4=caml_string_of_jsbytes("5422"),
- cst_1500$0=caml_string_of_jsbytes("1500"),
- cst_500$2=caml_string_of_jsbytes("500"),
- cst_1000$3=caml_string_of_jsbytes("1000"),
- cst_0$288=caml_string_of_jsbytes("0"),
- cst_3$19=caml_string_of_jsbytes("3."),
- cst_2$40=caml_string_of_jsbytes("2."),
- cst_169$2=caml_string_of_jsbytes("169."),
- cst_0_55$2=caml_string_of_jsbytes("0.55"),
- cst_169$1=caml_string_of_jsbytes("169."),
- cst_0_55$1=caml_string_of_jsbytes("0.55"),
- cst_20$0=caml_string_of_jsbytes("20"),
- cst_12$15=caml_string_of_jsbytes("12."),
- cst_0$287=caml_string_of_jsbytes("0"),
- cst_0$286=caml_string_of_jsbytes("0"),
- cst_0$278=caml_string_of_jsbytes("0"),
- cst_0$279=caml_string_of_jsbytes("0"),
- cst_2$38=caml_string_of_jsbytes("2"),
- cst_90100=caml_string_of_jsbytes("90100"),
- cst_135000=caml_string_of_jsbytes("135000"),
- cst_0$280=caml_string_of_jsbytes("0"),
- cst_0$281=caml_string_of_jsbytes("0"),
- cst_0$282=caml_string_of_jsbytes("0"),
- cst_0$283=caml_string_of_jsbytes("0"),
- cst_0$284=caml_string_of_jsbytes("0"),
- cst_2$39=caml_string_of_jsbytes("2"),
- cst_90100$0=caml_string_of_jsbytes("90100"),
- cst_135000$0=caml_string_of_jsbytes("135000"),
- cst_0$285=caml_string_of_jsbytes("0"),
- cst_0$277=caml_string_of_jsbytes("0"),
- cst_9500=caml_string_of_jsbytes("9500"),
- cst_258900=caml_string_of_jsbytes("258900"),
- cst_0$275=caml_string_of_jsbytes("0."),
- cst_0$276=caml_string_of_jsbytes("0."),
- cst_1_25$0=caml_string_of_jsbytes("1.25"),
- cst_21=caml_string_of_jsbytes("21"),
- cst_1_25=caml_string_of_jsbytes("1.25"),
- cst_0$274=caml_string_of_jsbytes("0"),
- cst_0$273=caml_string_of_jsbytes("0"),
- cst_0$272=caml_string_of_jsbytes("0"),
- cst_70=caml_string_of_jsbytes("70"),
- cst_8=caml_string_of_jsbytes("8"),
- cst_70$0=caml_string_of_jsbytes("70"),
- cst_0$271=caml_string_of_jsbytes("0."),
- cst_0$270=caml_string_of_jsbytes("0."),
- cst_999840=caml_string_of_jsbytes("999840"),
- cst_1041840=caml_string_of_jsbytes("1041840"),
- cst_1083840=caml_string_of_jsbytes("1083840"),
- cst_1100144=caml_string_of_jsbytes("1100144"),
- cst_1088175=caml_string_of_jsbytes("1088175"),
- cst_30=caml_string_of_jsbytes("30"),
- cst_9=caml_string_of_jsbytes("9"),
- cst_9$0=caml_string_of_jsbytes("9"),
- cst_16$2=caml_string_of_jsbytes("16"),
- cst_16$3=caml_string_of_jsbytes("16"),
- cst_16$4=caml_string_of_jsbytes("16"),
- cst_9$1=caml_string_of_jsbytes("9"),
- cst_16$5=caml_string_of_jsbytes("16"),
- cst_1$190=caml_string_of_jsbytes("1"),
- cst_2$34=caml_string_of_jsbytes("2"),
- cst_2$35=caml_string_of_jsbytes("2"),
- cst_2$36=caml_string_of_jsbytes("2"),
- cst_1$191=caml_string_of_jsbytes("1"),
- cst_2$37=caml_string_of_jsbytes("2"),
- cst_3000000=caml_string_of_jsbytes("3000000"),
- cst_0_1$0=caml_string_of_jsbytes("0.1"),
- cst_0_1=caml_string_of_jsbytes("0.1"),
- cst_0_2=caml_string_of_jsbytes("0.2"),
- cst_0_2$0=caml_string_of_jsbytes("0.2"),
- cst_0$269=caml_string_of_jsbytes("0"),
- cst_0$267=caml_string_of_jsbytes("0"),
- cst_0$268=caml_string_of_jsbytes("0"),
- cst_0$265=caml_string_of_jsbytes("0"),
- cst_50$3=caml_string_of_jsbytes("50"),
- cst_50$4=caml_string_of_jsbytes("50"),
- cst_0$266=caml_string_of_jsbytes("0"),
- cst_0_95$3=caml_string_of_jsbytes("0.95"),
- cst_0_95$4=caml_string_of_jsbytes("0.95"),
- cst_0$263=caml_string_of_jsbytes("0"),
- cst_0$264=caml_string_of_jsbytes("0"),
- cst_100$7=caml_string_of_jsbytes("100."),
- cst_100$8=caml_string_of_jsbytes("100."),
- cst_0_005$2=caml_string_of_jsbytes("0.005"),
- cst_12$14=caml_string_of_jsbytes("12."),
- cst_0$262=caml_string_of_jsbytes("0."),
- cst_0_75$6=caml_string_of_jsbytes("0.75"),
- cst_0_75$5=caml_string_of_jsbytes("0.75"),
- cst_0$261=caml_string_of_jsbytes("0"),
- cst_0_95$2=caml_string_of_jsbytes("0.95"),
- cst_0$258=caml_string_of_jsbytes("0"),
- cst_208500$0=caml_string_of_jsbytes("208500"),
- cst_251500$0=caml_string_of_jsbytes("251500"),
- cst_1$187=caml_string_of_jsbytes("1"),
- cst_43000$0=caml_string_of_jsbytes("43000"),
- cst_294500$0=caml_string_of_jsbytes("294500"),
- cst_0$259=caml_string_of_jsbytes("0"),
- cst_186000$0=caml_string_of_jsbytes("186000"),
- cst_223900$1=caml_string_of_jsbytes("223900"),
- cst_1$188=caml_string_of_jsbytes("1"),
- cst_37900$1=caml_string_of_jsbytes("37900"),
- cst_261800$1=caml_string_of_jsbytes("261800"),
- cst_0$260=caml_string_of_jsbytes("0"),
- cst_173600$0=caml_string_of_jsbytes("173600"),
- cst_208200$1=caml_string_of_jsbytes("208200"),
- cst_1$189=caml_string_of_jsbytes("1"),
- cst_35600=caml_string_of_jsbytes("35600"),
- cst_242800$1=caml_string_of_jsbytes("242800"),
- cst_0$255=caml_string_of_jsbytes("0"),
- cst_167800$0=caml_string_of_jsbytes("167800"),
- cst_202500$1=caml_string_of_jsbytes("202500"),
- cst_1$184=caml_string_of_jsbytes("1"),
- cst_37400=caml_string_of_jsbytes("37400"),
- cst_237200$0=caml_string_of_jsbytes("237200"),
- cst_0$256=caml_string_of_jsbytes("0"),
- cst_146900=caml_string_of_jsbytes("146900"),
- cst_180100=caml_string_of_jsbytes("180100"),
- cst_1$185=caml_string_of_jsbytes("1"),
- cst_30500$1=caml_string_of_jsbytes("30500"),
- cst_210600=caml_string_of_jsbytes("210600"),
- cst_0$257=caml_string_of_jsbytes("0"),
- cst_139700$0=caml_string_of_jsbytes("139700"),
- cst_167600=caml_string_of_jsbytes("167600"),
- cst_1$186=caml_string_of_jsbytes("1"),
- cst_27900=caml_string_of_jsbytes("27900"),
- cst_195500=caml_string_of_jsbytes("195500"),
- cst_0$252=caml_string_of_jsbytes("0"),
- cst_184000=caml_string_of_jsbytes("184000"),
- cst_220000=caml_string_of_jsbytes("220000"),
- cst_1$181=caml_string_of_jsbytes("1"),
- cst_38000=caml_string_of_jsbytes("38000"),
- cst_260000=caml_string_of_jsbytes("260000"),
- cst_0$253=caml_string_of_jsbytes("0"),
- cst_164200=caml_string_of_jsbytes("164200"),
- cst_197700=caml_string_of_jsbytes("197700"),
- cst_1$182=caml_string_of_jsbytes("1"),
- cst_33500=caml_string_of_jsbytes("33500"),
- cst_231200=caml_string_of_jsbytes("231200"),
- cst_0$254=caml_string_of_jsbytes("0"),
- cst_153200=caml_string_of_jsbytes("153200"),
- cst_183700=caml_string_of_jsbytes("183700"),
- cst_1$183=caml_string_of_jsbytes("1"),
- cst_30500$0=caml_string_of_jsbytes("30500"),
- cst_214200=caml_string_of_jsbytes("214200"),
- cst_0$249=caml_string_of_jsbytes("0"),
- cst_148100=caml_string_of_jsbytes("148100"),
- cst_178700=caml_string_of_jsbytes("178700"),
- cst_1$178=caml_string_of_jsbytes("1"),
- cst_30600=caml_string_of_jsbytes("30600"),
- cst_209300=caml_string_of_jsbytes("209300"),
- cst_0$250=caml_string_of_jsbytes("0"),
- cst_132000=caml_string_of_jsbytes("132000"),
- cst_158900=caml_string_of_jsbytes("158900"),
- cst_1$179=caml_string_of_jsbytes("1"),
- cst_26900=caml_string_of_jsbytes("26900"),
- cst_185800$0=caml_string_of_jsbytes("185800"),
- cst_0$251=caml_string_of_jsbytes("0"),
- cst_123300=caml_string_of_jsbytes("123300"),
- cst_147900=caml_string_of_jsbytes("147900"),
- cst_1$180=caml_string_of_jsbytes("1"),
- cst_24600=caml_string_of_jsbytes("24600"),
- cst_172500=caml_string_of_jsbytes("172500"),
- cst_0$246=caml_string_of_jsbytes("0"),
- cst_208500=caml_string_of_jsbytes("208500"),
- cst_251500=caml_string_of_jsbytes("251500"),
- cst_1$175=caml_string_of_jsbytes("1"),
- cst_43000=caml_string_of_jsbytes("43000"),
- cst_294500=caml_string_of_jsbytes("294500"),
- cst_0$247=caml_string_of_jsbytes("0"),
- cst_186000=caml_string_of_jsbytes("186000"),
- cst_223900$0=caml_string_of_jsbytes("223900"),
- cst_1$176=caml_string_of_jsbytes("1"),
- cst_37900$0=caml_string_of_jsbytes("37900"),
- cst_261800$0=caml_string_of_jsbytes("261800"),
- cst_0$248=caml_string_of_jsbytes("0"),
- cst_173600=caml_string_of_jsbytes("173600"),
- cst_208200$0=caml_string_of_jsbytes("208200"),
- cst_1$177=caml_string_of_jsbytes("1"),
- cst_34600$0=caml_string_of_jsbytes("34600"),
- cst_242800$0=caml_string_of_jsbytes("242800"),
- cst_0$243=caml_string_of_jsbytes("0"),
- cst_167800=caml_string_of_jsbytes("167800"),
- cst_202500$0=caml_string_of_jsbytes("202500"),
- cst_1$172=caml_string_of_jsbytes("1"),
- cst_34700=caml_string_of_jsbytes("34700"),
- cst_237200=caml_string_of_jsbytes("237200"),
- cst_0$244=caml_string_of_jsbytes("0"),
- cst_149600=caml_string_of_jsbytes("149600"),
- cst_223900=caml_string_of_jsbytes("223900"),
- cst_1$173=caml_string_of_jsbytes("1"),
- cst_37900=caml_string_of_jsbytes("37900"),
- cst_261800=caml_string_of_jsbytes("261800"),
- cst_0$245=caml_string_of_jsbytes("0"),
- cst_139700=caml_string_of_jsbytes("139700"),
- cst_208200=caml_string_of_jsbytes("208200"),
- cst_1$174=caml_string_of_jsbytes("1"),
- cst_34600=caml_string_of_jsbytes("34600"),
- cst_242800=caml_string_of_jsbytes("242800"),
- cst_0$242=caml_string_of_jsbytes("0"),
- cst_86900=caml_string_of_jsbytes("86900"),
- cst_97100=caml_string_of_jsbytes("97100"),
- cst_1$171=caml_string_of_jsbytes("1"),
- cst_10200=caml_string_of_jsbytes("10200"),
- cst_107300=caml_string_of_jsbytes("107300"),
- cst_0$239=caml_string_of_jsbytes("0"),
- cst_198100=caml_string_of_jsbytes("198100"),
- cst_239000=caml_string_of_jsbytes("239000"),
- cst_1$168=caml_string_of_jsbytes("1"),
- cst_40900=caml_string_of_jsbytes("40900"),
- cst_279900=caml_string_of_jsbytes("279900"),
- cst_0$240=caml_string_of_jsbytes("0"),
- cst_176800=caml_string_of_jsbytes("176800"),
- cst_212800=caml_string_of_jsbytes("212800"),
- cst_1$169=caml_string_of_jsbytes("1"),
- cst_36000=caml_string_of_jsbytes("36000"),
- cst_248800=caml_string_of_jsbytes("248800"),
- cst_0$241=caml_string_of_jsbytes("0"),
- cst_165000=caml_string_of_jsbytes("165000"),
- cst_197900=caml_string_of_jsbytes("197900"),
- cst_1$170=caml_string_of_jsbytes("1"),
- cst_32900=caml_string_of_jsbytes("32900"),
- cst_230800=caml_string_of_jsbytes("230800"),
- cst_0$236=caml_string_of_jsbytes("0"),
- cst_159500=caml_string_of_jsbytes("159500"),
- cst_192500=caml_string_of_jsbytes("192500"),
- cst_1$165=caml_string_of_jsbytes("1"),
- cst_33000=caml_string_of_jsbytes("33000"),
- cst_225500=caml_string_of_jsbytes("225500"),
- cst_0$237=caml_string_of_jsbytes("0"),
- cst_142200=caml_string_of_jsbytes("142200"),
- cst_171200=caml_string_of_jsbytes("171200"),
- cst_1$166=caml_string_of_jsbytes("1"),
- cst_29000=caml_string_of_jsbytes("29000"),
- cst_200200=caml_string_of_jsbytes("200200"),
- cst_0$238=caml_string_of_jsbytes("0"),
- cst_132800=caml_string_of_jsbytes("132800"),
- cst_159300=caml_string_of_jsbytes("159300"),
- cst_1$167=caml_string_of_jsbytes("1"),
- cst_26500=caml_string_of_jsbytes("26500"),
- cst_185800=caml_string_of_jsbytes("185800"),
- cst_0$233=caml_string_of_jsbytes("0"),
- cst_200100=caml_string_of_jsbytes("200100"),
- cst_141400=caml_string_of_jsbytes("141400"),
- cst_1$162=caml_string_of_jsbytes("1"),
- cst_41300=caml_string_of_jsbytes("41300"),
- cst_282700=caml_string_of_jsbytes("282700"),
- cst_0$234=caml_string_of_jsbytes("0"),
- cst_178600=caml_string_of_jsbytes("178600"),
- cst_215000=caml_string_of_jsbytes("215000"),
- cst_1$163=caml_string_of_jsbytes("1"),
- cst_36400=caml_string_of_jsbytes("36400"),
- cst_251400=caml_string_of_jsbytes("251400"),
- cst_0$235=caml_string_of_jsbytes("0"),
- cst_166700=caml_string_of_jsbytes("166700"),
- cst_199900=caml_string_of_jsbytes("199900"),
- cst_1$164=caml_string_of_jsbytes("1"),
- cst_33200=caml_string_of_jsbytes("33200"),
- cst_233100=caml_string_of_jsbytes("233100"),
- cst_0$230=caml_string_of_jsbytes("0"),
- cst_161100=caml_string_of_jsbytes("161100"),
- cst_194400=caml_string_of_jsbytes("194400"),
- cst_1$159=caml_string_of_jsbytes("1"),
- cst_33300=caml_string_of_jsbytes("33300"),
- cst_227700=caml_string_of_jsbytes("227700"),
- cst_0$231=caml_string_of_jsbytes("0"),
- cst_143600=caml_string_of_jsbytes("143600"),
- cst_172900=caml_string_of_jsbytes("172900"),
- cst_1$160=caml_string_of_jsbytes("1"),
- cst_29300=caml_string_of_jsbytes("29300"),
- cst_202200=caml_string_of_jsbytes("202200"),
- cst_0$232=caml_string_of_jsbytes("0"),
- cst_134100=caml_string_of_jsbytes("134100"),
- cst_160900=caml_string_of_jsbytes("160900"),
- cst_1$161=caml_string_of_jsbytes("1"),
- cst_26800=caml_string_of_jsbytes("26800"),
- cst_187700=caml_string_of_jsbytes("187700"),
- cst_0$227=caml_string_of_jsbytes("0"),
- cst_202500=caml_string_of_jsbytes("202500"),
- cst_244300=caml_string_of_jsbytes("244300"),
- cst_1$156=caml_string_of_jsbytes("1"),
- cst_41800=caml_string_of_jsbytes("41800"),
- cst_286100=caml_string_of_jsbytes("286100"),
- cst_0$228=caml_string_of_jsbytes("0"),
- cst_180700=caml_string_of_jsbytes("180700"),
- cst_217500=caml_string_of_jsbytes("217500"),
- cst_1$157=caml_string_of_jsbytes("1"),
- cst_36800=caml_string_of_jsbytes("36800"),
- cst_254300=caml_string_of_jsbytes("254300"),
- cst_0$229=caml_string_of_jsbytes("0"),
- cst_168700=caml_string_of_jsbytes("168700"),
- cst_202300=caml_string_of_jsbytes("202300"),
- cst_1$158=caml_string_of_jsbytes("1"),
- cst_33600=caml_string_of_jsbytes("33600"),
- cst_235900=caml_string_of_jsbytes("235900"),
- cst_0$224=caml_string_of_jsbytes("0"),
- cst_30871=caml_string_of_jsbytes("30871"),
- cst_37243=caml_string_of_jsbytes("37243"),
- cst_1$153=caml_string_of_jsbytes("1"),
- cst_6372=caml_string_of_jsbytes("6372"),
- cst_43615=caml_string_of_jsbytes("43615"),
- cst_0$225=caml_string_of_jsbytes("0"),
- cst_27548=caml_string_of_jsbytes("27548"),
- cst_33148=caml_string_of_jsbytes("33148"),
- cst_1$154=caml_string_of_jsbytes("1"),
- cst_5610=caml_string_of_jsbytes("5610"),
- cst_38768=caml_string_of_jsbytes("38768"),
- cst_0$226=caml_string_of_jsbytes("0"),
- cst_25718=caml_string_of_jsbytes("25718"),
- cst_30840=caml_string_of_jsbytes("30840"),
- cst_1$155=caml_string_of_jsbytes("1"),
- cst_5122=caml_string_of_jsbytes("5122"),
- cst_35962=caml_string_of_jsbytes("35962"),
- cst_0$221=caml_string_of_jsbytes("0"),
- cst_163000=caml_string_of_jsbytes("163000"),
- cst_196700=caml_string_of_jsbytes("196700"),
- cst_1$150=caml_string_of_jsbytes("1"),
- cst_33700=caml_string_of_jsbytes("33700"),
- cst_230400=caml_string_of_jsbytes("230400"),
- cst_0$222=caml_string_of_jsbytes("0"),
- cst_145300=caml_string_of_jsbytes("145300"),
- cst_175000=caml_string_of_jsbytes("175000"),
- cst_1$151=caml_string_of_jsbytes("1"),
- cst_29700=caml_string_of_jsbytes("29700"),
- cst_204700=caml_string_of_jsbytes("204700"),
- cst_0$223=caml_string_of_jsbytes("0"),
- cst_135700=caml_string_of_jsbytes("135700"),
- cst_162800=caml_string_of_jsbytes("162800"),
- cst_1$152=caml_string_of_jsbytes("1"),
- cst_27100=caml_string_of_jsbytes("27100"),
- cst_189900=caml_string_of_jsbytes("189900"),
- cst_0$218=caml_string_of_jsbytes("0"),
- cst_24849=caml_string_of_jsbytes("24849"),
- cst_29987=caml_string_of_jsbytes("29987"),
- cst_1$147=caml_string_of_jsbytes("1"),
- cst_5138=caml_string_of_jsbytes("5138"),
- cst_35125=caml_string_of_jsbytes("35125"),
- cst_0$219=caml_string_of_jsbytes("0"),
- cst_22151=caml_string_of_jsbytes("22151"),
- cst_26679=caml_string_of_jsbytes("26679"),
- cst_1$148=caml_string_of_jsbytes("1"),
- cst_4528=caml_string_of_jsbytes("4528"),
- cst_31207=caml_string_of_jsbytes("31207"),
- cst_0$220=caml_string_of_jsbytes("0"),
- cst_20687=caml_string_of_jsbytes("20687"),
- cst_24818=caml_string_of_jsbytes("24818"),
- cst_1$149=caml_string_of_jsbytes("1"),
- cst_4131=caml_string_of_jsbytes("4131"),
- cst_28949=caml_string_of_jsbytes("28949"),
- cst_0$215=caml_string_of_jsbytes("0"),
- cst_31241=caml_string_of_jsbytes("31241"),
- cst_37689=caml_string_of_jsbytes("37689"),
- cst_1$144=caml_string_of_jsbytes("1"),
- cst_6448=caml_string_of_jsbytes("6448"),
- cst_44137=caml_string_of_jsbytes("44137"),
- cst_0$216=caml_string_of_jsbytes("0"),
- cst_27879=caml_string_of_jsbytes("27879"),
- cst_33556=caml_string_of_jsbytes("33556"),
- cst_1$145=caml_string_of_jsbytes("1"),
- cst_5677=caml_string_of_jsbytes("5677"),
- cst_39233=caml_string_of_jsbytes("39233"),
- cst_0$217=caml_string_of_jsbytes("0"),
- cst_26027=caml_string_of_jsbytes("26027"),
- cst_31210=caml_string_of_jsbytes("31210"),
- cst_1$146=caml_string_of_jsbytes("1"),
- cst_5183=caml_string_of_jsbytes("5183"),
- cst_36393=caml_string_of_jsbytes("36393"),
- cst_0$212=caml_string_of_jsbytes("0"),
- cst_25147=caml_string_of_jsbytes("25147"),
- cst_30347=caml_string_of_jsbytes("30347"),
- cst_1$141=caml_string_of_jsbytes("1"),
- cst_5200=caml_string_of_jsbytes("5200"),
- cst_35547=caml_string_of_jsbytes("35547"),
- cst_0$213=caml_string_of_jsbytes("0"),
- cst_22417=caml_string_of_jsbytes("22417"),
- cst_26999=caml_string_of_jsbytes("26999"),
- cst_1$142=caml_string_of_jsbytes("1"),
- cst_4582=caml_string_of_jsbytes("4582"),
- cst_31581=caml_string_of_jsbytes("31581"),
- cst_0$214=caml_string_of_jsbytes("0"),
- cst_20935=caml_string_of_jsbytes("20935"),
- cst_25116$0=caml_string_of_jsbytes("25116"),
- cst_1$143=caml_string_of_jsbytes("1"),
- cst_4181=caml_string_of_jsbytes("4181"),
- cst_29297=caml_string_of_jsbytes("29297"),
- cst_0$209=caml_string_of_jsbytes("0"),
- cst_31616=caml_string_of_jsbytes("31616"),
- cst_38141=caml_string_of_jsbytes("38141"),
- cst_1$138=caml_string_of_jsbytes("1"),
- cst_6525=caml_string_of_jsbytes("6525"),
- cst_44666=caml_string_of_jsbytes("44666"),
- cst_0$210=caml_string_of_jsbytes("0"),
- cst_28214=caml_string_of_jsbytes("28214"),
- cst_33959=caml_string_of_jsbytes("33959"),
- cst_1$139=caml_string_of_jsbytes("1"),
- cst_5745=caml_string_of_jsbytes("5745"),
- cst_39704=caml_string_of_jsbytes("39704"),
- cst_0$211=caml_string_of_jsbytes("0"),
- cst_26339=caml_string_of_jsbytes("26339"),
- cst_31584=caml_string_of_jsbytes("31584"),
- cst_1$140=caml_string_of_jsbytes("1"),
- cst_5245=caml_string_of_jsbytes("5245"),
- cst_36829=caml_string_of_jsbytes("36829"),
- cst_0$206=caml_string_of_jsbytes("0"),
- cst_25449=caml_string_of_jsbytes("25449"),
- cst_30711=caml_string_of_jsbytes("30711"),
- cst_1$135=caml_string_of_jsbytes("1"),
- cst_5262=caml_string_of_jsbytes("5262"),
- cst_35973=caml_string_of_jsbytes("35973"),
- cst_0$207=caml_string_of_jsbytes("0"),
- cst_22686=caml_string_of_jsbytes("22686"),
- cst_27323=caml_string_of_jsbytes("27323"),
- cst_1$136=caml_string_of_jsbytes("1"),
- cst_4637=caml_string_of_jsbytes("4637"),
- cst_31960=caml_string_of_jsbytes("31960"),
- cst_0$208=caml_string_of_jsbytes("0"),
- cst_21186=caml_string_of_jsbytes("21186"),
- cst_25417=caml_string_of_jsbytes("25417"),
- cst_1$137=caml_string_of_jsbytes("1"),
- cst_4231=caml_string_of_jsbytes("4231"),
- cst_26948=caml_string_of_jsbytes("26948"),
- cst_0$203=caml_string_of_jsbytes("0"),
- cst_32185=caml_string_of_jsbytes("32185"),
- cst_38827=caml_string_of_jsbytes("38827"),
- cst_1$132=caml_string_of_jsbytes("1"),
- cst_6642=caml_string_of_jsbytes("6642"),
- cst_45469=caml_string_of_jsbytes("45469"),
- cst_0$204=caml_string_of_jsbytes("0"),
- cst_28722=caml_string_of_jsbytes("28722"),
- cst_34570$0=caml_string_of_jsbytes("34570"),
- cst_1$133=caml_string_of_jsbytes("1"),
- cst_5848=caml_string_of_jsbytes("5848"),
- cst_40418=caml_string_of_jsbytes("40418"),
- cst_0$205=caml_string_of_jsbytes("0"),
- cst_26813=caml_string_of_jsbytes("26813"),
- cst_32152=caml_string_of_jsbytes("32152"),
- cst_1$134=caml_string_of_jsbytes("1"),
- cst_5339=caml_string_of_jsbytes("5339"),
- cst_37491=caml_string_of_jsbytes("37491"),
- cst_0$200=caml_string_of_jsbytes("0"),
- cst_25907=caml_string_of_jsbytes("25907"),
- cst_31264=caml_string_of_jsbytes("31264"),
- cst_1$129=caml_string_of_jsbytes("1"),
- cst_5357=caml_string_of_jsbytes("5357"),
- cst_36621=caml_string_of_jsbytes("36621"),
- cst_0$201=caml_string_of_jsbytes("0"),
- cst_23094=caml_string_of_jsbytes("23094"),
- cst_27814=caml_string_of_jsbytes("27814"),
- cst_1$130=caml_string_of_jsbytes("1"),
- cst_4720=caml_string_of_jsbytes("4720"),
- cst_32534=caml_string_of_jsbytes("32534"),
- cst_0$202=caml_string_of_jsbytes("0"),
- cst_21567=caml_string_of_jsbytes("21567"),
- cst_25874=caml_string_of_jsbytes("25874"),
- cst_1$131=caml_string_of_jsbytes("1"),
- cst_4307=caml_string_of_jsbytes("4307"),
- cst_30881=caml_string_of_jsbytes("30881"),
- cst_0$197=caml_string_of_jsbytes("0"),
- cst_33026$0=caml_string_of_jsbytes("33026"),
- cst_39914=caml_string_of_jsbytes("39914"),
- cst_1$126=caml_string_of_jsbytes("1"),
- cst_6828=caml_string_of_jsbytes("6828"),
- cst_46742=caml_string_of_jsbytes("46742"),
- cst_0$198=caml_string_of_jsbytes("0"),
- cst_29526=caml_string_of_jsbytes("29526"),
- cst_35538=caml_string_of_jsbytes("35538"),
- cst_1$127=caml_string_of_jsbytes("1"),
- cst_6012=caml_string_of_jsbytes("6012"),
- cst_41550=caml_string_of_jsbytes("41550"),
- cst_0$199=caml_string_of_jsbytes("0"),
- cst_27564=caml_string_of_jsbytes("27564"),
- cst_33052=caml_string_of_jsbytes("33052"),
- cst_1$128=caml_string_of_jsbytes("1"),
- cst_5488=caml_string_of_jsbytes("5488"),
- cst_38541=caml_string_of_jsbytes("38541"),
- cst_0$194=caml_string_of_jsbytes("0"),
- cst_26632=caml_string_of_jsbytes("26632"),
- cst_32139=caml_string_of_jsbytes("32139"),
- cst_1$123=caml_string_of_jsbytes("1"),
- cst_5507=caml_string_of_jsbytes("5507"),
- cst_37646=caml_string_of_jsbytes("37646"),
- cst_0$195=caml_string_of_jsbytes("0"),
- cst_23741=caml_string_of_jsbytes("23741"),
- cst_28593=caml_string_of_jsbytes("28593"),
- cst_1$124=caml_string_of_jsbytes("1"),
- cst_4852=caml_string_of_jsbytes("4852"),
- cst_33445=caml_string_of_jsbytes("33445"),
- cst_0$196=caml_string_of_jsbytes("0"),
- cst_22171=caml_string_of_jsbytes("22171"),
- cst_36598=caml_string_of_jsbytes("36598"),
- cst_1$125=caml_string_of_jsbytes("1"),
- cst_4428=caml_string_of_jsbytes("4428"),
- cst_31026=caml_string_of_jsbytes("31026"),
- cst_0$191=caml_string_of_jsbytes("0"),
- cst_33999=caml_string_of_jsbytes("33999"),
- cst_41016=caml_string_of_jsbytes("41016"),
- cst_1$120=caml_string_of_jsbytes("1"),
- cst_7016=caml_string_of_jsbytes("7016"),
- cst_48032=caml_string_of_jsbytes("48032"),
- cst_0$192=caml_string_of_jsbytes("0"),
- cst_30341=caml_string_of_jsbytes("30341"),
- cst_36519=caml_string_of_jsbytes("36519"),
- cst_1$121=caml_string_of_jsbytes("1"),
- cst_6178=caml_string_of_jsbytes("6178"),
- cst_42697=caml_string_of_jsbytes("42697"),
- cst_0$193=caml_string_of_jsbytes("0"),
- cst_28325=caml_string_of_jsbytes("28325"),
- cst_33964=caml_string_of_jsbytes("33964"),
- cst_1$122=caml_string_of_jsbytes("1"),
- cst_5639=caml_string_of_jsbytes("5639"),
- cst_39605=caml_string_of_jsbytes("39605"),
- cst_0$188=caml_string_of_jsbytes("0"),
- cst_27367=caml_string_of_jsbytes("27367"),
- cst_33026=caml_string_of_jsbytes("33026"),
- cst_1$117=caml_string_of_jsbytes("1"),
- cst_5659=caml_string_of_jsbytes("5659"),
- cst_38685=caml_string_of_jsbytes("38685"),
- cst_0$189=caml_string_of_jsbytes("0"),
- cst_24396=caml_string_of_jsbytes("24396"),
- cst_29382=caml_string_of_jsbytes("29382"),
- cst_1$118=caml_string_of_jsbytes("1"),
- cst_4986$0=caml_string_of_jsbytes("4986"),
- cst_34368=caml_string_of_jsbytes("34368"),
- cst_0$190=caml_string_of_jsbytes("0"),
- cst_22783=caml_string_of_jsbytes("22783"),
- cst_27332=caml_string_of_jsbytes("27332"),
- cst_1$119=caml_string_of_jsbytes("1"),
- cst_4550=caml_string_of_jsbytes("4550"),
- cst_31882=caml_string_of_jsbytes("31882"),
- cst_0$185=caml_string_of_jsbytes("0"),
- cst_35002=caml_string_of_jsbytes("35002"),
- cst_42226=caml_string_of_jsbytes("42226"),
- cst_1$114=caml_string_of_jsbytes("1"),
- cst_7223=caml_string_of_jsbytes("7223"),
- cst_49449=caml_string_of_jsbytes("49449"),
- cst_0$186=caml_string_of_jsbytes("0"),
- cst_31236=caml_string_of_jsbytes("31236"),
- cst_37596=caml_string_of_jsbytes("37596"),
- cst_1$115=caml_string_of_jsbytes("1"),
- cst_6360=caml_string_of_jsbytes("6360"),
- cst_43957=caml_string_of_jsbytes("43957"),
- cst_0$187=caml_string_of_jsbytes("0"),
- cst_29161=caml_string_of_jsbytes("29161"),
- cst_34966=caml_string_of_jsbytes("34966"),
- cst_1$116=caml_string_of_jsbytes("1"),
- cst_5805=caml_string_of_jsbytes("5805"),
- cst_40773=caml_string_of_jsbytes("40773"),
- cst_0$182=caml_string_of_jsbytes("0"),
- cst_28174=caml_string_of_jsbytes("28174"),
- cst_34000=caml_string_of_jsbytes("34000"),
- cst_1$111=caml_string_of_jsbytes("1"),
- cst_5826=caml_string_of_jsbytes("5826"),
- cst_39826=caml_string_of_jsbytes("39826"),
- cst_0$183=caml_string_of_jsbytes("0"),
- cst_25116=caml_string_of_jsbytes("25116"),
- cst_30249=caml_string_of_jsbytes("30249"),
- cst_1$112=caml_string_of_jsbytes("1"),
- cst_5133=caml_string_of_jsbytes("5133"),
- cst_35382=caml_string_of_jsbytes("35382"),
- cst_0$184=caml_string_of_jsbytes("0"),
- cst_23455=caml_string_of_jsbytes("23455"),
- cst_28138=caml_string_of_jsbytes("28138"),
- cst_1$113=caml_string_of_jsbytes("1"),
- cst_4684=caml_string_of_jsbytes("4684"),
- cst_32823=caml_string_of_jsbytes("32823"),
- cst_0$179=caml_string_of_jsbytes("0"),
- cst_35114=caml_string_of_jsbytes("35114"),
- cst_42361=caml_string_of_jsbytes("42361"),
- cst_1$108=caml_string_of_jsbytes("1"),
- cst_7246=caml_string_of_jsbytes("7246"),
- cst_49607=caml_string_of_jsbytes("49607"),
- cst_0$180=caml_string_of_jsbytes("0"),
- cst_31336=caml_string_of_jsbytes("31336"),
- cst_37716=caml_string_of_jsbytes("37716"),
- cst_1$109=caml_string_of_jsbytes("1"),
- cst_6380=caml_string_of_jsbytes("6380"),
- cst_44098=caml_string_of_jsbytes("44098"),
- cst_0$181=caml_string_of_jsbytes("0"),
- cst_29254=caml_string_of_jsbytes("29254"),
- cst_35078=caml_string_of_jsbytes("35078"),
- cst_1$110=caml_string_of_jsbytes("1"),
- cst_5824=caml_string_of_jsbytes("5824"),
- cst_40903=caml_string_of_jsbytes("40903"),
- cst_0$176=caml_string_of_jsbytes("0"),
- cst_28264=caml_string_of_jsbytes("28264"),
- cst_34109=caml_string_of_jsbytes("34109"),
- cst_1$105=caml_string_of_jsbytes("1"),
- cst_5845=caml_string_of_jsbytes("5845"),
- cst_39953=caml_string_of_jsbytes("39953"),
- cst_0$177=caml_string_of_jsbytes("0"),
- cst_25196=caml_string_of_jsbytes("25196"),
- cst_30346=caml_string_of_jsbytes("30346"),
- cst_1$106=caml_string_of_jsbytes("1"),
- cst_5149=caml_string_of_jsbytes("5149"),
- cst_35495=caml_string_of_jsbytes("35495"),
- cst_0$178=caml_string_of_jsbytes("0"),
- cst_23530=caml_string_of_jsbytes("23530"),
- cst_28228=caml_string_of_jsbytes("28228"),
- cst_1$107=caml_string_of_jsbytes("1"),
- cst_4699=caml_string_of_jsbytes("4699"),
- cst_32928=caml_string_of_jsbytes("32928"),
- cst_0$173=caml_string_of_jsbytes("0"),
- cst_35500=caml_string_of_jsbytes("35500"),
- cst_42827=caml_string_of_jsbytes("42827"),
- cst_1$102=caml_string_of_jsbytes("1"),
- cst_7326=caml_string_of_jsbytes("7326"),
- cst_50153=caml_string_of_jsbytes("50153"),
- cst_0$174=caml_string_of_jsbytes("0"),
- cst_31681=caml_string_of_jsbytes("31681"),
- cst_38131=caml_string_of_jsbytes("38131"),
- cst_1$103=caml_string_of_jsbytes("1"),
- cst_6450=caml_string_of_jsbytes("6450"),
- cst_44583=caml_string_of_jsbytes("44583"),
- cst_0$175=caml_string_of_jsbytes("0"),
- cst_29576=caml_string_of_jsbytes("29576"),
- cst_35464=caml_string_of_jsbytes("35464"),
- cst_1$104=caml_string_of_jsbytes("1"),
- cst_5888=caml_string_of_jsbytes("5888"),
- cst_41353=caml_string_of_jsbytes("41353"),
- cst_0$170=caml_string_of_jsbytes("0"),
- cst_28575=caml_string_of_jsbytes("28575"),
- cst_34484=caml_string_of_jsbytes("34484"),
- cst_1$99=caml_string_of_jsbytes("1"),
- cst_5909=caml_string_of_jsbytes("5909"),
- cst_40392=caml_string_of_jsbytes("40392"),
- cst_0$171=caml_string_of_jsbytes("0"),
- cst_25473=caml_string_of_jsbytes("25473"),
- cst_30680=caml_string_of_jsbytes("30680"),
- cst_1$100=caml_string_of_jsbytes("1"),
- cst_5206=caml_string_of_jsbytes("5206"),
- cst_35885=caml_string_of_jsbytes("35885"),
- cst_0$172=caml_string_of_jsbytes("0"),
- cst_23789=caml_string_of_jsbytes("23789"),
- cst_28539=caml_string_of_jsbytes("28539"),
- cst_1$101=caml_string_of_jsbytes("1"),
- cst_4751=caml_string_of_jsbytes("4751"),
- cst_33290=caml_string_of_jsbytes("33290"),
- cst_0$167=caml_string_of_jsbytes("0"),
- cst_35855=caml_string_of_jsbytes("35855"),
- cst_43255=caml_string_of_jsbytes("43255"),
- cst_1$96=caml_string_of_jsbytes("1"),
- cst_7399=caml_string_of_jsbytes("7399"),
- cst_50655=caml_string_of_jsbytes("50655"),
- cst_0$168=caml_string_of_jsbytes("0"),
- cst_31998=caml_string_of_jsbytes("31998"),
- cst_38512=caml_string_of_jsbytes("38512"),
- cst_1$97=caml_string_of_jsbytes("1"),
- cst_6515=caml_string_of_jsbytes("6515"),
- cst_45029=caml_string_of_jsbytes("45029"),
- cst_0$169=caml_string_of_jsbytes("0"),
- cst_29872=caml_string_of_jsbytes("29872"),
- cst_35819=caml_string_of_jsbytes("35819"),
- cst_1$98=caml_string_of_jsbytes("1"),
- cst_5947=caml_string_of_jsbytes("5947"),
- cst_41767=caml_string_of_jsbytes("41767"),
- cst_0$164=caml_string_of_jsbytes("0"),
- cst_28861=caml_string_of_jsbytes("28861"),
- cst_34829$0=caml_string_of_jsbytes("34829"),
- cst_1$93=caml_string_of_jsbytes("1"),
- cst_5968=caml_string_of_jsbytes("5968"),
- cst_40796=caml_string_of_jsbytes("40796"),
- cst_0$165=caml_string_of_jsbytes("0"),
- cst_25728=caml_string_of_jsbytes("25728"),
- cst_30987=caml_string_of_jsbytes("30987"),
- cst_1$94=caml_string_of_jsbytes("1"),
- cst_5258=caml_string_of_jsbytes("5258"),
- cst_36244=caml_string_of_jsbytes("36244"),
- cst_0$166=caml_string_of_jsbytes("0"),
- cst_24027=caml_string_of_jsbytes("24027"),
- cst_28824=caml_string_of_jsbytes("28824"),
- cst_1$95=caml_string_of_jsbytes("1"),
- cst_4799=caml_string_of_jsbytes("4799"),
- cst_33623=caml_string_of_jsbytes("33623"),
- cst_0$161=caml_string_of_jsbytes("0"),
- cst_36626=caml_string_of_jsbytes("36626"),
- cst_44185=caml_string_of_jsbytes("44185"),
- cst_1$90=caml_string_of_jsbytes("1"),
- cst_7558=caml_string_of_jsbytes("7558"),
- cst_51744=caml_string_of_jsbytes("51744"),
- cst_0$162=caml_string_of_jsbytes("0"),
- cst_32686=caml_string_of_jsbytes("32686"),
- cst_39340=caml_string_of_jsbytes("39340"),
- cst_1$91=caml_string_of_jsbytes("1"),
- cst_6655=caml_string_of_jsbytes("6655"),
- cst_45997=caml_string_of_jsbytes("45997"),
- cst_0$163=caml_string_of_jsbytes("0"),
- cst_30514=caml_string_of_jsbytes("30514"),
- cst_36589=caml_string_of_jsbytes("36589"),
- cst_1$92=caml_string_of_jsbytes("1"),
- cst_6075=caml_string_of_jsbytes("6075"),
- cst_42665=caml_string_of_jsbytes("42665"),
- cst_0$158=caml_string_of_jsbytes("0"),
- cst_29482=caml_string_of_jsbytes("29482"),
- cst_35578=caml_string_of_jsbytes("35578"),
- cst_1$87=caml_string_of_jsbytes("1"),
- cst_6096=caml_string_of_jsbytes("6096"),
- cst_41673=caml_string_of_jsbytes("41673"),
- cst_0$159=caml_string_of_jsbytes("0"),
- cst_26281=caml_string_of_jsbytes("26281"),
- cst_31653=caml_string_of_jsbytes("31653"),
- cst_1$88=caml_string_of_jsbytes("1"),
- cst_5371=caml_string_of_jsbytes("5371"),
- cst_37023=caml_string_of_jsbytes("37023"),
- cst_0$160=caml_string_of_jsbytes("0"),
- cst_24544=caml_string_of_jsbytes("24544"),
- cst_29444=caml_string_of_jsbytes("29444"),
- cst_1$89=caml_string_of_jsbytes("1"),
- cst_4902=caml_string_of_jsbytes("4902"),
- cst_34346=caml_string_of_jsbytes("34346"),
- cst_0$155=caml_string_of_jsbytes("0"),
- cst_36835=caml_string_of_jsbytes("36835"),
- cst_44437=caml_string_of_jsbytes("44437"),
- cst_1$84=caml_string_of_jsbytes("1"),
- cst_7601=caml_string_of_jsbytes("7601"),
- cst_52039=caml_string_of_jsbytes("52039"),
- cst_0$156=caml_string_of_jsbytes("0"),
- cst_32872=caml_string_of_jsbytes("32872"),
- cst_39564=caml_string_of_jsbytes("39564"),
- cst_1$85=caml_string_of_jsbytes("1"),
- cst_6693=caml_string_of_jsbytes("6693"),
- cst_46259=caml_string_of_jsbytes("46259"),
- cst_0$157=caml_string_of_jsbytes("0"),
- cst_30688=caml_string_of_jsbytes("30688"),
- cst_36798=caml_string_of_jsbytes("36798"),
- cst_1$86=caml_string_of_jsbytes("1"),
- cst_6110=caml_string_of_jsbytes("6110"),
- cst_42908=caml_string_of_jsbytes("42908"),
- cst_0$152=caml_string_of_jsbytes("0"),
- cst_29650=caml_string_of_jsbytes("29650"),
- cst_35781=caml_string_of_jsbytes("35781"),
- cst_1$81=caml_string_of_jsbytes("1"),
- cst_6131=caml_string_of_jsbytes("6131"),
- cst_41911=caml_string_of_jsbytes("41911"),
- cst_0$153=caml_string_of_jsbytes("0"),
- cst_26431=caml_string_of_jsbytes("26431"),
- cst_31833=caml_string_of_jsbytes("31833"),
- cst_1$82=caml_string_of_jsbytes("1"),
- cst_5402=caml_string_of_jsbytes("5402"),
- cst_37234=caml_string_of_jsbytes("37234"),
- cst_0$154=caml_string_of_jsbytes("0"),
- cst_24684=caml_string_of_jsbytes("24684"),
- cst_29612=caml_string_of_jsbytes("29612"),
- cst_1$83=caml_string_of_jsbytes("1"),
- cst_4930=caml_string_of_jsbytes("4930"),
- cst_34542=caml_string_of_jsbytes("34542"),
- cst_0$149=caml_string_of_jsbytes("0"),
- cst_36864=caml_string_of_jsbytes("36864"),
- cst_44473=caml_string_of_jsbytes("44473"),
- cst_1$78=caml_string_of_jsbytes("1"),
- cst_7607=caml_string_of_jsbytes("7607"),
- cst_52081=caml_string_of_jsbytes("52081"),
- cst_0$150=caml_string_of_jsbytes("0"),
- cst_32898=caml_string_of_jsbytes("32898"),
- cst_39596=caml_string_of_jsbytes("39596"),
- cst_1$79=caml_string_of_jsbytes("1"),
- cst_6698=caml_string_of_jsbytes("6698"),
- cst_46296=caml_string_of_jsbytes("46296"),
- cst_0$151=caml_string_of_jsbytes("0"),
- cst_30713=caml_string_of_jsbytes("30713"),
- cst_36827=caml_string_of_jsbytes("36827"),
- cst_1$80=caml_string_of_jsbytes("1"),
- cst_6115=caml_string_of_jsbytes("6115"),
- cst_42942=caml_string_of_jsbytes("42942"),
- cst_0$146=caml_string_of_jsbytes("0"),
- cst_29674=caml_string_of_jsbytes("29674"),
- cst_35810=caml_string_of_jsbytes("35810"),
- cst_1$75=caml_string_of_jsbytes("1"),
- cst_6136=caml_string_of_jsbytes("6136"),
- cst_41945=caml_string_of_jsbytes("41945"),
- cst_0$147=caml_string_of_jsbytes("0"),
- cst_26452=caml_string_of_jsbytes("26452"),
- cst_31858=caml_string_of_jsbytes("31858"),
- cst_1$76=caml_string_of_jsbytes("1"),
- cst_5406=caml_string_of_jsbytes("5406"),
- cst_37264=caml_string_of_jsbytes("37264"),
- cst_0$148=caml_string_of_jsbytes("0"),
- cst_24704=caml_string_of_jsbytes("24704"),
- cst_29636=caml_string_of_jsbytes("29636"),
- cst_1$77=caml_string_of_jsbytes("1"),
- cst_4934=caml_string_of_jsbytes("4934"),
- cst_34570=caml_string_of_jsbytes("34570"),
- cst_0$143=caml_string_of_jsbytes("0"),
- cst_37140=caml_string_of_jsbytes("37140"),
- cst_44807=caml_string_of_jsbytes("44807"),
- cst_1$72=caml_string_of_jsbytes("1"),
- cst_7664=caml_string_of_jsbytes("7664"),
- cst_52472=caml_string_of_jsbytes("52472"),
- cst_0$144=caml_string_of_jsbytes("0"),
- cst_33145=caml_string_of_jsbytes("33145"),
- cst_39893=caml_string_of_jsbytes("39893"),
- cst_1$73=caml_string_of_jsbytes("1"),
- cst_6748=caml_string_of_jsbytes("6748"),
- cst_46643=caml_string_of_jsbytes("46643"),
- cst_0$145=caml_string_of_jsbytes("0"),
- cst_30943=caml_string_of_jsbytes("30943"),
- cst_37103=caml_string_of_jsbytes("37103"),
- cst_1$74=caml_string_of_jsbytes("1"),
- cst_6161=caml_string_of_jsbytes("6161"),
- cst_43264=caml_string_of_jsbytes("43264"),
- cst_0$140=caml_string_of_jsbytes("0"),
- cst_29897=caml_string_of_jsbytes("29897"),
- cst_36079=caml_string_of_jsbytes("36079"),
- cst_1$69=caml_string_of_jsbytes("1"),
- cst_6182=caml_string_of_jsbytes("6182"),
- cst_42260=caml_string_of_jsbytes("42260"),
- cst_0$141=caml_string_of_jsbytes("0"),
- cst_26650=caml_string_of_jsbytes("26650"),
- cst_32097=caml_string_of_jsbytes("32097"),
- cst_1$70=caml_string_of_jsbytes("1"),
- cst_5447=caml_string_of_jsbytes("5447"),
- cst_37543=caml_string_of_jsbytes("37543"),
- cst_0$142=caml_string_of_jsbytes("0"),
- cst_24889=caml_string_of_jsbytes("24889"),
- cst_29858=caml_string_of_jsbytes("29858"),
- cst_1$71=caml_string_of_jsbytes("1"),
- cst_4971=caml_string_of_jsbytes("4971"),
- cst_34829=caml_string_of_jsbytes("34829"),
- cst_0$137=caml_string_of_jsbytes("0"),
- cst_37252=caml_string_of_jsbytes("37252"),
- cst_44941=caml_string_of_jsbytes("44941"),
- cst_1$66=caml_string_of_jsbytes("1"),
- cst_7687=caml_string_of_jsbytes("7687"),
- cst_52629=caml_string_of_jsbytes("52629"),
- cst_0$138=caml_string_of_jsbytes("0"),
- cst_33244=caml_string_of_jsbytes("33244"),
- cst_40013=caml_string_of_jsbytes("40013"),
- cst_1$67=caml_string_of_jsbytes("1"),
- cst_6768=caml_string_of_jsbytes("6768"),
- cst_46783=caml_string_of_jsbytes("46783"),
- cst_0$139=caml_string_of_jsbytes("0"),
- cst_31036=caml_string_of_jsbytes("31036"),
- cst_37215=caml_string_of_jsbytes("37215"),
- cst_1$68=caml_string_of_jsbytes("1"),
- cst_6179=caml_string_of_jsbytes("6179"),
- cst_43394=caml_string_of_jsbytes("43394"),
- cst_0$134=caml_string_of_jsbytes("0"),
- cst_29986=caml_string_of_jsbytes("29986"),
- cst_36187=caml_string_of_jsbytes("36187"),
- cst_1$63=caml_string_of_jsbytes("1"),
- cst_6201=caml_string_of_jsbytes("6201"),
- cst_42386=caml_string_of_jsbytes("42386"),
- cst_0$135=caml_string_of_jsbytes("0"),
- cst_26730=caml_string_of_jsbytes("26730"),
- cst_32193=caml_string_of_jsbytes("32193"),
- cst_1$64=caml_string_of_jsbytes("1"),
- cst_5463=caml_string_of_jsbytes("5463"),
- cst_37656=caml_string_of_jsbytes("37656"),
- cst_0$136=caml_string_of_jsbytes("0"),
- cst_24964=caml_string_of_jsbytes("24964"),
- cst_29948=caml_string_of_jsbytes("29948"),
- cst_1$65=caml_string_of_jsbytes("1"),
- cst_4986=caml_string_of_jsbytes("4986"),
- cst_34934=caml_string_of_jsbytes("34934"),
- cst_0$132=caml_string_of_jsbytes("0"),
- cst_0$133=caml_string_of_jsbytes("0"),
- cst_1229$2=caml_string_of_jsbytes("1229"),
- cst_2710$0=caml_string_of_jsbytes("2710"),
- cst_5422$2=caml_string_of_jsbytes("5422"),
- cst_1224$2=caml_string_of_jsbytes("1224"),
- cst_2699$0=caml_string_of_jsbytes("2699"),
- cst_5399$2=caml_string_of_jsbytes("5399"),
- cst_1229$1=caml_string_of_jsbytes("1229"),
- cst_5422$1=caml_string_of_jsbytes("5422"),
- cst_1224$1=caml_string_of_jsbytes("1224"),
- cst_5399$1=caml_string_of_jsbytes("5399"),
- cst_0_0226=caml_string_of_jsbytes("0.0226"),
- cst_0_0234=caml_string_of_jsbytes("0.0234"),
- cst_0_0172=caml_string_of_jsbytes("0.0172"),
- cst_0_0226$0=caml_string_of_jsbytes("0.0226"),
- cst_0_0234$0=caml_string_of_jsbytes("0.0234"),
- cst_6_55957=caml_string_of_jsbytes("6.55957"),
- cst_1$62=caml_string_of_jsbytes("1."),
- cst_0_416=caml_string_of_jsbytes("0.416"),
- cst_0_208$0=caml_string_of_jsbytes("0.208"),
- cst_560085=caml_string_of_jsbytes("560085"),
- cst_16_25=caml_string_of_jsbytes("16.25"),
- cst_2211133=caml_string_of_jsbytes("2211133"),
- cst_1000$2=caml_string_of_jsbytes("1000"),
- cst_500$1=caml_string_of_jsbytes("500"),
- cst_0$131=caml_string_of_jsbytes("0"),
- cst_0$129=caml_string_of_jsbytes("0"),
- cst_0$130=caml_string_of_jsbytes("0"),
- cst_0$127=caml_string_of_jsbytes("0"),
- cst_50$1=caml_string_of_jsbytes("50"),
- cst_50$2=caml_string_of_jsbytes("50"),
- cst_0$128=caml_string_of_jsbytes("0"),
- cst_0_9$1=caml_string_of_jsbytes("0.9"),
- cst_0_9$2=caml_string_of_jsbytes("0.9"),
- cst_0_95$0=caml_string_of_jsbytes("0.95"),
- cst_0_95$1=caml_string_of_jsbytes("0.95"),
- cst_0$125=caml_string_of_jsbytes("0"),
- cst_0$126=caml_string_of_jsbytes("0"),
- cst_100$5=caml_string_of_jsbytes("100."),
- cst_100$6=caml_string_of_jsbytes("100."),
- cst_0_005$1=caml_string_of_jsbytes("0.005"),
- cst_100$3=caml_string_of_jsbytes("100."),
- cst_100$4=caml_string_of_jsbytes("100."),
- cst_0_005$0=caml_string_of_jsbytes("0.005"),
- cst_0$124=caml_string_of_jsbytes("0"),
- cst_0_9$0=caml_string_of_jsbytes("0.9"),
- cst_0_95=caml_string_of_jsbytes("0.95"),
- cst_2142091=caml_string_of_jsbytes("2142091"),
- cst_1339340=caml_string_of_jsbytes("1339340"),
- cst_1500=caml_string_of_jsbytes("1500"),
- cst_2668=caml_string_of_jsbytes("2668"),
- cst_0$122=caml_string_of_jsbytes("0"),
- cst_0$123=caml_string_of_jsbytes("0"),
- cst_0$119=caml_string_of_jsbytes("0"),
- cst_44630=caml_string_of_jsbytes("44630"),
- cst_52321=caml_string_of_jsbytes("52321"),
- cst_1$59=caml_string_of_jsbytes("1"),
- cst_55788=caml_string_of_jsbytes("55788"),
- cst_2$31=caml_string_of_jsbytes("2"),
- cst_59704=caml_string_of_jsbytes("59704"),
- cst_3$16=caml_string_of_jsbytes("3"),
- cst_63635=caml_string_of_jsbytes("63635"),
- cst_4$13=caml_string_of_jsbytes("4"),
- cst_7119=caml_string_of_jsbytes("7119"),
- cst_68637=caml_string_of_jsbytes("68637"),
- cst_0$120=caml_string_of_jsbytes("0"),
- cst_40814=caml_string_of_jsbytes("40814"),
- cst_47632=caml_string_of_jsbytes("47632"),
- cst_1$60=caml_string_of_jsbytes("1"),
- cst_50787=caml_string_of_jsbytes("50787"),
- cst_2$32=caml_string_of_jsbytes("2"),
- cst_54365=caml_string_of_jsbytes("54365"),
- cst_3$17=caml_string_of_jsbytes("3"),
- cst_57929=caml_string_of_jsbytes("57929"),
- cst_4$14=caml_string_of_jsbytes("4"),
- cst_6434=caml_string_of_jsbytes("6434"),
- cst_61727=caml_string_of_jsbytes("61727"),
- cst_0$121=caml_string_of_jsbytes("0"),
- cst_38740=caml_string_of_jsbytes("38740"),
- cst_45057=caml_string_of_jsbytes("45057"),
- cst_1$61=caml_string_of_jsbytes("1"),
- cst_47802=caml_string_of_jsbytes("47802"),
- cst_2$33=caml_string_of_jsbytes("2"),
- cst_50957=caml_string_of_jsbytes("50957"),
- cst_3$18=caml_string_of_jsbytes("3"),
- cst_54110=caml_string_of_jsbytes("54110"),
- cst_4$15=caml_string_of_jsbytes("4"),
- cst_5971=caml_string_of_jsbytes("5971"),
- cst_57657=caml_string_of_jsbytes("57657"),
- cst_0$116=caml_string_of_jsbytes("0"),
- cst_44443=caml_string_of_jsbytes("44443"),
- cst_52101=caml_string_of_jsbytes("52101"),
- cst_1$56=caml_string_of_jsbytes("1"),
- cst_55555=caml_string_of_jsbytes("55555"),
- cst_2$28=caml_string_of_jsbytes("2"),
- cst_59454=caml_string_of_jsbytes("59454"),
- cst_3$13=caml_string_of_jsbytes("3"),
- cst_63369=caml_string_of_jsbytes("63369"),
- cst_4$10=caml_string_of_jsbytes("4"),
- cst_7089=caml_string_of_jsbytes("7089"),
- cst_68350=caml_string_of_jsbytes("68350"),
- cst_0$117=caml_string_of_jsbytes("0"),
- cst_40643=caml_string_of_jsbytes("40643"),
- cst_47433=caml_string_of_jsbytes("47433"),
- cst_1$57=caml_string_of_jsbytes("1"),
- cst_50575=caml_string_of_jsbytes("50575"),
- cst_2$29=caml_string_of_jsbytes("2"),
- cst_54138=caml_string_of_jsbytes("54138"),
- cst_3$14=caml_string_of_jsbytes("3"),
- cst_57687=caml_string_of_jsbytes("57687"),
- cst_4$11=caml_string_of_jsbytes("4"),
- cst_6407=caml_string_of_jsbytes("6407"),
- cst_61469=caml_string_of_jsbytes("61469"),
- cst_0$118=caml_string_of_jsbytes("0"),
- cst_38578=caml_string_of_jsbytes("38578"),
- cst_44869=caml_string_of_jsbytes("44869"),
- cst_1$58=caml_string_of_jsbytes("1"),
- cst_47602=caml_string_of_jsbytes("47602"),
- cst_2$30=caml_string_of_jsbytes("2"),
- cst_50744=caml_string_of_jsbytes("50744"),
- cst_3$15=caml_string_of_jsbytes("3"),
- cst_53884=caml_string_of_jsbytes("53884"),
- cst_4$12=caml_string_of_jsbytes("4"),
- cst_5946=caml_string_of_jsbytes("5946"),
- cst_57416=caml_string_of_jsbytes("57416"),
- cst_1000$1=caml_string_of_jsbytes("1000"),
- cst_500$0=caml_string_of_jsbytes("500"),
- cst_121726=caml_string_of_jsbytes("121726"),
- cst_0$114=caml_string_of_jsbytes("0"),
- cst_0$115=caml_string_of_jsbytes("0"),
- cst_0$113=caml_string_of_jsbytes("0"),
- cst_0$111=caml_string_of_jsbytes("0"),
- cst_0$112=caml_string_of_jsbytes("0"),
- cst_100000$1=caml_string_of_jsbytes("100000."),
- cst_100000$2=caml_string_of_jsbytes("100000."),
- cst_100000=caml_string_of_jsbytes("100000."),
- cst_100000$0=caml_string_of_jsbytes("100000."),
- cst_0$109=caml_string_of_jsbytes("0"),
- cst_50=caml_string_of_jsbytes("50"),
- cst_50$0=caml_string_of_jsbytes("50"),
- cst_0$110=caml_string_of_jsbytes("0"),
- cst_0_45$1=caml_string_of_jsbytes("0.45"),
- cst_0$107=caml_string_of_jsbytes("0."),
- cst_0_45$2=caml_string_of_jsbytes("0.45"),
- cst_0_75$2=caml_string_of_jsbytes("0.75"),
- cst_0_0045$2=caml_string_of_jsbytes("0.0045"),
- cst_0_0045$3=caml_string_of_jsbytes("0.0045"),
- cst_0_75$3=caml_string_of_jsbytes("0.75"),
- cst_0_75$4=caml_string_of_jsbytes("0.75"),
- cst_0_0068$0=caml_string_of_jsbytes("0.0068"),
- cst_0_3$0=caml_string_of_jsbytes("0.3"),
- cst_0_0045$4=caml_string_of_jsbytes("0.0045"),
- cst_0$108=caml_string_of_jsbytes("0."),
- cst_0_45=caml_string_of_jsbytes("0.45"),
- cst_0$105=caml_string_of_jsbytes("0."),
- cst_0_45$0=caml_string_of_jsbytes("0.45"),
- cst_0_75=caml_string_of_jsbytes("0.75"),
- cst_0_0045=caml_string_of_jsbytes("0.0045"),
- cst_0_0045$0=caml_string_of_jsbytes("0.0045"),
- cst_0_75$0=caml_string_of_jsbytes("0.75"),
- cst_0_75$1=caml_string_of_jsbytes("0.75"),
- cst_0_0068=caml_string_of_jsbytes("0.0068"),
- cst_0_3=caml_string_of_jsbytes("0.3"),
- cst_0_0045$1=caml_string_of_jsbytes("0.0045"),
- cst_0$106=caml_string_of_jsbytes("0."),
- cst_0$103=caml_string_of_jsbytes("0"),
- cst_0$104=caml_string_of_jsbytes("0"),
- cst_100$1=caml_string_of_jsbytes("100."),
- cst_100$2=caml_string_of_jsbytes("100."),
- cst_100=caml_string_of_jsbytes("100."),
- cst_100$0=caml_string_of_jsbytes("100."),
- cst_3539=caml_string_of_jsbytes("3539"),
- cst_0_085$1=caml_string_of_jsbytes("0.085"),
- cst_0_085$2=caml_string_of_jsbytes("0.085"),
- cst_3539$0=caml_string_of_jsbytes("3539"),
- cst_3524=caml_string_of_jsbytes("3524"),
- cst_0_085=caml_string_of_jsbytes("0.085"),
- cst_0_085$0=caml_string_of_jsbytes("0.085"),
- cst_3524$0=caml_string_of_jsbytes("3524"),
- cst_0$102=caml_string_of_jsbytes("0"),
- cst_3_4=caml_string_of_jsbytes("3.4"),
- cst_2_5$2=caml_string_of_jsbytes("2.5"),
- cst_2_5$3=caml_string_of_jsbytes("2.5"),
- cst_4$9=caml_string_of_jsbytes("4."),
- cst_3_1=caml_string_of_jsbytes("3.1"),
- cst_3_1$0=caml_string_of_jsbytes("3.1"),
- cst_1229$0=caml_string_of_jsbytes("1229"),
- cst_2710=caml_string_of_jsbytes("2710"),
- cst_5422$0=caml_string_of_jsbytes("5422"),
- cst_1224$0=caml_string_of_jsbytes("1224"),
- cst_2699=caml_string_of_jsbytes("2699"),
- cst_5399$0=caml_string_of_jsbytes("5399"),
- cst_1229=caml_string_of_jsbytes("1229"),
- cst_5422=caml_string_of_jsbytes("5422"),
- cst_1224=caml_string_of_jsbytes("1224"),
- cst_5399=caml_string_of_jsbytes("5399"),
- cst_0$101=caml_string_of_jsbytes("0"),
- cst_22355$0=caml_string_of_jsbytes("22355"),
- cst_19484$0=caml_string_of_jsbytes("19484"),
- cst_18261$0=caml_string_of_jsbytes("18261"),
- cst_0$100=caml_string_of_jsbytes("0"),
- cst_26962=caml_string_of_jsbytes("26962"),
- cst_23848=caml_string_of_jsbytes("23848"),
- cst_22136=caml_string_of_jsbytes("22136"),
- cst_1$55=caml_string_of_jsbytes("1"),
- cst_1$52=caml_string_of_jsbytes("1"),
- cst_4421=caml_string_of_jsbytes("4421"),
- cst_30473=caml_string_of_jsbytes("30473"),
- cst_1$53=caml_string_of_jsbytes("1"),
- cst_3906=caml_string_of_jsbytes("3906"),
- cst_26835=caml_string_of_jsbytes("26835"),
- cst_1$54=caml_string_of_jsbytes("1"),
- cst_3557=caml_string_of_jsbytes("3557"),
- cst_24821=caml_string_of_jsbytes("24821"),
- cst_0$99=caml_string_of_jsbytes("0"),
- cst_22262$0=caml_string_of_jsbytes("22262"),
- cst_19402$0=caml_string_of_jsbytes("19402"),
- cst_18185$0=caml_string_of_jsbytes("18185"),
- cst_0$98=caml_string_of_jsbytes("0"),
- cst_26849=caml_string_of_jsbytes("26849"),
- cst_23748=caml_string_of_jsbytes("23748"),
- cst_22044=caml_string_of_jsbytes("22044"),
- cst_1$51=caml_string_of_jsbytes("1"),
- cst_1$48=caml_string_of_jsbytes("1"),
- cst_4403=caml_string_of_jsbytes("4403"),
- cst_30345=caml_string_of_jsbytes("30345"),
- cst_1$49=caml_string_of_jsbytes("1"),
- cst_3890=caml_string_of_jsbytes("3890"),
- cst_26723=caml_string_of_jsbytes("26723"),
- cst_1$50=caml_string_of_jsbytes("1"),
- cst_3542=caml_string_of_jsbytes("3542"),
- cst_24717=caml_string_of_jsbytes("24717"),
- cst_22355=caml_string_of_jsbytes("22355"),
- cst_19484=caml_string_of_jsbytes("19484"),
- cst_18261=caml_string_of_jsbytes("18261"),
- cst_22262=caml_string_of_jsbytes("22262"),
- cst_19402=caml_string_of_jsbytes("19402"),
- cst_18185=caml_string_of_jsbytes("18185"),
- cst_26826=caml_string_of_jsbytes("26826"),
- cst_23380=caml_string_of_jsbytes("23380"),
- cst_21913=caml_string_of_jsbytes("21913"),
- cst_26714=caml_string_of_jsbytes("26714"),
- cst_23282=caml_string_of_jsbytes("23282"),
- cst_21821=caml_string_of_jsbytes("21821"),
- cst_0$97=caml_string_of_jsbytes("0"),
- cst_29807=caml_string_of_jsbytes("29807"),
- cst_25978$0=caml_string_of_jsbytes("25978"),
- cst_24348=caml_string_of_jsbytes("24348"),
- cst_0$96=caml_string_of_jsbytes("0"),
- cst_35949=caml_string_of_jsbytes("35949"),
- cst_31797$0=caml_string_of_jsbytes("31797"),
- cst_29515=caml_string_of_jsbytes("29515"),
- cst_1$47=caml_string_of_jsbytes("1"),
- cst_1$44=caml_string_of_jsbytes("1"),
- cst_5895=caml_string_of_jsbytes("5895"),
- cst_40630=caml_string_of_jsbytes("40630"),
- cst_1$45=caml_string_of_jsbytes("1"),
- cst_5208$0=caml_string_of_jsbytes("5208"),
- cst_35780$0=caml_string_of_jsbytes("35780"),
- cst_1$46=caml_string_of_jsbytes("1"),
- cst_4743=caml_string_of_jsbytes("4743"),
- cst_33094=caml_string_of_jsbytes("33094"),
- cst_0$95=caml_string_of_jsbytes("0"),
- cst_29682=caml_string_of_jsbytes("29682"),
- cst_25859=caml_string_of_jsbytes("25859"),
- cst_24246=caml_string_of_jsbytes("24246"),
- cst_0$94=caml_string_of_jsbytes("0"),
- cst_35799=caml_string_of_jsbytes("35799"),
- cst_31664$0=caml_string_of_jsbytes("31664"),
- cst_29392=caml_string_of_jsbytes("29392"),
- cst_1$43=caml_string_of_jsbytes("1"),
- cst_1$40=caml_string_of_jsbytes("1"),
- cst_5870=caml_string_of_jsbytes("5870"),
- cst_40460=caml_string_of_jsbytes("40460"),
- cst_1$41=caml_string_of_jsbytes("1"),
- cst_5186$0=caml_string_of_jsbytes("5186"),
- cst_35630$0=caml_string_of_jsbytes("35630"),
- cst_1$42=caml_string_of_jsbytes("1"),
- cst_4723=caml_string_of_jsbytes("4723"),
- cst_32956=caml_string_of_jsbytes("32956"),
- cst_0$93=caml_string_of_jsbytes("0"),
- cst_1000=caml_string_of_jsbytes("1000"),
- cst_1000$0=caml_string_of_jsbytes("1000"),
- cst_0$92=caml_string_of_jsbytes("0"),
- cst_25978=caml_string_of_jsbytes("25978"),
- cst_31797=caml_string_of_jsbytes("31797"),
- cst_1$39=caml_string_of_jsbytes("1"),
- cst_5208=caml_string_of_jsbytes("5208"),
- cst_35780=caml_string_of_jsbytes("35780"),
- cst_0$91=caml_string_of_jsbytes("0"),
- cst_25869=caml_string_of_jsbytes("25869"),
- cst_31664=caml_string_of_jsbytes("31664"),
- cst_1$38=caml_string_of_jsbytes("1"),
- cst_5186=caml_string_of_jsbytes("5186"),
- cst_35630=caml_string_of_jsbytes("35630"),
- cst_0$90=caml_string_of_jsbytes("0"),
- cst_468300=caml_string_of_jsbytes("468300"),
- cst_670900=caml_string_of_jsbytes("670900"),
- cst_1$37=caml_string_of_jsbytes("1"),
- cst_800200=caml_string_of_jsbytes("800200"),
- cst_2$27=caml_string_of_jsbytes("2"),
- cst_819200=caml_string_of_jsbytes("819200"),
- cst_3$12=caml_string_of_jsbytes("3"),
- cst_849500=caml_string_of_jsbytes("849500"),
- cst_4$8=caml_string_of_jsbytes("4"),
- cst_881100=caml_string_of_jsbytes("881100"),
- cst_5$2=caml_string_of_jsbytes("5"),
- cst_912400=caml_string_of_jsbytes("912400"),
- cst_6$7=caml_string_of_jsbytes("6"),
- cst_943900=caml_string_of_jsbytes("943900"),
- cst_6$8=caml_string_of_jsbytes("6"),
- cst_31100=caml_string_of_jsbytes("31100"),
- cst_943900$0=caml_string_of_jsbytes("943900"),
- cst_0$89=caml_string_of_jsbytes("0"),
- cst_458800=caml_string_of_jsbytes("458800"),
- cst_657200=caml_string_of_jsbytes("657200"),
- cst_1$36=caml_string_of_jsbytes("1"),
- cst_783900=caml_string_of_jsbytes("783900"),
- cst_2$26=caml_string_of_jsbytes("2"),
- cst_801500=caml_string_of_jsbytes("801500"),
- cst_3$11=caml_string_of_jsbytes("3"),
- cst_832200=caml_string_of_jsbytes("832200"),
- cst_4$7=caml_string_of_jsbytes("4"),
- cst_863100=caml_string_of_jsbytes("863100"),
- cst_5$1=caml_string_of_jsbytes("5"),
- cst_893800=caml_string_of_jsbytes("893800"),
- cst_6$5=caml_string_of_jsbytes("6"),
- cst_924600=caml_string_of_jsbytes("924600"),
- cst_6$6=caml_string_of_jsbytes("6"),
- cst_30500=caml_string_of_jsbytes("30500"),
- cst_924600$0=caml_string_of_jsbytes("924600"),
- cst_0$88=caml_string_of_jsbytes("0"),
- cst_0_0283$0=caml_string_of_jsbytes("0.0283"),
- cst_0_0315$0=caml_string_of_jsbytes("0.0315"),
- cst_1$35=caml_string_of_jsbytes("1"),
- cst_0_027$0=caml_string_of_jsbytes("0.027"),
- cst_2$25=caml_string_of_jsbytes("2"),
- cst_0_0238$0=caml_string_of_jsbytes("0.0238"),
- cst_3$10=caml_string_of_jsbytes("3"),
- cst_0_0201$0=caml_string_of_jsbytes("0.0201"),
- cst_4$6=caml_string_of_jsbytes("4"),
- cst_0_0185$0=caml_string_of_jsbytes("0.0185"),
- cst_5$0=caml_string_of_jsbytes("5"),
- cst_0_0179$0=caml_string_of_jsbytes("0.0179"),
- cst_6$3=caml_string_of_jsbytes("6"),
- cst_0_0173$1=caml_string_of_jsbytes("0.0173"),
- cst_6$4=caml_string_of_jsbytes("6"),
- cst_0_0006$0=caml_string_of_jsbytes("0.0006"),
- cst_0_0173$2=caml_string_of_jsbytes("0.0173"),
- cst_0$87=caml_string_of_jsbytes("0"),
- cst_0_0283=caml_string_of_jsbytes("0.0283"),
- cst_0_0315=caml_string_of_jsbytes("0.0315"),
- cst_1$34=caml_string_of_jsbytes("1"),
- cst_0_027=caml_string_of_jsbytes("0.027"),
- cst_2$24=caml_string_of_jsbytes("2"),
- cst_0_0238=caml_string_of_jsbytes("0.0238"),
- cst_3$9=caml_string_of_jsbytes("3"),
- cst_0_0201=caml_string_of_jsbytes("0.0201"),
- cst_4$5=caml_string_of_jsbytes("4"),
- cst_0_0185=caml_string_of_jsbytes("0.0185"),
- cst_5=caml_string_of_jsbytes("5"),
- cst_0_0179=caml_string_of_jsbytes("0.0179"),
- cst_6$1=caml_string_of_jsbytes("6"),
- cst_0_0173=caml_string_of_jsbytes("0.0173"),
- cst_6$2=caml_string_of_jsbytes("6"),
- cst_0_0006=caml_string_of_jsbytes("0.0006"),
- cst_0_0173$0=caml_string_of_jsbytes("0.0173"),
- cst_500=caml_string_of_jsbytes("500"),
- cst_0_98=caml_string_of_jsbytes("0.98"),
- cst_2_5$4=caml_string_of_jsbytes("2.5"),
- cst_0_9=caml_string_of_jsbytes("0.9"),
- cst_0_98$0=caml_string_of_jsbytes("0.98"),
- cst_1003$0=caml_string_of_jsbytes("1003"),
- cst_757$0=caml_string_of_jsbytes("757"),
- cst_1015$0=caml_string_of_jsbytes("1015"),
- cst_766$0=caml_string_of_jsbytes("766"),
- cst_1025$0=caml_string_of_jsbytes("1025"),
- cst_774$0=caml_string_of_jsbytes("774"),
- cst_1057$0=caml_string_of_jsbytes("1057"),
- cst_798$0=caml_string_of_jsbytes("798"),
- cst_1085$0=caml_string_of_jsbytes("1085"),
- cst_819$0=caml_string_of_jsbytes("819"),
- cst_41316$0=caml_string_of_jsbytes("41316"),
- cst_41440$0=caml_string_of_jsbytes("41440"),
- cst_41481$0=caml_string_of_jsbytes("41481"),
- cst_42228$0=caml_string_of_jsbytes("42228"),
- cst_0$86=caml_string_of_jsbytes("0"),
- cst_0$85=caml_string_of_jsbytes("0"),
- cst_0$83=caml_string_of_jsbytes("0"),
- cst_0$84=caml_string_of_jsbytes("0"),
- cst_2$23=caml_string_of_jsbytes("2."),
- cst_0$81=caml_string_of_jsbytes("0"),
- cst_0$82=caml_string_of_jsbytes("0"),
- cst_2$22=caml_string_of_jsbytes("2."),
- cst_6$0=caml_string_of_jsbytes("6."),
- cst_1$33=caml_string_of_jsbytes("1."),
- cst_2$21=caml_string_of_jsbytes("2."),
- cst_0$80=caml_string_of_jsbytes("0"),
- cst_6=caml_string_of_jsbytes("6."),
- cst_1$32=caml_string_of_jsbytes("1."),
- cst_2$20=caml_string_of_jsbytes("2."),
- cst_0$79=caml_string_of_jsbytes("0"),
- cst_12$13=caml_string_of_jsbytes("12."),
- cst_1952=caml_string_of_jsbytes("1952"),
- cst_1953=caml_string_of_jsbytes("1953"),
- cst_1954=caml_string_of_jsbytes("1954"),
- cst_0$78=caml_string_of_jsbytes("0"),
- cst_1_4$0=caml_string_of_jsbytes("1.4"),
- cst_1_8$0=caml_string_of_jsbytes("1.8"),
- cst_1$31=caml_string_of_jsbytes("1"),
- cst_2_5$1=caml_string_of_jsbytes("2.5"),
- cst_2$19=caml_string_of_jsbytes("2"),
- cst_3$7=caml_string_of_jsbytes("3."),
- cst_3$8=caml_string_of_jsbytes("3"),
- cst_3_7$1=caml_string_of_jsbytes("3.7"),
- cst_4$3=caml_string_of_jsbytes("4"),
- cst_4_3$3=caml_string_of_jsbytes("4.3"),
- cst_4$4=caml_string_of_jsbytes("4"),
- cst_0_5$3=caml_string_of_jsbytes("0.5"),
- cst_4_3$4=caml_string_of_jsbytes("4.3"),
- cst_0$77=caml_string_of_jsbytes("0"),
- cst_1_2=caml_string_of_jsbytes("1.2"),
- cst_1_5=caml_string_of_jsbytes("1.5"),
- cst_1$30=caml_string_of_jsbytes("1"),
- cst_2_5$0=caml_string_of_jsbytes("2.5"),
- cst_2$18=caml_string_of_jsbytes("2"),
- cst_3$5=caml_string_of_jsbytes("3."),
- cst_3$6=caml_string_of_jsbytes("3"),
- cst_3_7$0=caml_string_of_jsbytes("3.7"),
- cst_4$1=caml_string_of_jsbytes("4"),
- cst_4_3$1=caml_string_of_jsbytes("4.3"),
- cst_4$2=caml_string_of_jsbytes("4"),
- cst_0_5$2=caml_string_of_jsbytes("0.5"),
- cst_4_3$2=caml_string_of_jsbytes("4.3"),
- cst_0$76=caml_string_of_jsbytes("0"),
- cst_1_4=caml_string_of_jsbytes("1.4"),
- cst_1_8=caml_string_of_jsbytes("1.8"),
- cst_1$29=caml_string_of_jsbytes("1"),
- cst_2_5=caml_string_of_jsbytes("2.5"),
- cst_2$17=caml_string_of_jsbytes("2"),
- cst_3$3=caml_string_of_jsbytes("3."),
- cst_3$4=caml_string_of_jsbytes("3"),
- cst_3_7=caml_string_of_jsbytes("3.7"),
- cst_4=caml_string_of_jsbytes("4"),
- cst_4_3=caml_string_of_jsbytes("4.3"),
- cst_4$0=caml_string_of_jsbytes("4"),
- cst_0_5$1=caml_string_of_jsbytes("0.5"),
- cst_4_3$0=caml_string_of_jsbytes("4.3"),
- cst_0$75=caml_string_of_jsbytes("0."),
- cst_12$12=caml_string_of_jsbytes("12."),
- cst_0$74=caml_string_of_jsbytes("0."),
- cst_0$73=caml_string_of_jsbytes("0."),
- cst_12$11=caml_string_of_jsbytes("12."),
- cst_0$72=caml_string_of_jsbytes("0."),
- cst_0_328=caml_string_of_jsbytes("0.328"),
- cst_409505=caml_string_of_jsbytes("409505"),
- cst_0_232$0=caml_string_of_jsbytes("0.232"),
- cst_262985=caml_string_of_jsbytes("262985"),
- cst_409505$0=caml_string_of_jsbytes("409505"),
- cst_0_208=caml_string_of_jsbytes("0.208"),
- cst_204761=caml_string_of_jsbytes("204761"),
- cst_262985$0=caml_string_of_jsbytes("262985"),
- cst_0_024=caml_string_of_jsbytes("0.024"),
- cst_142303=caml_string_of_jsbytes("142303"),
- cst_204761$0=caml_string_of_jsbytes("204761"),
- cst_0$70=caml_string_of_jsbytes("0."),
- cst_0$71=caml_string_of_jsbytes("0"),
- cst_142303$0=caml_string_of_jsbytes("142303"),
- cst_0_48=caml_string_of_jsbytes("0.48"),
- cst_633129=caml_string_of_jsbytes("633129"),
- cst_0_32$1=caml_string_of_jsbytes("0.32"),
- cst_535744=caml_string_of_jsbytes("535744"),
- cst_633129$0=caml_string_of_jsbytes("633129"),
- cst_0_264=caml_string_of_jsbytes("0.264"),
- cst_389618=caml_string_of_jsbytes("389618"),
- cst_535744$0=caml_string_of_jsbytes("535744"),
- cst_0_216=caml_string_of_jsbytes("0.216"),
- cst_267871=caml_string_of_jsbytes("267871"),
- cst_389618$0=caml_string_of_jsbytes("389618"),
- cst_0_104=caml_string_of_jsbytes("0.104"),
- cst_194810=caml_string_of_jsbytes("194810"),
- cst_267871$0=caml_string_of_jsbytes("267871"),
- cst_0_04$0=caml_string_of_jsbytes("0.04"),
- cst_0$69=caml_string_of_jsbytes("0"),
- cst_194810$0=caml_string_of_jsbytes("194810"),
- cst_7632=caml_string_of_jsbytes("7632"),
- cst_4557=caml_string_of_jsbytes("4557"),
- cst_0_005=caml_string_of_jsbytes("0.005"),
- cst_r_sidence_in$3=caml_string_of_jsbytes("r\xc3\xa9sidence_in"),
- cst_prestation_courante_in$0=
- caml_string_of_jsbytes("prestation_courante_in"),
- cst_date_courante_in$20=caml_string_of_jsbytes("date_courante_in"),
- cst_r_gime_outre_mer_l751_1_ou$0=
- caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1_out"),
- cst_ge_l512_3_2_out$0=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2_out"),
- cst_conditions_hors_ge_out$0=
- caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge_out"),
- cst_droit_ouvert_out$0=caml_string_of_jsbytes("droit_ouvert_out"),
- cst_r_sidence_in$2=caml_string_of_jsbytes("r\xc3\xa9sidence_in"),
- cst_date_courante_in$19=caml_string_of_jsbytes("date_courante_in"),
- cst_brut_horaire_out$0=caml_string_of_jsbytes("brut_horaire_out"),
- cst_date_courante_in$18=caml_string_of_jsbytes("date_courante_in"),
- cst_montant_out$2=caml_string_of_jsbytes("montant_out"),
- cst_ressources_m_nage_prises_e$0=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"),
- cst_date_courante_in$17=caml_string_of_jsbytes("date_courante_in"),
- cst_informations_calcul_in$3=
- caml_string_of_jsbytes("informations_calcul_in"),
- cst_demandeur_in$4=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in$4=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_aide_finale_out=caml_string_of_jsbytes("aide_finale_out"),
- cst_ligibilit_out$2=
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"),
- cst_ressources_m_nage_prises_e=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"),
- cst_date_courante_in$16=caml_string_of_jsbytes("date_courante_in"),
- cst_informations_calcul_in$2=
- caml_string_of_jsbytes("informations_calcul_in"),
- cst_demandeur_in$3=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in$3=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_coefficents_enfants_garde_$2=
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"),
- cst_traitement_aide_finale_out$2=
- caml_string_of_jsbytes("traitement_aide_finale_out"),
- cst_aide_finale_formule_out$7=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_ligibilit_out$1=
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"),
- cst_montant_dette_in=caml_string_of_jsbytes("montant_dette_in"),
- cst_d_pense_logement_in=
- caml_string_of_jsbytes("d\xc3\xa9pense_logement_in"),
- cst_montant_charges_in=caml_string_of_jsbytes("montant_charges_in"),
- cst_montant_apl_in=caml_string_of_jsbytes("montant_apl_in"),
- cst_aide_vers_e_in=caml_string_of_jsbytes("aide_vers\xc3\xa9e_in"),
- cst_mode_occupation_in$4=caml_string_of_jsbytes("mode_occupation_in"),
- cst_montant_impay_out=caml_string_of_jsbytes("montant_impay\xc3\xa9_out"),
- cst_date_naissance_assur_in=
- caml_string_of_jsbytes("date_naissance_assur\xc3\xa9_in"),
- cst_ge_ouverture_droit_out=
- caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit_out"),
- cst_type_aide_in$2=caml_string_of_jsbytes("type_aide_in"),
- cst_date_courante_in$15=caml_string_of_jsbytes("date_courante_in"),
- cst_zone_in$6=caml_string_of_jsbytes("zone_in"),
- cst_nombre_personnes_charge_in$8=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_situation_familiale_in$1=
- caml_string_of_jsbytes("situation_familiale_in"),
- cst_ressources_m_nage_sans_arr$0=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"),
- cst_informations_calcul_in$1=
- caml_string_of_jsbytes("informations_calcul_in"),
- cst_mode_occupation_in$3=caml_string_of_jsbytes("mode_occupation_in"),
- cst_traitement_aide_finale_out$1=
- caml_string_of_jsbytes("traitement_aide_finale_out"),
- cst_aide_finale_formule_out$6=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_cat_gorie_quivalence_loyer$0=
- caml_string_of_jsbytes
- ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),
- cst_date_courante_in$14=caml_string_of_jsbytes("date_courante_in"),
- cst_zone_in$5=caml_string_of_jsbytes("zone_in"),
- cst_situation_familiale_calcul$6=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$7=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_ressources_m_nage_arrondie$6=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_mode_occupation_in$2=caml_string_of_jsbytes("mode_occupation_in"),
- cst_redevance_in$0=caml_string_of_jsbytes("redevance_in"),
- cst_traitement_aide_finale_mon$3=
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"),
- cst_aide_finale_formule_out$5=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_loyer_minimal_out=caml_string_of_jsbytes("loyer_minimal_out"),
- cst_montant_forfaitaire_charge$0=
- caml_string_of_jsbytes("montant_forfaitaire_charges_out"),
- cst_quivalence_loyer_out=
- caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_out"),
- cst_coefficient_prise_en_charg$1=
- caml_string_of_jsbytes("coefficient_prise_en_charge_out"),
- cst_copropri_t_in$0=
- caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"),
- cst_charges_mensuelles_pr_t_in=
- caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat_in"),
- cst_date_entr_e_logement_in$0=
- caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"),
- cst_local_habit_premi_re_fois_$1=
- caml_string_of_jsbytes
- ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"),
- cst_type_travaux_logement_in$0=
- caml_string_of_jsbytes("type_travaux_logement_in"),
- cst_date_signature_pr_t_in$0=
- caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"),
- cst_situation_r822_11_13_17_in$0=
- caml_string_of_jsbytes("situation_r822_11_13_17_in"),
- cst_mensualit_principale_in$0=
- caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"),
- cst_date_courante_in$13=caml_string_of_jsbytes("date_courante_in"),
- cst_zone_in$4=caml_string_of_jsbytes("zone_in"),
- cst_situation_familiale_calcul$5=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$6=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_ressources_m_nage_arrondie$5=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"),
- cst_traitement_aide_finale_mon$2=
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"),
- cst_aide_finale_formule_out$4=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_changement_logement_d842_4$0=
- caml_string_of_jsbytes("changement_logement_d842_4_in"),
- cst_logement_meubl_d842_2_in=
- caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"),
- cst_r_duction_loyer_solidarit_$0=
- caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"),
- cst_colocation_in$0=caml_string_of_jsbytes("colocation_in"),
- cst_type_aide_in$1=caml_string_of_jsbytes("type_aide_in"),
- cst_g_es_ou_handicap_adultes_h$1=
- caml_string_of_jsbytes
- ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"),
- cst_logement_est_chambre_in$0=
- caml_string_of_jsbytes("logement_est_chambre_in"),
- cst_zone_in$3=caml_string_of_jsbytes("zone_in"),
- cst_situation_familiale_calcul$4=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$5=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_date_courante_in$12=caml_string_of_jsbytes("date_courante_in"),
- cst_b_n_ficiaire_aide_adulte_o$1=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"),
- cst_ressources_m_nage_arrondie$4=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_loyer_principal_in$0=caml_string_of_jsbytes("loyer_principal_in"),
- cst_traitement_aide_finale_out$0=
- caml_string_of_jsbytes("traitement_aide_finale_out"),
- cst_aide_finale_formule_out$3=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_date_courante_in$11=caml_string_of_jsbytes("date_courante_in"),
- cst_zone_in$2=caml_string_of_jsbytes("zone_in"),
- cst_nombre_personnes_charge_in$4=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_situation_familiale_in$0=
- caml_string_of_jsbytes("situation_familiale_in"),
- cst_ressources_m_nage_sans_arr=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"),
- cst_informations_calcul_in$0=
- caml_string_of_jsbytes("informations_calcul_in"),
- cst_type_aide_in$0=caml_string_of_jsbytes("type_aide_in"),
- cst_mode_occupation_in$1=caml_string_of_jsbytes("mode_occupation_in"),
- cst_traitement_aide_finale_out=
- caml_string_of_jsbytes("traitement_aide_finale_out"),
- cst_aide_finale_formule_out$2=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_date_courante_in$10=caml_string_of_jsbytes("date_courante_in"),
- cst_anciennet_logement_in=
- caml_string_of_jsbytes("anciennet\xc3\xa9_logement_in"),
- cst_type_pr_t_in=caml_string_of_jsbytes("type_pr\xc3\xaat_in"),
- cst_zone_in$1=caml_string_of_jsbytes("zone_in"),
- cst_situation_r822_11_13_17_in=
- caml_string_of_jsbytes("situation_r822_11_13_17_in"),
- cst_copropri_t_in=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"),
- cst_date_entr_e_logement_in=
- caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"),
- cst_local_habit_premi_re_fois_$0=
- caml_string_of_jsbytes
- ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"),
- cst_date_signature_pr_t_in=
- caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"),
- cst_type_travaux_logement_in=
- caml_string_of_jsbytes("type_travaux_logement_in"),
- cst_situation_familiale_calcul$3=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$3=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_ressources_m_nage_arrondie$3=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_mensualit_principale_in=
- caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"),
- cst_traitement_aide_finale_mon$1=
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"),
- cst_aide_finale_formule_out$1=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_coefficient_prise_en_charg$0=
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil_out"),
- cst_mensualit_minimale_out=
- caml_string_of_jsbytes("mensualit\xc3\xa9_minimale_out"),
- cst_mensualit_ligible_out=
- caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible_out"),
- cst_situation_familiale_calcul$2=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$2=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_n_nombre_parts_d832_11_out=
- caml_string_of_jsbytes("n_nombre_parts_d832_11_out"),
- cst_n_nombre_parts_d832_25_in$0=
- caml_string_of_jsbytes("n_nombre_parts_d832_25_in"),
- cst_condition_2_du_832_25_in$1=
- caml_string_of_jsbytes("condition_2_du_832_25_in"),
- cst_redevance_in=caml_string_of_jsbytes("redevance_in"),
- cst_date_courante_in$9=caml_string_of_jsbytes("date_courante_in"),
- cst_zone_in$0=caml_string_of_jsbytes("zone_in"),
- cst_situation_familiale_calcul$1=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$1=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_ressources_m_nage_arrondie$2=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_mode_occupation_in$0=caml_string_of_jsbytes("mode_occupation_in"),
- cst_traitement_aide_finale_mon$0=
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"),
- cst_aide_finale_formule_out$0=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_coefficient_prise_en_charg=
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil_out"),
- cst_quivalence_loyer_minimale_=
- caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale_out"),
- cst_plafond_quivalence_loyer_l=
- caml_string_of_jsbytes
- ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible_out"),
- cst_quivalence_loyer_ligible_o=
- caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible_out"),
- cst_n_nombre_parts_d832_25_out$0=
- caml_string_of_jsbytes("n_nombre_parts_d832_25_out"),
- cst_coefficient_r_d832_25_out=
- caml_string_of_jsbytes("coefficient_r_d832_25_out"),
- cst_coefficient_multiplicateur=
- caml_string_of_jsbytes("coefficient_multiplicateur_d832_25_out"),
- cst_situation_familiale_calcul$0=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in$0=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_condition_2_du_832_25_in$0=
- caml_string_of_jsbytes("condition_2_du_832_25_in"),
- cst_n_nombre_parts_d832_25_out=
- caml_string_of_jsbytes("n_nombre_parts_d832_25_out"),
- cst_n_nombre_parts_d832_25_in=
- caml_string_of_jsbytes("n_nombre_parts_d832_25_in"),
- cst_condition_2_du_832_25_in=
- caml_string_of_jsbytes("condition_2_du_832_25_in"),
- cst_ressources_m_nage_arrondie$1=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_montant_out$1=caml_string_of_jsbytes("montant_out"),
- cst_r_duction_loyer_solidarit_=
- caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"),
- cst_colocation_in=caml_string_of_jsbytes("colocation_in"),
- cst_type_aide_in=caml_string_of_jsbytes("type_aide_in"),
- cst_g_es_ou_handicap_adultes_h$0=
- caml_string_of_jsbytes
- ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"),
- cst_logement_est_chambre_in=
- caml_string_of_jsbytes("logement_est_chambre_in"),
- cst_zone_in=caml_string_of_jsbytes("zone_in"),
- cst_situation_familiale_calcul=
- caml_string_of_jsbytes("situation_familiale_calcul_apl_in"),
- cst_nombre_personnes_charge_in=
- caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"),
- cst_date_courante_in$8=caml_string_of_jsbytes("date_courante_in"),
- cst_b_n_ficiaire_aide_adulte_o$0=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"),
- cst_ressources_m_nage_arrondie$0=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"),
- cst_loyer_principal_in=caml_string_of_jsbytes("loyer_principal_in"),
- cst_traitement_aide_finale_mon=
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal_out"),
- cst_aide_finale_formule_out=
- caml_string_of_jsbytes("aide_finale_formule_out"),
- cst_participation_personnelle_=
- caml_string_of_jsbytes("participation_personnelle_out"),
- cst_taux_composition_familiale=
- caml_string_of_jsbytes("taux_composition_familiale_out"),
- cst_participation_minimale_out=
- caml_string_of_jsbytes("participation_minimale_out"),
- cst_plafond_loyer_d823_16_2_ou=
- caml_string_of_jsbytes("plafond_loyer_d823_16_2_out"),
- cst_montant_forfaitaire_charge=
- caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16_out"),
- cst_date_courante_in$7=caml_string_of_jsbytes("date_courante_in"),
- cst_montant_out$0=caml_string_of_jsbytes("montant_out"),
- cst_ressources_m_nage_arrondie=
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"),
- cst_paiement_logement_distinct=
- caml_string_of_jsbytes("paiement_logement_distinct_professionnel_in"),
- cst_date_demande_ou_reexamen_d=
- caml_string_of_jsbytes("date_demande_ou_reexamen_droit_in"),
- cst_demandeur_poursuit_des_tud=
- caml_string_of_jsbytes("demandeur_poursuit_des_\xc3\xa9tudes_in"),
- cst_condition_ge_bourse_enseig=
- caml_string_of_jsbytes
- ("condition_\xc3\xa2ge_bourse_enseignement_sup\xc3\xa9rieur_in"),
- cst_mode_occupation_in=caml_string_of_jsbytes("mode_occupation_in"),
- cst_situation_familiale_in=
- caml_string_of_jsbytes("situation_familiale_in"),
- cst_personnes_charge_in=
- caml_string_of_jsbytes("personnes_\xc3\xa0_charge_in"),
- cst_conjoint_exerce_activit_r_=
- caml_string_of_jsbytes
- ("conjoint_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"),
- cst_demandeur_exerce_activit_r=
- caml_string_of_jsbytes
- ("demandeur_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"),
- cst_personnes_vivant_habituell=
- caml_string_of_jsbytes("personnes_vivant_habituellement_foyer_in"),
- cst_ressources_conjoint_in=
- caml_string_of_jsbytes("ressources_conjoint_in"),
- cst_ressources_demandeur_in=
- caml_string_of_jsbytes("ressources_demandeur_in"),
- cst_ressources_prises_en_compt=
- caml_string_of_jsbytes("ressources_prises_en_compte_out"),
- cst_d_penses_justifi_es_r_elle=
- caml_string_of_jsbytes
- ("d\xc3\xa9penses_justifi\xc3\xa9es_r\xc3\xa9ellement_engag\xc3\xa9es_in"),
- cst_date_courante_in$6=caml_string_of_jsbytes("date_courante_in"),
- cst_demandeur_in$2=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in$2=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_date_emm_nagement_in=
- caml_string_of_jsbytes("date_emm\xc3\xa9nagement_in"),
- cst_montant_prime_d_m_nagement=
- caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement_out"),
- cst_informations_calcul_in=
- caml_string_of_jsbytes("informations_calcul_in"),
- cst_b_n_ficie_aide_personnalis=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement_in"),
- cst_demandeur_in$1=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in$1=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_date_courante_in$5=caml_string_of_jsbytes("date_courante_in"),
- cst_coefficents_enfants_garde_$1=
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"),
- cst_nombre_personnes_charge_pr$1=
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"),
- cst_ligibilit_avec_condition_l=
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement_out"),
- cst_date_courante_in$4=caml_string_of_jsbytes("date_courante_in"),
- cst_demandeur_in$0=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in$0=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_coefficents_enfants_garde_$0=
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"),
- cst_nombre_personnes_charge_pr$0=
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"),
- cst_ligibilit_out$0=
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"),
- cst_date_courante_out$0=caml_string_of_jsbytes("date_courante_out"),
- cst_condition_logement_surface=
- caml_string_of_jsbytes("condition_logement_surface_in"),
- cst_condition_logement_r_siden=
- caml_string_of_jsbytes
- ("condition_logement_r\xc3\xa9sidence_principale_in"),
- cst_date_courante_in$3=caml_string_of_jsbytes("date_courante_in"),
- cst_demandeur_in=caml_string_of_jsbytes("demandeur_in"),
- cst_m_nage_in=caml_string_of_jsbytes("m\xc3\xa9nage_in"),
- cst_condition_2_r823_4_out=
- caml_string_of_jsbytes("condition_2_r823_4_out"),
- cst_coefficents_enfants_garde_=
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte_out"),
- cst_nombre_personnes_charge_pr=
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte_out"),
- cst_ligibilit_out=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_out"),
- cst_date_courante_out=caml_string_of_jsbytes("date_courante_out"),
- cst_date_naissance_troisi_me_e=
- caml_string_of_jsbytes
- ("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"),
- cst_enfant_na_tre_apr_s_quatri=
- caml_string_of_jsbytes
- ("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),
- cst_nombre_enfants_na_tre_apr_=
- caml_string_of_jsbytes
- ("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"),
- cst_condition_rattach_foyer_fi=
- caml_string_of_jsbytes
- ("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),
- cst_situation_familiale=caml_string_of_jsbytes("situation_familiale"),
- cst_nombre_autres_occupants_lo=
- caml_string_of_jsbytes("nombre_autres_occupants_logement"),
- cst_personnes_charge=caml_string_of_jsbytes("personnes_\xc3\xa0_charge"),
- cst_logement=caml_string_of_jsbytes("logement"),
- cst_prestations_re_ues=
- caml_string_of_jsbytes("prestations_re\xc3\xa7ues"),
- cst_zone=caml_string_of_jsbytes("zone"),
- cst_situ_commune_d_s_quilibre_=
- caml_string_of_jsbytes
- ("situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),
- cst_est_ancien_l831_2=caml_string_of_jsbytes("est_ancien_l831_2"),
- cst_surface_m_carr_s=caml_string_of_jsbytes("surface_m_carr\xc3\xa9s"),
- cst_logement_decent_l89_462=
- caml_string_of_jsbytes("logement_decent_l89_462"),
- cst_usufruit=caml_string_of_jsbytes("usufruit"),
- cst_lou_ou_sous_lou_des_tiers=
- caml_string_of_jsbytes
- ("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),
- cst_propri_taire=caml_string_of_jsbytes("propri\xc3\xa9taire"),
- cst_mode_occupation=caml_string_of_jsbytes("mode_occupation"),
- cst_est_ehpad_ou_maison_autono=
- caml_string_of_jsbytes("est_ehpad_ou_maison_autonomie_l313_12_asf"),
- cst_r_sidence_principale=
- caml_string_of_jsbytes("r\xc3\xa9sidence_principale"),
- cst_Locataire=caml_string_of_jsbytes("Locataire"),
- cst_R_sidentLogementFoyer=
- caml_string_of_jsbytes("R\xc3\xa9sidentLogementFoyer"),
- cst_AccessionPropri_t_LocalUsa=
- caml_string_of_jsbytes
- ("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),
- cst_SousLocataire=caml_string_of_jsbytes("SousLocataire"),
- cst_LocationAccession=caml_string_of_jsbytes("LocationAccession"),
- cst_InfosLocatif=caml_string_of_jsbytes("InfosLocatif"),
- cst_InfosLogementFoyer=caml_string_of_jsbytes("InfosLogementFoyer"),
- cst_InfosAccessionPropri_t=
- caml_string_of_jsbytes("InfosAccessionPropri\xc3\xa9t\xc3\xa9"),
- cst_construit_application_loi_=
- caml_string_of_jsbytes("construit_application_loi_1957_12_III"),
- cst_remplit_conditions_r832_21=
- caml_string_of_jsbytes("remplit_conditions_r832_21"),
- cst_location=caml_string_of_jsbytes("location"),
- cst_date_conventionnement=caml_string_of_jsbytes("date_conventionnement"),
- cst_type=caml_string_of_jsbytes("type"),
- cst_changement_logement_d842_4=
- caml_string_of_jsbytes("changement_logement_d842_4"),
- cst_logement_meubl_d842_2=
- caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2"),
- cst_r_duction_loyer_solidarit=
- caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- cst_g_es_ou_handicap_adultes_h=
- caml_string_of_jsbytes
- ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),
- cst_colocation=caml_string_of_jsbytes("colocation"),
- cst_logement_est_chambre=caml_string_of_jsbytes("logement_est_chambre"),
- cst_b_n_ficiaire_aide_adulte_o=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),
- cst_loyer_principal=caml_string_of_jsbytes("loyer_principal"),
- cst_Enfant_Charge=caml_string_of_jsbytes("Enfant\xc3\x80Charge"),
- cst_AutrePersonne_Charge=
- caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),
- cst_anciennet_logement=
- caml_string_of_jsbytes("anciennet\xc3\xa9_logement"),
- cst_type_pr_t$0=caml_string_of_jsbytes("type_pr\xc3\xaat"),
- cst_situation_r822_11_13_17=
- caml_string_of_jsbytes("situation_r822_11_13_17"),
- cst_copropri_t=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9"),
- cst_local_habit_premi_re_fois_=
- caml_string_of_jsbytes
- ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),
- cst_type_travaux_logement_r842=
- caml_string_of_jsbytes("type_travaux_logement_r842_5"),
- cst_type_travaux_logement_d832=
- caml_string_of_jsbytes("type_travaux_logement_d832_15"),
- cst_date_entr_e_logement=
- caml_string_of_jsbytes("date_entr\xc3\xa9e_logement"),
- cst_date_signature_pr_t=
- caml_string_of_jsbytes("date_signature_pr\xc3\xaat"),
- cst_charges_mensuelles_pr_t=
- caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat"),
- cst_mensualit_principale=
- caml_string_of_jsbytes("mensualit\xc3\xa9_principale"),
- cst_pr_t=caml_string_of_jsbytes("pr\xc3\xaat"),
- cst_bailleur=caml_string_of_jsbytes("bailleur"),
- cst_Changement=caml_string_of_jsbytes("Changement"),
- cst_PasDeChangement=caml_string_of_jsbytes("PasDeChangement"),
- cst_personne_h_berg_e_centre_s=
- caml_string_of_jsbytes
- ("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),
- cst_patrimoine=caml_string_of_jsbytes("patrimoine"),
- cst_nationalit=caml_string_of_jsbytes("nationalit\xc3\xa9"),
- cst_contrat_de_travail=caml_string_of_jsbytes("contrat_de_travail"),
- cst_date_naissance$0=caml_string_of_jsbytes("date_naissance"),
- cst_age_demandeur=caml_string_of_jsbytes("age_demandeur"),
- cst_satisfait_conditions_l512_=
- caml_string_of_jsbytes
- ("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),
- cst_Non$1=caml_string_of_jsbytes("Non"),
- cst_Oui$0=caml_string_of_jsbytes("Oui"),
- cst_situation_garde_altern_e=
- caml_string_of_jsbytes("situation_garde_altern\xc3\xa9e"),
- cst_ge$1=caml_string_of_jsbytes("\xc3\xa2ge"),
- cst_prise_en_charge$1=caml_string_of_jsbytes("prise_en_charge"),
- cst_obligation_scolaire$1=caml_string_of_jsbytes("obligation_scolaire"),
- cst_r_muneration_mensuelle$1=
- caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"),
- cst_date_de_naissance$1=caml_string_of_jsbytes("date_de_naissance"),
- cst_a_d_j_ouvert_droit_aux_all$1=
- caml_string_of_jsbytes
- ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),
- cst_b_n_ficie_titre_personnel_$1=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"),
- cst_identifiant$1=caml_string_of_jsbytes("identifiant"),
- cst_b_n_ficie_titre_personnel_$0=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"),
- cst_a_d_j_ouvert_droit_aux_all$0=
- caml_string_of_jsbytes
- ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),
- cst_prise_en_charge$0=caml_string_of_jsbytes("prise_en_charge"),
- cst_ge$0=caml_string_of_jsbytes("\xc3\xa2ge"),
- cst_date_de_naissance$0=caml_string_of_jsbytes("date_de_naissance"),
- cst_r_muneration_mensuelle$0=
- caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"),
- cst_obligation_scolaire$0=caml_string_of_jsbytes("obligation_scolaire"),
- cst_identifiant$0=caml_string_of_jsbytes("identifiant"),
- cst_cat_gorie_quivalence_loyer=
- caml_string_of_jsbytes
- ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),
- cst_redevance=caml_string_of_jsbytes("redevance"),
- cst_MoinsDeTroisEnfants=caml_string_of_jsbytes("MoinsDeTroisEnfants"),
- cst_PlusDeTroisEnfants=caml_string_of_jsbytes("PlusDeTroisEnfants"),
- cst_titulaire_allocation_perso=
- caml_string_of_jsbytes
- ("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),
- cst_b_n_ficiaire_l161_19_l351_=
- caml_string_of_jsbytes
- ("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),
- cst_incapacit_80_pourcent_ou_r=
- caml_string_of_jsbytes
- ("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),
- cst_parent=caml_string_of_jsbytes("parent\xc3\xa9"),
- cst_ascendant_descendant_colla=
- caml_string_of_jsbytes
- ("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),
- cst_ressources$0=caml_string_of_jsbytes("ressources"),
- cst_date_naissance=caml_string_of_jsbytes("date_naissance"),
- cst_taux$0=caml_string_of_jsbytes("taux"),
- cst_bas$0=caml_string_of_jsbytes("bas"),
- cst_haut$0=caml_string_of_jsbytes("haut"),
- cst_taux=caml_string_of_jsbytes("taux"),
- cst_bas=caml_string_of_jsbytes("bas"),
- cst_haut=caml_string_of_jsbytes("haut"),
- cst_Neuf=caml_string_of_jsbytes("Neuf"),
- cst_Ancien=caml_string_of_jsbytes("Ancien"),
- cst_titulaire_pr_t=caml_string_of_jsbytes("titulaire_pr\xc3\xaat"),
- cst_date_signature=caml_string_of_jsbytes("date_signature"),
- cst_type_pr_t=caml_string_of_jsbytes("type_pr\xc3\xaat"),
- cst_acquisition_aides_tat_pr_t=
- caml_string_of_jsbytes
- ("acquisition_aides_\xc3\xa9tat_pr\xc3\xaat_titre_II_ou_livre_III"),
- cst_construit_am_lior_conditio=
- caml_string_of_jsbytes
- ("construit_am\xc3\xa9lior\xc3\xa9_conditions_l831_1_4"),
- cst_respecte_convention_titre_=
- caml_string_of_jsbytes("respecte_convention_titre_II"),
- cst_respecte_convention_titre_$0=
- caml_string_of_jsbytes("respecte_convention_titre_V"),
- cst_type_bailleur=caml_string_of_jsbytes("type_bailleur"),
- cst_ancienne_allocation_logeme=
- caml_string_of_jsbytes("ancienne_allocation_logement"),
- cst_ancien_loyer_principal=
- caml_string_of_jsbytes("ancien_loyer_principal"),
- cst_ressources=caml_string_of_jsbytes("ressources"),
- cst_dur_e_r_sidence_durant_p_r=
- caml_string_of_jsbytes
- ("dur\xc3\xa9e_r\xc3\xa9sidence_durant_p\xc3\xa9riode_r_822_3_1_sup\xc3\xa9rieure_\xc3\xa0_6_mois"),
- cst_ne_produisant_pas_revenu_p=
- caml_string_of_jsbytes
- ("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),
- cst_produisant_revenu_p_riode_=
- caml_string_of_jsbytes
- ("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),
- cst_conforme_article_l442_1=
- caml_string_of_jsbytes("conforme_article_l442_1"),
- cst_age_personne_sous_location=
- caml_string_of_jsbytes("age_personne_sous_location"),
- cst_PrestationAccueilJeuneEnfa$1=
- caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"),
- cst_AllocationsFamiliales$2=
- caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_Compl_mentFamilial$1=
- caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"),
- cst_AllocationLogement$1=caml_string_of_jsbytes("AllocationLogement"),
- cst_Allocation_ducationEnfantH$0=
- caml_string_of_jsbytes
- ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"),
- cst_AllocationSoutienFamilial$2=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationRentr_eScolaire$0=
- caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"),
- cst_AllocationJournali_rePrese$0=
- caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"),
- cst_Avant$1=caml_string_of_jsbytes("Avant"),
- cst_Pendant$1=caml_string_of_jsbytes("Pendant"),
- cst_Apr_s$0=caml_string_of_jsbytes("Apr\xc3\xa8s"),
- cst_GardeAltern_ePartageAlloca$0=
- caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"),
- cst_GardeAltern_eAllocataireUn$0=
- caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"),
- cst_EffectiveEtPermanente$2=
- caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_ServicesSociauxAllocationV$3=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"),
- cst_ServicesSociauxAllocationV$4=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"),
- cst_Guadeloupe$1=caml_string_of_jsbytes("Guadeloupe"),
- cst_Guyane$1=caml_string_of_jsbytes("Guyane"),
- cst_Martinique$1=caml_string_of_jsbytes("Martinique"),
- cst_LaR_union$0=caml_string_of_jsbytes("LaR\xc3\xa9union"),
- cst_SaintBarth_lemy$0=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"),
- cst_SaintMartin$1=caml_string_of_jsbytes("SaintMartin"),
- cst_M_tropole$0=caml_string_of_jsbytes("M\xc3\xa9tropole"),
- cst_SaintPierreEtMiquelon$1=
- caml_string_of_jsbytes("SaintPierreEtMiquelon"),
- cst_Mayotte$1=caml_string_of_jsbytes("Mayotte"),
- cst_PersonneSeule=caml_string_of_jsbytes("PersonneSeule"),
- cst_Couple=caml_string_of_jsbytes("Couple"),
- cst_tudiantLog_EnChambre=
- caml_string_of_jsbytes("\xc3\x89tudiantLog\xc3\xa9EnChambre"),
- cst_tudiantLog_EnChambreR_habi=
- caml_string_of_jsbytes
- ("\xc3\x89tudiantLog\xc3\xa9EnChambreR\xc3\xa9habilit\xc3\xa9e"),
- cst_Personnes_g_esSelon3DeD842=
- caml_string_of_jsbytes("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),
- cst_AutresPersonnes=caml_string_of_jsbytes("AutresPersonnes"),
- cst_LogementPersonnes_g_esOuHa=
- caml_string_of_jsbytes
- ("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),
- cst_R_sidenceSociale=caml_string_of_jsbytes("R\xc3\xa9sidenceSociale"),
- cst_FoyerJeunesTrvailleursOuMi=
- caml_string_of_jsbytes
- ("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),
- cst_Autre$1=caml_string_of_jsbytes("Autre"),
- cst_EffectiveEtPermanente$1=
- caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_R_sidenceAltern_eAllocatai=
- caml_string_of_jsbytes
- ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"),
- cst_R_sidenceAltern_eAllocatio=
- caml_string_of_jsbytes
- ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"),
- cst_C_libataire=caml_string_of_jsbytes("C\xc3\xa9libataire"),
- cst_Mari_s=caml_string_of_jsbytes("Mari\xc3\xa9s"),
- cst_Pacs_s=caml_string_of_jsbytes("Pacs\xc3\xa9s"),
- cst_Concubins=caml_string_of_jsbytes("Concubins"),
- cst_C_libataireS_par_DeFait=
- caml_string_of_jsbytes("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),
- cst_ConcubinageDontS_par_DeFai=
- caml_string_of_jsbytes("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),
- cst_AidePersonnalis_eLogement=
- caml_string_of_jsbytes("AidePersonnalis\xc3\xa9eLogement"),
- cst_AllocationLogementFamilial$0=
- caml_string_of_jsbytes("AllocationLogementFamiliale"),
- cst_AllocationLogementSociale$0=
- caml_string_of_jsbytes("AllocationLogementSociale"),
- cst_Pas_ligible=caml_string_of_jsbytes("Pas\xc3\x89ligible"),
- cst_AllocationLogementFamilial=
- caml_string_of_jsbytes("AllocationLogementFamiliale"),
- cst_AllocationLogementSociale=
- caml_string_of_jsbytes("AllocationLogementSociale"),
- cst_Impay_Loyer=caml_string_of_jsbytes("Impay\xc3\xa9Loyer"),
- cst_Impay_Pr_t=caml_string_of_jsbytes("Impay\xc3\xa9Pr\xc3\xaat"),
- cst_TotalAnnuel_ch_ances=
- caml_string_of_jsbytes("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),
- cst_Mensualit=caml_string_of_jsbytes("Mensualit\xc3\xa9"),
- cst_Loyer=caml_string_of_jsbytes("Loyer"),
- cst_Bailleur=caml_string_of_jsbytes("Bailleur"),
- cst_B_n_ficiaire=caml_string_of_jsbytes("B\xc3\xa9n\xc3\xa9ficiaire"),
- cst_tablissementHabilit=
- caml_string_of_jsbytes("\xc3\x89tablissementHabilit\xc3\xa9"),
- cst_OuiAvecLoyerOuCharges=caml_string_of_jsbytes("OuiAvecLoyerOuCharges"),
- cst_Non$0=caml_string_of_jsbytes("Non"),
- cst_Location=caml_string_of_jsbytes("Location"),
- cst_AccessionPropri_t=
- caml_string_of_jsbytes("AccessionPropri\xc3\xa9t\xc3\xa9"),
- cst_LogementFoyer=caml_string_of_jsbytes("LogementFoyer"),
- cst_Zone1=caml_string_of_jsbytes("Zone1"),
- cst_Zone2=caml_string_of_jsbytes("Zone2"),
- cst_Zone3=caml_string_of_jsbytes("Zone3"),
- cst_Fran_aise=caml_string_of_jsbytes("Fran\xc3\xa7aise"),
- cst_trang_re=caml_string_of_jsbytes("\xc3\x89trang\xc3\xa8re"),
- cst_DateDeNaissance=caml_string_of_jsbytes("DateDeNaissance"),
- cst_AvantPremierJourMoisCivilT=
- caml_string_of_jsbytes
- ("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),
- cst_Apr_sPremierJourMoisCivilT=
- caml_string_of_jsbytes
- ("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),
- cst_Ascendant=caml_string_of_jsbytes("Ascendant"),
- cst_Descendant=caml_string_of_jsbytes("Descendant"),
- cst_Collat_ralDeuxi_meTroisi_m=
- caml_string_of_jsbytes
- ("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),
- cst_PasDeGardeAltern_e=
- caml_string_of_jsbytes("PasDeGardeAltern\xc3\xa9e"),
- cst_GardeAltern_eCoefficientPr=
- caml_string_of_jsbytes("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),
- cst_DemandeurOuConjointOuParen=
- caml_string_of_jsbytes
- ("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),
- cst_Autre$0=caml_string_of_jsbytes("Autre"),
- cst_CDI=caml_string_of_jsbytes("CDI"),
- cst_Autres=caml_string_of_jsbytes("Autres"),
- cst_AllocationsFamiliales$1=
- caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_Compl_mentFamilial$0=
- caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"),
- cst_AllocationJeuneEnfant=caml_string_of_jsbytes("AllocationJeuneEnfant"),
- cst_AllocationSoutienFamilial$1=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationSoutienEnfantHan=
- caml_string_of_jsbytes("AllocationSoutienEnfantHandicap\xc3\xa9"),
- cst_AllocationAdulteHandicap=
- caml_string_of_jsbytes("AllocationAdulteHandicap\xc3\xa9"),
- cst_Revenu$0=caml_string_of_jsbytes("Revenu"),
- cst_Infini$0=caml_string_of_jsbytes("Infini"),
- cst_Revenu=caml_string_of_jsbytes("Revenu"),
- cst_Infini=caml_string_of_jsbytes("Infini"),
- cst_Oui=caml_string_of_jsbytes("Oui"),
- cst_Non=caml_string_of_jsbytes("Non"),
- cst_ObjectifD_cenceLogement=
- caml_string_of_jsbytes("ObjectifD\xc3\xa9cenceLogement"),
- cst_Pr_vuDansListeR321_15=
- caml_string_of_jsbytes("Pr\xc3\xa9vuDansListeR321_15"),
- cst_AgrandirOuRendreHabitableD=
- caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"),
- cst_PasDeTravaux$0=caml_string_of_jsbytes("PasDeTravaux"),
- cst_TravauxPourAcquisitionD832=
- caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"),
- cst_TravauxSurLogementD_j_Acqu=
- caml_string_of_jsbytes
- ("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),
- cst_PasDeTravaux=caml_string_of_jsbytes("PasDeTravaux"),
- cst_Demandeur=caml_string_of_jsbytes("Demandeur"),
- cst_VendeurQuandDemandeurACont=
- caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"),
- cst_D331_32=caml_string_of_jsbytes("D331_32"),
- cst_D331_63_64=caml_string_of_jsbytes("D331_63_64"),
- cst_D331_59_8=caml_string_of_jsbytes("D331_59_8"),
- cst_D331_76_1=caml_string_of_jsbytes("D331_76_1"),
- cst_Autre=caml_string_of_jsbytes("Autre"),
- cst_BailleurSocial=caml_string_of_jsbytes("BailleurSocial"),
- cst_BailleurPriv=caml_string_of_jsbytes("BailleurPriv\xc3\xa9"),
- cst_The_function_conditions_ho$0=
- caml_string_of_jsbytes
- ("The function 'conditions_hors_age_out' translation isn't yet supported..."),
- cst_The_function_droit_ouvert_$0=
- caml_string_of_jsbytes
- ("The function 'droit_ouvert_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$7=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$6=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$5=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$4=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$3=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$2=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai$1=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."),
- cst_The_function_n_nombre_part=
- caml_string_of_jsbytes
- ("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),
- cst_The_function_condition_2_d=
- caml_string_of_jsbytes
- ("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),
- cst_The_function_traitement_ai$0=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."),
- cst_The_function_traitement_ai=
- caml_string_of_jsbytes
- ("The function 'traitement_aide_finale_montant_minimal_out' translation isn't yet supported..."),
- cst_The_function_montant_out_t=
- caml_string_of_jsbytes
- ("The function 'montant_out' translation isn't yet supported..."),
- cst_The_function_condition_log=
- caml_string_of_jsbytes
- ("The function 'condition_logement_surface_in' translation isn't yet supported..."),
- cst_The_function_condition_log$0=
- caml_string_of_jsbytes
- ("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),
- cst_The_function_condition_2_r=
- caml_string_of_jsbytes
- ("The function 'condition_2_r823_4_out' translation isn't yet supported..."),
- cst_AccessionProprieteLocalUsa=
- caml_string_of_jsbytes("AccessionProprieteLocalUsageExclusifHabitation"),
- cst_Locataire$0=caml_string_of_jsbytes("Locataire"),
- cst_LocationAccession$0=caml_string_of_jsbytes("LocationAccession"),
- cst_ResidentLogementFoyer=caml_string_of_jsbytes("ResidentLogementFoyer"),
- cst_SousLocataire$0=caml_string_of_jsbytes("SousLocataire"),
- cst_InfosAccessionPropriete=
- caml_string_of_jsbytes("InfosAccessionPropriete"),
- cst_InfosLocatif$0=caml_string_of_jsbytes("InfosLocatif"),
- cst_InfosLogementFoyer$0=caml_string_of_jsbytes("InfosLogementFoyer"),
- cst_AutrePersonneACharge=caml_string_of_jsbytes("AutrePersonneACharge"),
- cst_EnfantACharge=caml_string_of_jsbytes("EnfantACharge"),
- cst_Changement$0=caml_string_of_jsbytes("Changement"),
- cst_PasDeChangement$0=caml_string_of_jsbytes("PasDeChangement"),
- cst_Non$4=caml_string_of_jsbytes("Non"),
- cst_Oui$2=caml_string_of_jsbytes("Oui"),
- cst_MoinsDeTroisEnfants$0=caml_string_of_jsbytes("MoinsDeTroisEnfants"),
- cst_PlusDeTroisEnfants$0=caml_string_of_jsbytes("PlusDeTroisEnfants"),
- cst_Ancien$0=caml_string_of_jsbytes("Ancien"),
- cst_Neuf$0=caml_string_of_jsbytes("Neuf"),
- cst_AllocationEducationEnfantH$0=
- caml_string_of_jsbytes("AllocationEducationEnfantHandicape"),
- cst_AllocationJournalierePrese$0=
- caml_string_of_jsbytes("AllocationJournalierePresenceParentale"),
- cst_AllocationLogement$2=caml_string_of_jsbytes("AllocationLogement"),
- cst_AllocationRentreeScolaire$0=
- caml_string_of_jsbytes("AllocationRentreeScolaire"),
- cst_AllocationSoutienFamilial$4=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationsFamiliales$4=
- caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_ComplementFamilial$1=caml_string_of_jsbytes("ComplementFamilial"),
- cst_PrestationAccueilJeuneEnfa$2=
- caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"),
- cst_Apres$0=caml_string_of_jsbytes("Apres"),
- cst_Avant$2=caml_string_of_jsbytes("Avant"),
- cst_Pendant$2=caml_string_of_jsbytes("Pendant"),
- cst_EffectiveEtPermanente$4=
- caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_GardeAlterneeAllocataireUn$0=
- caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"),
- cst_GardeAlterneePartageAlloca$0=
- caml_string_of_jsbytes("GardeAlterneePartageAllocations"),
- cst_ServicesSociauxAllocationV$5=
- caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"),
- cst_ServicesSociauxAllocationV$6=
- caml_string_of_jsbytes
- ("ServicesSociauxAllocationVerseeAuxServicesSociaux"),
- cst_Guadeloupe$2=caml_string_of_jsbytes("Guadeloupe"),
- cst_Guyane$2=caml_string_of_jsbytes("Guyane"),
- cst_LaReunion$0=caml_string_of_jsbytes("LaReunion"),
- cst_Martinique$2=caml_string_of_jsbytes("Martinique"),
- cst_Mayotte$2=caml_string_of_jsbytes("Mayotte"),
- cst_Metropole$0=caml_string_of_jsbytes("Metropole"),
- cst_SaintBarthelemy$0=caml_string_of_jsbytes("SaintBarthelemy"),
- cst_SaintMartin$2=caml_string_of_jsbytes("SaintMartin"),
- cst_SaintPierreEtMiquelon$2=
- caml_string_of_jsbytes("SaintPierreEtMiquelon"),
- cst_Couple$0=caml_string_of_jsbytes("Couple"),
- cst_PersonneSeule$0=caml_string_of_jsbytes("PersonneSeule"),
- cst_AutresPersonnes$0=caml_string_of_jsbytes("AutresPersonnes"),
- cst_EtudiantLogeEnChambre=caml_string_of_jsbytes("EtudiantLogeEnChambre"),
- cst_EtudiantLogeEnChambreRehab=
- caml_string_of_jsbytes("EtudiantLogeEnChambreRehabilitee"),
- cst_PersonnesAgeesSelon3DeD842=
- caml_string_of_jsbytes("PersonnesAgeesSelon3DeD842_16"),
- cst_Autre$4=caml_string_of_jsbytes("Autre"),
- cst_FoyerJeunesTrvailleursOuMi$0=
- caml_string_of_jsbytes
- ("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),
- cst_LogementPersonnesAgeesOuHa=
- caml_string_of_jsbytes("LogementPersonnesAgeesOuHandicapees"),
- cst_ResidenceSociale=caml_string_of_jsbytes("ResidenceSociale"),
- cst_EffectiveEtPermanente$3=
- caml_string_of_jsbytes("EffectiveEtPermanente"),
- cst_ResidenceAlterneeAllocatai=
- caml_string_of_jsbytes("ResidenceAlterneeAllocataireUnique"),
- cst_ResidenceAlterneeAllocatio=
- caml_string_of_jsbytes("ResidenceAlterneeAllocationsPartagee"),
- cst_Celibataire=caml_string_of_jsbytes("Celibataire"),
- cst_CelibataireSepareDeFait=
- caml_string_of_jsbytes("CelibataireSepareDeFait"),
- cst_ConcubinageDontSepareDeFai=
- caml_string_of_jsbytes("ConcubinageDontSepareDeFait"),
- cst_Concubins$0=caml_string_of_jsbytes("Concubins"),
- cst_Maries=caml_string_of_jsbytes("Maries"),
- cst_Pacses=caml_string_of_jsbytes("Pacses"),
- cst_AidePersonnaliseeLogement=
- caml_string_of_jsbytes("AidePersonnaliseeLogement"),
- cst_AllocationLogementFamilial$2=
- caml_string_of_jsbytes("AllocationLogementFamiliale"),
- cst_AllocationLogementSociale$2=
- caml_string_of_jsbytes("AllocationLogementSociale"),
- cst_AllocationLogementFamilial$1=
- caml_string_of_jsbytes("AllocationLogementFamiliale"),
- cst_AllocationLogementSociale$1=
- caml_string_of_jsbytes("AllocationLogementSociale"),
- cst_PasEligible=caml_string_of_jsbytes("PasEligible"),
- cst_ImpayeLoyer=caml_string_of_jsbytes("ImpayeLoyer"),
- cst_ImpayePret=caml_string_of_jsbytes("ImpayePret"),
- cst_Loyer$0=caml_string_of_jsbytes("Loyer"),
- cst_Mensualite=caml_string_of_jsbytes("Mensualite"),
- cst_TotalAnnuelEcheances=caml_string_of_jsbytes("TotalAnnuelEcheances"),
- cst_Bailleur$0=caml_string_of_jsbytes("Bailleur"),
- cst_Beneficiaire=caml_string_of_jsbytes("Beneficiaire"),
- cst_EtablissementHabilite=caml_string_of_jsbytes("EtablissementHabilite"),
- cst_Non$3=caml_string_of_jsbytes("Non"),
- cst_OuiAvecLoyerOuCharges$0=
- caml_string_of_jsbytes("OuiAvecLoyerOuCharges"),
- cst_AccessionPropriete=caml_string_of_jsbytes("AccessionPropriete"),
- cst_Location$0=caml_string_of_jsbytes("Location"),
- cst_LogementFoyer$0=caml_string_of_jsbytes("LogementFoyer"),
- cst_Zone1$0=caml_string_of_jsbytes("Zone1"),
- cst_Zone2$0=caml_string_of_jsbytes("Zone2"),
- cst_Zone3$0=caml_string_of_jsbytes("Zone3"),
- cst_Etrangere=caml_string_of_jsbytes("Etrangere"),
- cst_Francaise=caml_string_of_jsbytes("Francaise"),
- cst_ApresPremierJourMoisCivilT=
- caml_string_of_jsbytes
- ("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),
- cst_AvantPremierJourMoisCivilT$0=
- caml_string_of_jsbytes
- ("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),
- cst_DateDeNaissance$0=caml_string_of_jsbytes("DateDeNaissance"),
- cst_Ascendant$0=caml_string_of_jsbytes("Ascendant"),
- cst_CollateralDeuxiemeTroisiem=
- caml_string_of_jsbytes("CollateralDeuxiemeTroisiemeDegre"),
- cst_Descendant$0=caml_string_of_jsbytes("Descendant"),
- cst_GardeAlterneeCoefficientPr=
- caml_string_of_jsbytes("GardeAlterneeCoefficientPriseEnCharge"),
- cst_PasDeGardeAlternee=caml_string_of_jsbytes("PasDeGardeAlternee"),
- cst_Autre$3=caml_string_of_jsbytes("Autre"),
- cst_DemandeurOuConjointOuParen$0=
- caml_string_of_jsbytes("DemandeurOuConjointOuParentOuViaPartsSocietes"),
- cst_Autres$0=caml_string_of_jsbytes("Autres"),
- cst_CDI$0=caml_string_of_jsbytes("CDI"),
- cst_AllocationAdulteHandicape=
- caml_string_of_jsbytes("AllocationAdulteHandicape"),
- cst_AllocationJeuneEnfant$0=
- caml_string_of_jsbytes("AllocationJeuneEnfant"),
- cst_AllocationSoutienEnfantHan$0=
- caml_string_of_jsbytes("AllocationSoutienEnfantHandicape"),
- cst_AllocationSoutienFamilial$3=
- caml_string_of_jsbytes("AllocationSoutienFamilial"),
- cst_AllocationsFamiliales$3=
- caml_string_of_jsbytes("AllocationsFamiliales"),
- cst_ComplementFamilial$0=caml_string_of_jsbytes("ComplementFamilial"),
- cst_Infini$2=caml_string_of_jsbytes("Infini"),
- cst_Revenu$2=caml_string_of_jsbytes("Revenu"),
- cst_Infini$1=caml_string_of_jsbytes("Infini"),
- cst_Revenu$1=caml_string_of_jsbytes("Revenu"),
- cst_Non$2=caml_string_of_jsbytes("Non"),
- cst_Oui$1=caml_string_of_jsbytes("Oui"),
- cst_AgrandirOuRendreHabitableD$0=
- caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"),
- cst_ObjectifDecenceLogement=
- caml_string_of_jsbytes("ObjectifDecenceLogement"),
- cst_PasDeTravaux$2=caml_string_of_jsbytes("PasDeTravaux"),
- cst_PrevuDansListeR321_15=caml_string_of_jsbytes("PrevuDansListeR321_15"),
- cst_PasDeTravaux$1=caml_string_of_jsbytes("PasDeTravaux"),
- cst_TravauxPourAcquisitionD832$0=
- caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"),
- cst_TravauxSurLogementDejaAcqu=
- caml_string_of_jsbytes("TravauxSurLogementDejaAcquisD832_15_2"),
- cst_Demandeur$0=caml_string_of_jsbytes("Demandeur"),
- cst_VendeurQuandDemandeurACont$0=
- caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"),
- cst_Autre$2=caml_string_of_jsbytes("Autre"),
- cst_D331_32$0=caml_string_of_jsbytes("D331_32"),
- cst_D331_59_8$0=caml_string_of_jsbytes("D331_59_8"),
- cst_D331_63_64$0=caml_string_of_jsbytes("D331_63_64"),
- cst_D331_76_1$0=caml_string_of_jsbytes("D331_76_1"),
- cst_BailleurPrive=caml_string_of_jsbytes("BailleurPrive"),
- cst_BailleurSocial$0=caml_string_of_jsbytes("BailleurSocial"),
- cst_AidesLogementLib=caml_string_of_jsbytes("AidesLogementLib"),
- Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime,
- Stdlib_Array=global_data.Stdlib__Array,
- Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime,
- Stdlib=global_data.Stdlib,
- Stdlib_Printf=global_data.Stdlib__Printf,
- Js_of_ocaml_Js=global_data.Js_of_ocaml__Js,
- Law_source=[0];
- caml_register_global(8849,Law_source,"Law_source");
- var
- PriseEnCharge=[0],
- _jG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 90,
- 14,
- 90,
- 29,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 101,
- 18,
- 101,
- 64,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _ju_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 87,
- 14,
- 87,
- 53,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 86,
- 14,
- 86,
- 50,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jm_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 89,
- 14,
- 89,
- 46,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _ji_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 88,
- 14,
- 88,
- 54,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jd_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 97,
- 18,
- 97,
- 72,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _je_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i9_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 93,
- 18,
- 93,
- 67,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 117,
- 14,
- 117,
- 30,
- [0,
- caml_string_of_jsbytes("Article L131-1"),
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]]],
- _i1_=[0,0],
- _i2_=[1,0],
- _i3_=[2,0],
- _i5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 76,
- 11,
- 76,
- 27,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 76,
- 11,
- 76,
- 27,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _i6_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("enfants_\xc3\xa0_charge"),0]],
- _i$_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _ja_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("allocations_familiales.personne_charge_effective_permanente_est_parent"),
- 0]],
- _i7_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 86,
- 10,
- 86,
- 57,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jf_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jg_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),
- 0]],
- _jb_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 87,
- 10,
- 87,
- 62,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jj_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jk_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("allocations_familiales.ressources_m\xc3\xa9nage"),
- 0]],
- _jh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 88,
- 10,
- 88,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jn_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jo_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("allocations_familiales.r\xc3\xa9sidence"),0]],
- _jl_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 89,
- 10,
- 89,
- 19,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jr_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _js_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("allocations_familiales.date_courante"),0]],
- _jp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 92,
- 10,
- 92,
- 23,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jw_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("allocations_familiales.enfants_\xc3\xa0_charge"),
- 0]],
- _jt_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 95,
- 10,
- 95,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 77,
- 3,
- 77,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jC_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),
- 0]],
- _jx_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 116,
- 10,
- 116,
- 54,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _jD_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("allocations_familiales"),
- [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]],
- _jE_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("allocations_familiales"),
- [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]],
- _jH_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 80,
- 10,
- 80,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 80,
- 10,
- 80,
- 25,
- [0,
- caml_string_of_jsbytes("Interface du programme"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _jI_=
- [0,
- caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("i_montant_vers\xc3\xa9"),0]],
- _iW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 45,
- 14,
- 45,
- 27,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _iS_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 181,
- 14,
- 181,
- 62,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _iO_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _iP_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]],
- _iQ_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _iR_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]],
- _iK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 187,
- 14,
- 187,
- 61,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _iG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 39,
- 14,
- 39,
- 38,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _iC_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_avec_garde_altern\xc3\xa9e_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _iD_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_avec_garde_altern\xc3\xa9e_majoration"),
- 0]],
- _iE_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_avec_garde_altern\xc3\xa9e_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _iF_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_avec_garde_altern\xc3\xa9e_majoration"),
- 0]],
- _iy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 37,
- 14,
- 37,
- 32,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _iu_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 187,
- 5,
- 187,
- 43,
- [0,
- caml_string_of_jsbytes("Article R521-4"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _im_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prise_en_compte"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _in_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prise_en_compte"),0]],
- _io_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prise_en_compte"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ip_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prise_en_compte"),0]],
- _iq_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _ir_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_initial_majoration"),0]],
- _is_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _it_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_initial_majoration"),0]],
- _iv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 129,
- 11,
- 129,
- 49,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _il_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 129,
- 11,
- 129,
- 49,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ii_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 125,
- 14,
- 125,
- 46,
- [0,
- caml_string_of_jsbytes("Article R521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _ib_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 275,
- 5,
- 277,
- 41,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _ic_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 137,
- 11,
- 137,
- 52,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ia_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 265,
- 5,
- 267,
- 42,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _id_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 137,
- 11,
- 137,
- 52,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ie_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 137,
- 11,
- 137,
- 52,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _h$_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 283,
- 14,
- 283,
- 55,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _h1_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _h2_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _h3_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _h4_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _h5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 376,
- 5,
- 379,
- 42,
- [0,
- caml_string_of_jsbytes("Article D755-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _h6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 128,
- 11,
- 128,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hV_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _hW_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hX_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hY_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 385,
- 5,
- 388,
- 23,
- [0,
- caml_string_of_jsbytes("Article D755-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _h0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 128,
- 11,
- 128,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _h7_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 128,
- 11,
- 128,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 22,
- 14,
- 22,
- 40,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hQ_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _hR_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"),
- 0]],
- _hS_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hT_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"),
- 0]],
- _h8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 128,
- 11,
- 128,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hP_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 128,
- 11,
- 128,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 353,
- 5,
- 354,
- 69,
- [0,
- caml_string_of_jsbytes("Article D755-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hL_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 105,
- 11,
- 105,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hH_=[8,0],
- _hI_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 151,
- 24,
- 151,
- 44,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _hJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 105,
- 11,
- 105,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hM_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 105,
- 11,
- 105,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 18,
- 14,
- 18,
- 34,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hC_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 197,
- 14,
- 197,
- 39,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hy_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _hz_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]],
- _hA_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hB_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]],
- _hp_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _hq_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hr_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hs_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _ht_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 60,
- 5,
- 60,
- 38,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hu_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hj_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _hk_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hl_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hm_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hn_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 101,
- 5,
- 101,
- 38,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _ho_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hd_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _he_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hf_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _hg_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 138,
- 5,
- 138,
- 38,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _hi_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g9_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _g__=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _g$_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert_majoration"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ha_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _hb_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 28,
- 5,
- 28,
- 44,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _hc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 127,
- 11,
- 127,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 128,
- 14,
- 128,
- 41,
- [0,
- caml_string_of_jsbytes("Article R521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gX_=[8,0],
- _gY_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 338,
- 5,
- 338,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gU_=[8,0],
- _gV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 345,
- 5,
- 345,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gR_=[8,0],
- _gS_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 352,
- 5,
- 352,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gO_=[8,0],
- _gP_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 359,
- 5,
- 359,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gL_=[8,0],
- _gM_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 366,
- 5,
- 366,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gI_=[8,0],
- _gJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 373,
- 5,
- 373,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gF_=[8,0],
- _gG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 380,
- 5,
- 380,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gH_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gC_=[8,0],
- _gD_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 387,
- 5,
- 387,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gE_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gz_=[8,0],
- _gA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 394,
- 5,
- 394,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gw_=[8,0],
- _gx_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 401,
- 5,
- 401,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _gy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gu_=[8,0],
- _gv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 177,
- 14,
- 177,
- 50,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _g1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gr_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 38,
- 14,
- 38,
- 50,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gs_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 79,
- 14,
- 79,
- 50,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gn_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 117,
- 14,
- 117,
- 50,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _go_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gt_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gi_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 43,
- 14,
- 43,
- 59,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gj_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 108,
- 11,
- 108,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 84,
- 14,
- 84,
- 59,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 108,
- 11,
- 108,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ge_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 122,
- 14,
- 122,
- 59,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _gf_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 108,
- 11,
- 108,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f$_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 218,
- 5,
- 218,
- 43,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _ga_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 122,
- 11,
- 122,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f9_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 232,
- 5,
- 233,
- 46,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _f__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 122,
- 11,
- 122,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f7_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 246,
- 5,
- 246,
- 43,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _f8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 122,
- 11,
- 122,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 173,
- 5,
- 174,
- 68,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _f1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 135,
- 11,
- 135,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 165,
- 5,
- 166,
- 68,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _f2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 135,
- 11,
- 135,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f3_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 135,
- 11,
- 135,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fY_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 179,
- 14,
- 179,
- 34,
- [0,
- caml_string_of_jsbytes("Article D521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _f4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 135,
- 11,
- 135,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 135,
- 11,
- 135,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fO_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _fP_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _fQ_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _fR_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _fS_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 313,
- 5,
- 315,
- 58,
- [0,
- caml_string_of_jsbytes("Article L521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _fT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 126,
- 11,
- 126,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fF_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _fG_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]],
- _fH_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _fI_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]],
- _fJ_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _fK_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _fL_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _fM_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _fN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 299,
- 5,
- 300,
- 58,
- [0,
- caml_string_of_jsbytes("Article L521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _fU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 126,
- 11,
- 126,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fE_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 126,
- 11,
- 126,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 126,
- 11,
- 126,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fD_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 126,
- 11,
- 126,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fv_=[8,0],
- _fw_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 159,
- 6,
- 159,
- 71,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fx_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fu_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 406,
- 5,
- 407,
- 72,
- [0,
- caml_string_of_jsbytes("Article L755-12"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _fy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ft_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 101,
- 5,
- 101,
- 70,
- [0,
- caml_string_of_jsbytes("Article L521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _fA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fs_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fk_=[8,0],
- _fl_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 250,
- 5,
- 251,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fm_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fh_=[8,0],
- _fi_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 258,
- 5,
- 259,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fj_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fe_=[8,0],
- _ff_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 266,
- 5,
- 267,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fb_=[8,0],
- _fc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 274,
- 5,
- 275,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fd_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _e__=[8,0],
- _e$_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 282,
- 5,
- 283,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fa_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _e7_=[8,0],
- _e8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 290,
- 5,
- 291,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _e9_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _e4_=[8,0],
- _e5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 298,
- 5,
- 299,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _e6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _e1_=[8,0],
- _e2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 306,
- 5,
- 307,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _e3_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eY_=[8,0],
- _eZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 314,
- 5,
- 315,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _e0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eV_=[8,0],
- _eW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 322,
- 5,
- 323,
- 53,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _eX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eS_=[8,0],
- _eT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 330,
- 5,
- 330,
- 49,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _eU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fn_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eQ_=[8,0],
- _eR_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 167,
- 14,
- 167,
- 49,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _fo_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eO_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 362,
- 5,
- 363,
- 71,
- [0,
- caml_string_of_jsbytes("Article D755-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _eP_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 359,
- 29,
- 359,
- 64,
- [0,
- caml_string_of_jsbytes("Article D755-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _eJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 142,
- 14,
- 142,
- 34,
- [0,
- caml_string_of_jsbytes("Article R521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _eF_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prise_en_compte"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _eG_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prise_en_compte"),0]],
- _eH_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prise_en_compte"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _eI_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prise_en_compte"),0]],
- _eB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 162,
- 14,
- 162,
- 34,
- [0,
- caml_string_of_jsbytes("Article R521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _eu_=[8,0],
- _ev_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 409,
- 5,
- 409,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _ew_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _er_=[8,0],
- _es_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 416,
- 5,
- 416,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _et_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eo_=[8,0],
- _ep_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 423,
- 5,
- 423,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _eq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _el_=[8,0],
- _em_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 430,
- 5,
- 430,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _en_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ei_=[8,0],
- _ej_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 437,
- 5,
- 437,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _ek_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ef_=[8,0],
- _eg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 444,
- 5,
- 444,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _eh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ec_=[8,0],
- _ed_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 451,
- 5,
- 451,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _ee_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d$_=[8,0],
- _ea_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 458,
- 5,
- 458,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _eb_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d8_=[8,0],
- _d9_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 465,
- 5,
- 465,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _d__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d5_=[8,0],
- _d6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 472,
- 5,
- 472,
- 69,
- [0,
- caml_string_of_jsbytes("Annexe"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _d7_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ex_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 186,
- 14,
- 186,
- 59,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _d0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 195,
- 14,
- 195,
- 67,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"),
- 0]]]],
- _dU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 420,
- 6,
- 421,
- 72,
- [0,
- caml_string_of_jsbytes("Article L755-12"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _dV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 121,
- 11,
- 121,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dP_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _dQ_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]],
- _dR_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _dS_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]],
- _dT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 119,
- 5,
- 125,
- 59,
- [0,
- caml_string_of_jsbytes("Article L521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _dW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 121,
- 11,
- 121,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dO_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 121,
- 11,
- 121,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 121,
- 11,
- 121,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 121,
- 11,
- 121,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dI_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 426,
- 5,
- 427,
- 71,
- [0,
- caml_string_of_jsbytes("Article L755-12"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _dJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 133,
- 11,
- 133,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dH_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 31,
- 9,
- 31,
- 32,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _dK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 133,
- 11,
- 133,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 133,
- 11,
- 133,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 23,
- 5,
- 23,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _dB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 56,
- 5,
- 56,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _dz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dw_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 89,
- 5,
- 89,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _dx_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _du_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 116,
- 5,
- 116,
- 69,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]],
- _dv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dC_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dt_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 301,
- 14,
- 301,
- 30,
- [0,
- caml_string_of_jsbytes("Article D521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _dn_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 30,
- 5,
- 30,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _do_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dl_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 63,
- 5,
- 63,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _dm_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dj_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 96,
- 5,
- 96,
- 69,
- [0,
- caml_string_of_jsbytes
- ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]],
- _dk_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/decrets_divers.catala_fr"),
- 132,
- 5,
- 132,
- 69,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"),
- [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]],
- _di_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 311,
- 14,
- 311,
- 31,
- [0,
- caml_string_of_jsbytes("Article D521-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _dc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 34,
- 14,
- 34,
- 36,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _dd_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 149,
- 11,
- 149,
- 33,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _db_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 149,
- 11,
- 149,
- 33,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _c__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 75,
- 14,
- 75,
- 64,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _c6_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _c7_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _c8_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _c9_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _c1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 83,
- 19,
- 83,
- 69,
- [0,
- caml_string_of_jsbytes("Article R521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _c2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 147,
- 11,
- 147,
- 38,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _c0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 56,
- 14,
- 56,
- 41,
- [0,
- caml_string_of_jsbytes("Article R521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _c3_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 147,
- 11,
- 147,
- 38,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 147,
- 11,
- 147,
- 38,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 33,
- 14,
- 33,
- 40,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _cO_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 158,
- 14,
- 158,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 154,
- 14,
- 154,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cJ_=[1,0],
- _cF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 156,
- 14,
- 156,
- 50,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 160,
- 14,
- 160,
- 32,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ct_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 64,
- 14,
- 64,
- 44,
- [0,
- caml_string_of_jsbytes("Article R521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _cp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_D.catala_fr"),
- 291,
- 14,
- 291,
- 35,
- [0,
- caml_string_of_jsbytes("Article D521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _ck_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 258,
- 5,
- 259,
- 56,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _cj_=[1,0],
- _cl_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ce_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 269,
- 5,
- 270,
- 48,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _cd_=[0,0],
- _cf_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 218,
- 5,
- 218,
- 70,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _cb_=[0,0],
- _cg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ca_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 208,
- 5,
- 208,
- 69,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _b$_=[0,0],
- _ch_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 188,
- 5,
- 188,
- 60,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _b9_=[0,0],
- _ci_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cm_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 99,
- 11,
- 99,
- 20,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 214,
- 5,
- 214,
- 70,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _b3_=[1,0],
- _b5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 253,
- 5,
- 254,
- 56,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _b0_=[2,0],
- _b2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 263,
- 5,
- 264,
- 48,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bV_=[0,0],
- _bX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 204,
- 5,
- 204,
- 69,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bT_=[0,0],
- _bY_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bS_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 184,
- 5,
- 184,
- 60,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bR_=[0,0],
- _bZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 98,
- 11,
- 98,
- 26,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _b7_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prise_en_compte"),0]],
- _cn_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("versement"),0]],
- _cq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 146,
- 11,
- 146,
- 32,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _co_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 146,
- 11,
- 146,
- 32,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cr_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("nombre_enfants_l521_1"),0]],
- _cu_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 148,
- 11,
- 148,
- 41,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cs_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 148,
- 11,
- 148,
- 41,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cv_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],
- _cw_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("version_avril_2008"),
- [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]],
- _cx_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("version_avril_2008"),
- [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]],
- _cA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 143,
- 3,
- 143,
- 7,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cB_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("bmaf.date_courante"),0]],
- _cy_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 5,
- 10,
- 5,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _cC_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("bmaf"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _cD_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("bmaf"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _cG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 140,
- 3,
- 140,
- 25,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cH_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]],
- _cE_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 63,
- 10,
- 63,
- 23,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cL_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 140,
- 3,
- 140,
- 25,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cM_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prestations_familiales.prestation_courante"),
- 0]],
- _cI_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 64,
- 10,
- 64,
- 29,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cP_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 140,
- 3,
- 140,
- 25,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cQ_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]],
- _cN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 65,
- 10,
- 65,
- 19,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cR_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prestations_familiales"),
- [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]],
- _cS_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("prestations_familiales"),
- [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]],
- _cV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 142,
- 3,
- 142,
- 21,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cW_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),
- 0]],
- _cT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 80,
- 10,
- 80,
- 17,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _cX_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"),
- [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]],
- _cY_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"),
- [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]],
- _c4_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _c$_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 96,
- 11,
- 96,
- 61,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _c5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 96,
- 11,
- 96,
- 61,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _da_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),
- 0]],
- _de_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]],
- _dq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _df_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 151,
- 11,
- 151,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dr_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("plafond_II_d521_3"),0]],
- _dD_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ds_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 150,
- 11,
- 150,
- 27,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dE_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("plafond_I_d521_3"),0]],
- _dL_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 133,
- 11,
- 133,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 133,
- 11,
- 133,
- 34,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dM_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_compl\xc3\xa9ment"),0]],
- _dY_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]],
- _d1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 118,
- 11,
- 118,
- 64,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _dZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 118,
- 11,
- 118,
- 64,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d2_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),
- 0]],
- _ey_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _d3_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 117,
- 11,
- 117,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ez_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),
- 0]],
- _eC_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 111,
- 11,
- 111,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 111,
- 11,
- 111,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eD_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("nombre_total_enfants"),0]],
- _eK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 110,
- 11,
- 110,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eE_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 110,
- 11,
- 110,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eL_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("nombre_moyen_enfants"),0]],
- _fp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _eM_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 106,
- 11,
- 106,
- 46,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fq_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_initial_base_premier_enfant"),0]],
- _fB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fr_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 104,
- 11,
- 104,
- 28,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _fC_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_base"),0]],
- _fW_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]],
- _f5_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]],
- _gb_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 122,
- 11,
- 122,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _f6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 122,
- 11,
- 122,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gc_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire_par_enfant"),
- 0]],
- _gk_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 108,
- 11,
- 108,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gd_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 108,
- 11,
- 108,
- 56,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gl_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),
- 0]],
- _g2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _gm_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 107,
- 11,
- 107,
- 47,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g3_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_base_deuxi\xc3\xa8me_enfant"),
- 0]],
- _g6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 109,
- 11,
- 109,
- 38,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 109,
- 11,
- 109,
- 38,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _g7_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("rapport_enfants_total_moyen"),0]],
- _hw_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"),
- 0]],
- _hD_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 123,
- 11,
- 123,
- 36,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hx_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 123,
- 11,
- 123,
- 36,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hE_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire"),0]],
- _hN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 105,
- 11,
- 105,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 105,
- 11,
- 105,
- 31,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _hO_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_initial_base"),0]],
- _h9_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_initial_majoration"),0]],
- _if_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 137,
- 11,
- 137,
- 52,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _h__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 137,
- 11,
- 137,
- 52,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ig_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),
- 0]],
- _ij_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 112,
- 11,
- 112,
- 43,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ih_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 112,
- 11,
- 112,
- 43,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ik_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_avec_garde_altern\xc3\xa9e_base"),0]],
- _iw_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_avec_garde_altern\xc3\xa9e_majoration"),
- 0]],
- _iz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 113,
- 11,
- 113,
- 29,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _ix_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 113,
- 11,
- 113,
- 29,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iA_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_base"),0]],
- _iH_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 130,
- 11,
- 130,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 130,
- 11,
- 130,
- 35,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iI_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_majoration"),0]],
- _iL_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 134,
- 11,
- 134,
- 58,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 134,
- 11,
- 134,
- 58,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iM_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),
- 0]],
- _iT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 136,
- 11,
- 136,
- 59,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 136,
- 11,
- 136,
- 59,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iU_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,
- caml_string_of_jsbytes
- ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),
- 0]],
- _iX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 101,
- 10,
- 101,
- 23,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 101,
- 10,
- 101,
- 23,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _iY_=
- [0,
- caml_string_of_jsbytes("AllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant_vers\xc3\xa9"),0]],
- _iZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 230,
- 5,
- 234,
- 6,
- [0,
- caml_string_of_jsbytes("Article L521-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bL_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/autres_codes.catala_fr"),
- 24,
- 5,
- 24,
- 63,
- [0,
- caml_string_of_jsbytes("Article L821-3"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _bM_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bH_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 60,
- 5,
- 62,
- 32,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bI_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 49,
- 5,
- 50,
- 50,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bK_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bN_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bO_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bE_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 58,
- 10,
- 58,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bA_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 68,
- 5,
- 71,
- 57,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bB_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 59,
- 10,
- 59,
- 29,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bz_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 59,
- 10,
- 59,
- 29,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bC_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 59,
- 10,
- 59,
- 29,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _by_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 59,
- 10,
- 59,
- 29,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bu_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 216,
- 18,
- 216,
- 41,
- [0,
- caml_string_of_jsbytes("Article R755-0-2"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bv_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 60,
- 11,
- 60,
- 27,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bt_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 31,
- 14,
- 31,
- 30,
- [0,
- caml_string_of_jsbytes("Article R512-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application."),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bi_=[0,0],
- _bk_=[1,0],
- _bl_=[2,0],
- _bm_=[3,0],
- _bn_=[4,0],
- _bo_=[5,0],
- _bj_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_L.catala_fr"),
- 354,
- 5,
- 359,
- 30,
- [0,
- caml_string_of_jsbytes("Article L751-1"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _bp_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 62,
- 10,
- 62,
- 33,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bh_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 62,
- 10,
- 62,
- 33,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bb_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 69,
- 14,
- 69,
- 28,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _a9_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 70,
- 14,
- 70,
- 32,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _a5_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 21,
- 14,
- 21,
- 26,
- [0,
- caml_string_of_jsbytes("Article R512-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application."),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _a6_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 61,
- 10,
- 61,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _a4_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 61,
- 10,
- 61,
- 22,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _a7_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]],
- _a__=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 66,
- 3,
- 66,
- 7,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _a$_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic.date_courante"),0]],
- _a8_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 9,
- 10,
- 9,
- 23,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _bc_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 66,
- 3,
- 66,
- 7,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bd_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]],
- _ba_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 10,
- 10,
- 10,
- 19,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _be_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]],
- _bf_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]],
- _bq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 62,
- 10,
- 62,
- 33,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bg_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 62,
- 10,
- 62,
- 33,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _br_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]],
- _bw_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 60,
- 11,
- 60,
- 27,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bs_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 60,
- 11,
- 60,
- 27,
- [0,
- caml_string_of_jsbytes("Prestations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _bx_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]],
- _bD_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]],
- _bP_=
- [0,
- caml_string_of_jsbytes("PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _a0_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 28,
- 5,
- 29,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _a1_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _aY_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 48,
- 5,
- 49,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _aZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _aW_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 64,
- 5,
- 65,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _aX_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _aU_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 82,
- 5,
- 83,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _aV_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _a2_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _aT_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _a3_=
- [0,
- caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _aH_=[6,0],
- _aJ_=[0,0],
- _aK_=[1,0],
- _aL_=[2,0],
- _aM_=[3,0],
- _aN_=[4,0],
- _aO_=[5,0],
- _aP_=[7,0],
- _aI_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 29,
- 5,
- 38,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _aQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _aE_=[8,0],
- _aF_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 47,
- 5,
- 49,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _aG_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _au_=[6,0],
- _aw_=[0,0],
- _ax_=[1,0],
- _ay_=[2,0],
- _az_=[3,0],
- _aA_=[4,0],
- _aB_=[5,0],
- _aC_=[7,0],
- _av_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 68,
- 5,
- 77,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _aD_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _ar_=[8,0],
- _as_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 86,
- 5,
- 88,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _at_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _ah_=[6,0],
- _aj_=[0,0],
- _ak_=[1,0],
- _al_=[2,0],
- _am_=[3,0],
- _an_=[4,0],
- _ao_=[5,0],
- _ap_=[7,0],
- _ai_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 107,
- 5,
- 116,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _aq_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _ae_=[8,0],
- _af_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 125,
- 5,
- 127,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _ag_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _W_=[6,0],
- _Y_=[0,0],
- _Z_=[1,0],
- ___=[2,0],
- _$_=[3,0],
- _aa_=[4,0],
- _ab_=[5,0],
- _ac_=[7,0],
- _X_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 146,
- 5,
- 155,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _ad_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _T_=[8,0],
- _U_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 165,
- 5,
- 167,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _V_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _J_=[6,0],
- _L_=[0,0],
- _M_=[1,0],
- _N_=[2,0],
- _O_=[3,0],
- _P_=[4,0],
- _Q_=[5,0],
- _R_=[7,0],
- _K_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 186,
- 5,
- 195,
- 6,
- [0,
- caml_string_of_jsbytes("Article 2"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _S_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _G_=[8,0],
- _H_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 204,
- 5,
- 206,
- 6,
- [0,
- caml_string_of_jsbytes("Article 2"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _I_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _aR_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _F_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _aS_=
- [0,
- caml_string_of_jsbytes("Smic"),
- [0,caml_string_of_jsbytes("brut_horaire"),0]],
- _C_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/epilogue.catala_fr"),
- 12,
- 14,
- 12,
- 25,
- [0,
- caml_string_of_jsbytes("R\xc3\xa8gles diverses"),
- [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]],
- _A_=[2,0],
- _B_=[1,0],
- _D_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 81,
- 10,
- 81,
- 21,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _z_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 81,
- 10,
- 81,
- 21,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _E_=
- [0,
- caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),
- [0,caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"),0]],
- _w_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/securite_sociale_R.catala_fr"),
- 78,
- 14,
- 78,
- 41,
- [0,
- caml_string_of_jsbytes("Article R521-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"),
- [0,
- caml_string_of_jsbytes
- ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _x_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 77,
- 10,
- 77,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _v_=
- [0,
- caml_string_of_jsbytes
- ("examples/allocations_familiales/prologue.catala_fr"),
- 77,
- 10,
- 77,
- 37,
- [0,
- caml_string_of_jsbytes("Allocations familiales"),
- [0,
- caml_string_of_jsbytes("Champs d'applications"),
- [0,caml_string_of_jsbytes("Prologue"),0]]]],
- _y_=
- [0,
- caml_string_of_jsbytes("AllocationFamilialesAvril2008"),
- [0,
- caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"),
- 0]],
- _u_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_in"),0],
- _t_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_out"),0],
- _s_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0],
- _r_=
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_out"),0],
- _q_=[0,caml_string_of_jsbytes("Smic_in"),0],
- _p_=[0,caml_string_of_jsbytes("Smic_out"),0],
- _o_=[0,caml_string_of_jsbytes("AllocationsFamiliales_in"),0],
- _n_=[0,caml_string_of_jsbytes("AllocationsFamiliales_out"),0],
- _m_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_in"),0],
- _l_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_out"),0],
- _k_=[0,caml_string_of_jsbytes("AllocationFamilialesAvril2008_out"),0],
- _j_=[0,caml_string_of_jsbytes("PrestationsFamiliales_in"),0],
- _i_=[0,caml_string_of_jsbytes("PrestationsFamiliales_out"),0],
- _h_=[0,caml_string_of_jsbytes("Enfant"),0],
- _g_=[0,caml_string_of_jsbytes("EnfantEntr\xc3\xa9e"),0],
- _f_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0],
- _e_=
- [0,
- caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"),
- 0],
- _d_=[0,caml_string_of_jsbytes("VersementAllocations"),0],
- _c_=[0,caml_string_of_jsbytes("PriseEnCompte"),0],
- _b_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0],
- _a_=[0,caml_string_of_jsbytes("PriseEnCharge"),0],
- _j__=[7,0],
- _j$_=[5,0],
- _ka_=[4,0],
- _kb_=[6,0],
- _kc_=[8,0],
- _kd_=[2,0],
- _ke_=[3,0],
- _kf_=[1,0],
- _kg_=[0,0],
- _j9_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'Collectivite.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")],
- _j1_=[0,0],
- _j2_=[2,0],
- _j3_=[1,0],
- _j4_=[5,0],
- _j5_=[6,0],
- _j6_=[3,0],
- _j7_=[7,0],
- _j8_=[4,0],
- _j0_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")],
- _jY_=[0,0],
- _jZ_=[1,0],
- _jX_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'VersementAllocations.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'VersementAllocations.t'")],
- _jU_=[2,0],
- _jV_=[1,0],
- _jW_=[0,0],
- _jT_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PriseEnCompte.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PriseEnCompte.t'")],
- _jQ_=[1,0],
- _jR_=[0,0],
- _jS_=[2,0],
- _jP_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'SituationObligationScolaire.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")],
- _jK_=[4,0],
- _jL_=[3,0],
- _jM_=[0,0],
- _jN_=[1,0],
- _jO_=[2,0],
- _jJ_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PriseEnCharge.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],
- _aaI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 235,
- 14,
- 235,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),
- 0]],
- _aaE_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _aaF_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _aaG_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _aaH_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _aaA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1200,
- 14,
- 1200,
- 63,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1233,
- 14,
- 1233,
- 25,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1196,
- 5,
- 1196,
- 70,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aam_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1193,
- 14,
- 1193,
- 58,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aai_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1191,
- 14,
- 1191,
- 64,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aae_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1189,
- 14,
- 1189,
- 54,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1187,
- 14,
- 1187,
- 51,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1185,
- 14,
- 1185,
- 59,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1183,
- 14,
- 1183,
- 38,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$Y_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1181,
- 14,
- 1181,
- 44,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$U_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1179,
- 14,
- 1179,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$Q_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1177,
- 14,
- 1177,
- 31,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$M_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1202,
- 14,
- 1202,
- 48,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$N_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1166,
- 11,
- 1166,
- 45,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$L_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1166,
- 11,
- 1166,
- 45,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$O_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),
- 0]],
- _$R_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1170,
- 3,
- 1170,
- 13,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$S_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("calculette.m\xc3\xa9nage"),0]],
- _$P_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1066,
- 10,
- 1066,
- 16,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$V_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1170,
- 3,
- 1170,
- 13,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$W_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("calculette.demandeur"),0]],
- _$T_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1067,
- 10,
- 1067,
- 19,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$Z_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1170,
- 3,
- 1170,
- 13,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$0_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("calculette.informations_calcul"),0]],
- _$X_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1068,
- 10,
- 1068,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1170,
- 3,
- 1170,
- 13,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$4_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("calculette.date_courante"),0]],
- _$1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1069,
- 10,
- 1069,
- 23,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1170,
- 3,
- 1170,
- 13,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$8_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),
- 0]],
- _$5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1074,
- 10,
- 1074,
- 44,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$9_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes("calculette"),
- [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]],
- _$__=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes("calculette"),
- [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]],
- _aab_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1171,
- 3,
- 1171,
- 33,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aac_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),
- 0]],
- _$$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1066,
- 10,
- 1066,
- 16,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1171,
- 3,
- 1171,
- 33,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aag_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette_sans_garde_altern\xc3\xa9e.demandeur"),
- 0]],
- _aad_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1067,
- 10,
- 1067,
- 19,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1171,
- 3,
- 1171,
- 33,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aak_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette_sans_garde_altern\xc3\xa9e.informations_calcul"),
- 0]],
- _aah_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1068,
- 10,
- 1068,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aan_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1171,
- 3,
- 1171,
- 33,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aao_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette_sans_garde_altern\xc3\xa9e.date_courante"),
- 0]],
- _aal_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1069,
- 10,
- 1069,
- 23,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aar_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1171,
- 3,
- 1171,
- 33,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aas_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),
- 0]],
- _aap_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1074,
- 10,
- 1074,
- 44,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aat_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]],
- _aau_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]],
- _aax_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1173,
- 10,
- 1173,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aav_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1173,
- 10,
- 1173,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aay_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]],
- _aaB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1167,
- 11,
- 1167,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1167,
- 11,
- 1167,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaC_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"),
- 0]],
- _aaJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1174,
- 10,
- 1174,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1174,
- 10,
- 1174,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _aaK_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"),
- [0,caml_string_of_jsbytes("aide_finale"),0]],
- _$I_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1092,
- 14,
- 1092,
- 33,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _$A_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$B_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$C_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$D_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$E_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$F_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$G_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$H_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$w_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1109,
- 14,
- 1109,
- 36,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _$g_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$h_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$i_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$j_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$k_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$l_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$m_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$n_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$o_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$p_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$q_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$r_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$s_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$t_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$u_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$v_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- ____=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- __$_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$a_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$b_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$c_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _$d_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$e_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _$f_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$x_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1090,
- 10,
- 1090,
- 32,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1090,
- 10,
- 1090,
- 32,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1071,
- 14,
- 1071,
- 25,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- __2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1146,
- 14,
- 1146,
- 63,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __W_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1141,
- 14,
- 1141,
- 62,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __S_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1137,
- 14,
- 1137,
- 53,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __O_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1131,
- 5,
- 1131,
- 65,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __K_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1126,
- 14,
- 1126,
- 68,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __G_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1122,
- 14,
- 1122,
- 66,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __A_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1114,
- 14,
- 1114,
- 68,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __B_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __z_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1110,
- 14,
- 1110,
- 68,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __C_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __v_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1080,
- 14,
- 1080,
- 58,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- __u_=[0,0],
- __q_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1118,
- 14,
- 1118,
- 64,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __k_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1082,
- 14,
- 1082,
- 50,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- __h_=[2,0],
- __i_=[1,0],
- __j_=[2,0],
- __d_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1143,
- 14,
- 1143,
- 54,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1139,
- 14,
- 1139,
- 45,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1135,
- 14,
- 1135,
- 66,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1128,
- 14,
- 1128,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1124,
- 14,
- 1124,
- 58,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1116,
- 14,
- 1116,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1112,
- 14,
- 1112,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1120,
- 14,
- 1120,
- 56,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1103,
- 14,
- 1103,
- 67,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1099,
- 14,
- 1099,
- 63,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1095,
- 14,
- 1095,
- 60,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1107,
- 14,
- 1107,
- 65,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1066,
- 5,
- 1066,
- 74,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Zm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1101,
- 14,
- 1101,
- 55,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1097,
- 14,
- 1097,
- 52,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Ze_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1105,
- 14,
- 1105,
- 59,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1079,
- 3,
- 1079,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zg_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),
- 0]],
- _Zd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 423,
- 10,
- 423,
- 23,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Zj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1079,
- 3,
- 1079,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zk_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),
- 0]],
- _Zh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 424,
- 10,
- 424,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Zn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1079,
- 3,
- 1079,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zo_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),
- 0]],
- _Zl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 425,
- 10,
- 425,
- 19,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Zr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1079,
- 3,
- 1079,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zs_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),
- 0]],
- _Zp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 426,
- 10,
- 426,
- 47,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Zv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1079,
- 3,
- 1079,
- 34,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Zw_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.informations_calcul"),
- 0]],
- _Zt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 427,
- 10,
- 427,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Zx_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"),
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- 0]]],
- _Zy_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"),
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- 0]]],
- _ZB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1076,
- 3,
- 1076,
- 42,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZC_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),
- 0]],
- _Zz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 386,
- 10,
- 386,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ZF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1076,
- 3,
- 1076,
- 42,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZG_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),
- 0]],
- _ZD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 387,
- 10,
- 387,
- 19,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ZJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1076,
- 3,
- 1076,
- 42,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZK_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),
- 0]],
- _ZH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 388,
- 17,
- 388,
- 30,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ZL_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- 0]]],
- _ZM_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- 0]]],
- _ZP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZQ_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_allocation_logement.mode_occupation"),
- 0]],
- _ZN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1006,
- 10,
- 1006,
- 25,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _ZW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _ZX_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_allocation_logement.informations_calcul"),
- 0]],
- _ZR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1007,
- 10,
- 1007,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Z0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z1_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),
- 0]],
- _ZY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1008,
- 10,
- 1008,
- 27,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Z4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z5_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_allocation_logement.situation_familiale"),
- 0]],
- _Z2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1011,
- 10,
- 1011,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Z8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _Z9_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Z6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1012,
- 10,
- 1012,
- 35,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __a_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __b_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("calcul_allocation_logement.zone"),0]],
- _Z__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1013,
- 10,
- 1013,
- 14,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __e_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __f_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_allocation_logement.date_courante"),
- 0]],
- __c_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1014,
- 10,
- 1014,
- 23,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __l_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1085,
- 3,
- 1085,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __m_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("calcul_allocation_logement.type_aide"),0]],
- __g_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1015,
- 10,
- 1015,
- 19,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __n_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_allocation_logement"),
- [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]],
- __o_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_allocation_logement"),
- [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]],
- __r_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __s_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),
- 0]],
- __p_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 751,
- 10,
- 751,
- 25,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __w_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __x_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),
- 0]],
- __t_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 752,
- 10,
- 752,
- 19,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __D_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __E_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.informations_calcul"),
- 0]],
- __y_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 753,
- 10,
- 753,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __H_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __I_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),
- 0]],
- __F_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 754,
- 10,
- 754,
- 27,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __L_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __M_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),
- 0]],
- __J_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 757,
- 10,
- 757,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __P_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __Q_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- __N_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 758,
- 10,
- 758,
- 35,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __T_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __U_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.zone"),
- 0]],
- __R_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 759,
- 10,
- 759,
- 14,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __X_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1082,
- 3,
- 1082,
- 37,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __Y_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),
- 0]],
- __V_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 760,
- 10,
- 760,
- 23,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- __Z_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"),
- [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]],
- __0_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"),
- [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]],
- __3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1091,
- 10,
- 1091,
- 59,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1091,
- 10,
- 1091,
- 59,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __4_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"),
- 0]],
- __7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1088,
- 10,
- 1088,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1088,
- 10,
- 1088,
- 21,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- __8_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]],
- _$y_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _$J_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1089,
- 10,
- 1089,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$z_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1089,
- 10,
- 1089,
- 29,
- [0,
- caml_string_of_jsbytes("Calculette globale"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]],
- _$K_=
- [0,
- caml_string_of_jsbytes("CalculetteAidesAuLogement"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _Y9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1403,
- 14,
- 1403,
- 33,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Y5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1408,
- 14,
- 1408,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _YT_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _YU_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _YV_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _YW_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _YX_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _YY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _YZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Y0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Y1_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Y2_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Y3_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Y4_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Y6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1026,
- 10,
- 1026,
- 32,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1026,
- 10,
- 1026,
- 32,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1675,
- 14,
- 1675,
- 48,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _YL_=[1,0],
- _YM_=[1,0],
- _YH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1670,
- 14,
- 1670,
- 44,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _YD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1665,
- 14,
- 1665,
- 48,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1650,
- 14,
- 1650,
- 32,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1664,
- 14,
- 1664,
- 31,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1657,
- 5,
- 1657,
- 69,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1644,
- 14,
- 1644,
- 42,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1618,
- 14,
- 1618,
- 26,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1624,
- 14,
- 1624,
- 52,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Yb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1612,
- 14,
- 1612,
- 47,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _X9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1621,
- 14,
- 1621,
- 35,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _X5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1638,
- 14,
- 1638,
- 67,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _X1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1607,
- 14,
- 1607,
- 49,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _XX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1633,
- 14,
- 1633,
- 37,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _XR_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1729,
- 14,
- 1729,
- 64,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _XP_=[3,0],
- _XQ_=[3,0],
- _XL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1622,
- 14,
- 1622,
- 42,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _XH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1619,
- 14,
- 1619,
- 33,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _XD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1626,
- 14,
- 1626,
- 59,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1614,
- 14,
- 1614,
- 54,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1608,
- 14,
- 1608,
- 56,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1630,
- 14,
- 1630,
- 44,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1724,
- 14,
- 1724,
- 38,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1708,
- 14,
- 1708,
- 45,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Xd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1718,
- 14,
- 1718,
- 57,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _W$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1703,
- 14,
- 1703,
- 54,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _W7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1697,
- 14,
- 1697,
- 73,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _W3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1686,
- 14,
- 1686,
- 55,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _W1_=[3,0],
- _W2_=[3,0],
- _WX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1692,
- 14,
- 1692,
- 53,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _WT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1713,
- 14,
- 1713,
- 57,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _WP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1681,
- 14,
- 1681,
- 55,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _WL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1623,
- 14,
- 1623,
- 47,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _WH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1620,
- 14,
- 1620,
- 38,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _WD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1628,
- 14,
- 1628,
- 64,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Wz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1616,
- 14,
- 1616,
- 59,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Wv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1610,
- 14,
- 1610,
- 61,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Wr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 81,
- 14,
- 81,
- 44,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Wl_=[0,0],
- _Wm_=[1,0],
- _Wn_=[1,0],
- _Wo_=[1,0],
- _Wp_=[0,0],
- _Wq_=[1,0],
- _Wh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4871,
- 14,
- 4871,
- 31,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Wd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1395,
- 14,
- 1395,
- 34,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _V__=[0,0],
- _V$_=[2,0],
- _Wa_=[1,0],
- _Wb_=[0,0],
- _Wc_=[1,0],
- _We_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1017,
- 11,
- 1017,
- 31,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _V9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1017,
- 11,
- 1017,
- 31,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wf_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]],
- _Wi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1010,
- 10,
- 1010,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1010,
- 10,
- 1010,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wj_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]],
- _Ws_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1018,
- 11,
- 1018,
- 41,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1018,
- 11,
- 1018,
- 41,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wt_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]],
- _Ww_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Wx_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies_base"),
- 0]],
- _Wu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 855,
- 10,
- 855,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WB_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Wy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 858,
- 10,
- 858,
- 35,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WF_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl"),
- 0]],
- _WC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 859,
- 10,
- 859,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WJ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9.zone"),0]],
- _WG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 860,
- 10,
- 860,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WN_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_courante"),
- 0]],
- _WK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 861,
- 10,
- 861,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WR_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale"),
- 0]],
- _WO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 862,
- 10,
- 862,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WV_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17"),
- 0]],
- _WS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 863,
- 10,
- 863,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _WY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _WZ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat"),
- 0]],
- _WW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 864,
- 10,
- 864,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _W4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _W5_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement"),
- 0]],
- _W0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 865,
- 10,
- 865,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _W8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _W9_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),
- 0]],
- _W6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 866,
- 10,
- 866,
- 49,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xb_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement"),
- 0]],
- _W__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 867,
- 10,
- 867,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xe_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xf_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.charges_mensuelles_pr\xc3\xaat"),
- 0]],
- _Xc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 868,
- 10,
- 868,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1022,
- 3,
- 1022,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xj_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Xg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 869,
- 10,
- 869,
- 21,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xk_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Xl_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Xo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xp_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.redevance"),0]],
- _Xm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 948,
- 10,
- 948,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xt_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.mode_occupation"),0]],
- _Xq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 949,
- 10,
- 949,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Xw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Xx_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Xu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 950,
- 10,
- 950,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XB_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Xy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 951,
- 10,
- 951,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XF_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.situation_familiale_calcul_apl"),
- 0]],
- _XC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 952,
- 10,
- 952,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XJ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.zone"),0]],
- _XG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 953,
- 10,
- 953,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XN_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.date_courante"),0]],
- _XK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 954,
- 10,
- 954,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1021,
- 3,
- 1021,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XT_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),
- 0]],
- _XO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 955,
- 10,
- 955,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _XU_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("logement_foyer"),
- [0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0]]],
- _XV_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("logement_foyer"),
- [0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0]]],
- _XY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _XZ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.loyer_principal"),0]],
- _XW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 790,
- 10,
- 790,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _X2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _X3_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("locatif.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _X0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 791,
- 10,
- 791,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _X6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _X7_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),
- 0]],
- _X4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 792,
- 10,
- 792,
- 55,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _X__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _X$_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.date_courante"),0]],
- _X8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 794,
- 10,
- 794,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Yc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yd_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("locatif.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Ya_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 795,
- 10,
- 795,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Yg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yh_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.situation_familiale_calcul_apl"),0]],
- _Ye_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 796,
- 10,
- 796,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Yk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yl_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.zone"),0]],
- _Yi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 797,
- 10,
- 797,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Yo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yp_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.logement_est_chambre"),0]],
- _Ym_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 798,
- 10,
- 798,
- 30,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ys_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yt_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),
- 0]],
- _Yq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 799,
- 10,
- 799,
- 66,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Yw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Yx_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.type_aide"),0]],
- _Yu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 801,
- 10,
- 801,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _YA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YB_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.colocation"),0]],
- _Yy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 802,
- 10,
- 802,
- 20,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _YE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YF_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _YC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 803,
- 10,
- 803,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _YI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YJ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.logement_meubl\xc3\xa9_d842_2"),0]],
- _YG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 806,
- 10,
- 806,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _YO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1020,
- 3,
- 1020,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _YP_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("locatif.changement_logement_d842_4"),0]],
- _YK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 807,
- 10,
- 807,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _YQ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("locatif"),
- [0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0]]],
- _YR_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,
- caml_string_of_jsbytes("locatif"),
- [0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0]]],
- _Y7_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _Y__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1025,
- 10,
- 1025,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Y8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1025,
- 10,
- 1025,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Y$_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogement"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _Zc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1603,
- 5,
- 1605,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Zb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1599,
- 5,
- 1601,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Za_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1595,
- 5,
- 1597,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _V6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 462,
- 14,
- 462,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _V5_=[0,0],
- _V0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1148,
- 5,
- 1151,
- 28,
- [0,
- caml_string_of_jsbytes("Article L841-4"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VZ_=[0,0],
- _V1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 441,
- 10,
- 441,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1049,
- 14,
- 1049,
- 25,
- [0,
- caml_string_of_jsbytes("Article L841-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VT_=[0,0],
- _VU_=[0,0],
- _VV_=[1,0],
- _VW_=[2,0],
- _VX_=[0,0],
- _VK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1018,
- 5,
- 1022,
- 29,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 995,
- 5,
- 1006,
- 12,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VB_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("condition_2_r823_4"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _VC_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_2_r823_4"),0]],
- _VD_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("condition_2_r823_4"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _VE_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_2_r823_4"),0]],
- _VF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 978,
- 5,
- 979,
- 72,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vt_=[2,0],
- _Vy_=[1,0],
- _Vz_=[0,0],
- _Vu_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Vv_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _Vw_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Vx_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _VA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 937,
- 5,
- 964,
- 29,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vl_=[2,0],
- _Vq_=[1,0],
- _Vr_=[0,0],
- _Vm_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Vn_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _Vo_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,
- caml_string_of_jsbytes("droit_ouvert"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Vp_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _Vs_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 902,
- 5,
- 926,
- 11,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vg_=[0,0],
- _Vh_=[1,0],
- _Vi_=[3,0],
- _Vj_=[4,0],
- _Vk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 883,
- 5,
- 887,
- 52,
- [0,
- caml_string_of_jsbytes("Article L841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _VP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 856,
- 14,
- 856,
- 25,
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]],
- _Va_=[0,0],
- _U$_=[2,0],
- _U7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 467,
- 14,
- 467,
- 56,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 469,
- 14,
- 469,
- 63,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4418,
- 5,
- 4426,
- 28,
- [0,
- caml_string_of_jsbytes("Article R842-5"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _UW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4399,
- 5,
- 4406,
- 28,
- [0,
- caml_string_of_jsbytes("Article R842-5"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _UX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4380,
- 5,
- 4389,
- 28,
- [0,
- caml_string_of_jsbytes("Article R842-5"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _UY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _US_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 1136,
- 5,
- 1136,
- 73,
- [0,
- caml_string_of_jsbytes("Article L841-3"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _UO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 432,
- 11,
- 432,
- 50,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 432,
- 11,
- 432,
- 50,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4829,
- 9,
- 4829,
- 55,
- [0,
- caml_string_of_jsbytes("Article R842-14"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _UG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UI_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),
- 0]],
- _UA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4828,
- 9,
- 4828,
- 68,
- [0,
- caml_string_of_jsbytes("Article R842-14"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _UB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UD_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),
- 0]],
- _Uw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 459,
- 14,
- 459,
- 47,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Us_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 458,
- 14,
- 458,
- 43,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 457,
- 14,
- 457,
- 40,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ui_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 455,
- 14,
- 455,
- 46,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uh_=[6,0],
- _Ud_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 451,
- 14,
- 451,
- 56,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uc_=[1,0],
- _T__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 450,
- 14,
- 450,
- 50,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _T6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4241,
- 14,
- 4241,
- 28,
- [0,
- caml_string_of_jsbytes("Article D841-1"),
- [0,
- caml_string_of_jsbytes("Chapitre 1 : Champ d'application"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _T7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 433,
- 11,
- 433,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _T5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 433,
- 11,
- 433,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _T8_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,caml_string_of_jsbytes("dur\xc3\xa9e_l841_1_3"),0]],
- _T$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 435,
- 3,
- 435,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ua_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]],
- _T9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 46,
- 10,
- 46,
- 23,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Ue_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 435,
- 3,
- 435,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uf_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("prestations_familiales.prestation_courante"),
- 0]],
- _Ub_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 47,
- 10,
- 47,
- 29,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Uj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 435,
- 3,
- 435,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uk_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]],
- _Ug_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 48,
- 10,
- 48,
- 19,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Ul_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("prestations_familiales"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- 0]]],
- _Um_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("prestations_familiales"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- 0]]],
- _Up_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uq_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"),
- 0]],
- _Un_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 311,
- 10,
- 311,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ut_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uu_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"),
- 0]],
- _Ur_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 312,
- 10,
- 312,
- 19,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ux_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 436,
- 3,
- 436,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Uy_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"),
- 0]],
- _Uv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 313,
- 17,
- 313,
- 30,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UJ_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _UK_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _UP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 432,
- 11,
- 432,
- 50,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 432,
- 11,
- 432,
- 50,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UQ_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_sociale"),
- 0]],
- _U0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _UR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 429,
- 11,
- 429,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U1_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,caml_string_of_jsbytes("condition_logement"),0]],
- _U4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 444,
- 10,
- 444,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 444,
- 10,
- 444,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U5_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"),
- 0]],
- _U8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 443,
- 10,
- 443,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 443,
- 10,
- 443,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U9_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"),
- 0]],
- _Vc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 440,
- 10,
- 440,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _U__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 440,
- 10,
- 440,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Vd_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),
- 0]],
- _VQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ve_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 431,
- 11,
- 431,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VR_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),
- 0]],
- _V2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 441,
- 10,
- 441,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _VS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 441,
- 10,
- 441,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _V3_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],
- _V7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 442,
- 10,
- 442,
- 33,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _V4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 442,
- 10,
- 442,
- 33,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _V8_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement"),
- 0]],
- _T1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 584,
- 5,
- 586,
- 36,
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]],
- _T2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 397,
- 10,
- 397,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _T0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 397,
- 10,
- 397,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 408,
- 14,
- 408,
- 56,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 410,
- 14,
- 410,
- 63,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 661,
- 5,
- 671,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _TM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 684,
- 5,
- 695,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _TN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 634,
- 5,
- 641,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _TO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3758,
- 5,
- 3763,
- 30,
- [0,
- caml_string_of_jsbytes("Article R832-21"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _TF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TA_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _TB_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"),
- 0]],
- _TC_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _TD_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"),
- 0]],
- _Tz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 718,
- 5,
- 721,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _TG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tv_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Tw_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"),
- 0]],
- _Tx_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ty_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"),
- 0]],
- _Tu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 613,
- 5,
- 616,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-1"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _TH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 406,
- 14,
- 406,
- 47,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 405,
- 14,
- 405,
- 43,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 404,
- 14,
- 404,
- 40,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 756,
- 5,
- 769,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _S$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 737,
- 5,
- 742,
- 30,
- [0,
- caml_string_of_jsbytes("Article L831-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Ta_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 733,
- 31,
- 733,
- 54,
- [0,
- caml_string_of_jsbytes("Article L831-2"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Tb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 393,
- 11,
- 393,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 393,
- 11,
- 393,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 393,
- 11,
- 393,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3085,
- 5,
- 3088,
- 46,
- [0,
- caml_string_of_jsbytes("Article R832-7"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _SX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3050,
- 5,
- 3052,
- 47,
- [0,
- caml_string_of_jsbytes("Article R832-5"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _SY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ST_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 392,
- 11,
- 392,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S1_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"),
- 0]],
- _S5_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"),
- 0]],
- _Tc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _S6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 391,
- 11,
- 391,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Td_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("condition_logement_pr\xc3\xaat"),0]],
- _Tg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 395,
- 3,
- 395,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Th_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"),
- 0]],
- _Te_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 311,
- 10,
- 311,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 395,
- 3,
- 395,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tl_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"),
- 0]],
- _Ti_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 312,
- 10,
- 312,
- 19,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _To_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 395,
- 3,
- 395,
- 22,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tp_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"),
- 0]],
- _Tm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 313,
- 17,
- 313,
- 30,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Tq_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _Tr_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _TP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ts_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 390,
- 11,
- 390,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TQ_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("condition_logement_bailleur"),0]],
- _TT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 399,
- 10,
- 399,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 399,
- 10,
- 399,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TU_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"),
- 0]],
- _TX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 398,
- 10,
- 398,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 398,
- 10,
- 398,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TY_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"),
- 0]],
- _T3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 397,
- 10,
- 397,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _TZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 397,
- 10,
- 397,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _T4_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]],
- _SQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2174,
- 14,
- 2174,
- 40,
- [0,
- caml_string_of_jsbytes("Article D823-22"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _SL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 556,
- 5,
- 559,
- 43,
- [0,
- caml_string_of_jsbytes("Article L823-8"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _SM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 485,
- 11,
- 485,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 485,
- 11,
- 485,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4394,
- 14,
- 4394,
- 29,
- [0,
- caml_string_of_jsbytes("Article 45"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _SB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2136,
- 6,
- 2144,
- 77,
- [0,
- caml_string_of_jsbytes("Article D823-20"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _SC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 484,
- 11,
- 484,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 484,
- 11,
- 484,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Su_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 498,
- 14,
- 498,
- 43,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 497,
- 14,
- 497,
- 39,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 496,
- 14,
- 496,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 500,
- 14,
- 500,
- 65,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2127,
- 5,
- 2132,
- 71,
- [0,
- caml_string_of_jsbytes("Article D823-20"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Sc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 483,
- 11,
- 483,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 483,
- 11,
- 483,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _R8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2148,
- 14,
- 2148,
- 47,
- [0,
- caml_string_of_jsbytes("Article D823-20"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _R9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 486,
- 11,
- 486,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _R7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 486,
- 11,
- 486,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _R__=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),
- 0]],
- _Sd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 483,
- 11,
- 483,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _R$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 483,
- 11,
- 483,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Se_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,caml_string_of_jsbytes("condition_rang_enfant"),0]],
- _Sh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 490,
- 3,
- 490,
- 40,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Si_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("base_mensuelle_allocations_familiales.date_courante"),
- 0]],
- _Sf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 5,
- 10,
- 5,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _Sj_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("base_mensuelle_allocations_familiales"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _Sk_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("base_mensuelle_allocations_familiales"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _Sn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 489,
- 3,
- 489,
- 18,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _So_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),
- 0]],
- _Sl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 311,
- 10,
- 311,
- 16,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 489,
- 3,
- 489,
- 18,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ss_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],
- _Sp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 312,
- 10,
- 312,
- 19,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 489,
- 3,
- 489,
- 18,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sw_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),
- 0]],
- _St_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 313,
- 17,
- 313,
- 30,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sx_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _Sy_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"),
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- 0]]],
- _SD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 484,
- 11,
- 484,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Sz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 484,
- 11,
- 484,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SE_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),
- 0]],
- _SH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 487,
- 11,
- 487,
- 26,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 487,
- 11,
- 487,
- 26,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SI_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,caml_string_of_jsbytes("plafond_d823_22"),0]],
- _SN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 485,
- 11,
- 485,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 485,
- 11,
- 485,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SO_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]],
- _SR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 493,
- 10,
- 493,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 493,
- 10,
- 493,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _SS_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),
- 0]],
- _R1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1424,
- 14,
- 1424,
- 33,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _RX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1429,
- 14,
- 1429,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _RL_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _RM_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RN_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _RO_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RP_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _RQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _RS_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _RU_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RV_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _RW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _RY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 771,
- 10,
- 771,
- 32,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 771,
- 10,
- 771,
- 32,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1531,
- 14,
- 1531,
- 48,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _RB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1516,
- 14,
- 1516,
- 32,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rx_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1530,
- 14,
- 1530,
- 31,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rt_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1523,
- 5,
- 1523,
- 69,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1510,
- 14,
- 1510,
- 42,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rl_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1484,
- 14,
- 1484,
- 26,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1490,
- 14,
- 1490,
- 52,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Rd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1478,
- 14,
- 1478,
- 47,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Q$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1487,
- 14,
- 1487,
- 35,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Q7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1504,
- 14,
- 1504,
- 67,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Q3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1473,
- 14,
- 1473,
- 49,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1499,
- 14,
- 1499,
- 37,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1587,
- 14,
- 1587,
- 38,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1488,
- 14,
- 1488,
- 42,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1485,
- 14,
- 1485,
- 33,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1492,
- 14,
- 1492,
- 59,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _QD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1480,
- 14,
- 1480,
- 54,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Qz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1474,
- 14,
- 1474,
- 56,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Qv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1496,
- 14,
- 1496,
- 44,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Qp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1489,
- 14,
- 1489,
- 47,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ql_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1580,
- 14,
- 1580,
- 53,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Qj_=[0,0],
- _Qk_=[0,0],
- _Qf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1574,
- 14,
- 1574,
- 43,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Qd_=[0,0],
- _Qe_=[0,0],
- _P$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1486,
- 14,
- 1486,
- 38,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _P7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1569,
- 14,
- 1569,
- 57,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _P3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1564,
- 14,
- 1564,
- 45,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1559,
- 14,
- 1559,
- 54,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1553,
- 14,
- 1553,
- 73,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PR_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1548,
- 14,
- 1548,
- 53,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1542,
- 14,
- 1542,
- 55,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PL_=[2,0],
- _PM_=[2,0],
- _PH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1494,
- 14,
- 1494,
- 64,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _PD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1482,
- 14,
- 1482,
- 59,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Pz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1476,
- 14,
- 1476,
- 61,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Pv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1537,
- 14,
- 1537,
- 55,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Pr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 71,
- 14,
- 71,
- 44,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Pl_=[0,0],
- _Pm_=[1,0],
- _Pn_=[1,0],
- _Po_=[1,0],
- _Pp_=[0,0],
- _Pq_=[1,0],
- _Ph_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2041,
- 14,
- 2041,
- 31,
- [0,
- caml_string_of_jsbytes("Article D823-17"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Pd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1416,
- 14,
- 1416,
- 34,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _O__=[0,0],
- _O$_=[2,0],
- _Pa_=[1,0],
- _Pb_=[0,0],
- _Pc_=[1,0],
- _Pe_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 762,
- 11,
- 762,
- 31,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _O9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 762,
- 11,
- 762,
- 31,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Pf_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]],
- _Pi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 756,
- 10,
- 756,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Pg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 756,
- 10,
- 756,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Pj_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]],
- _Ps_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 763,
- 11,
- 763,
- 41,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Pk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 763,
- 11,
- 763,
- 41,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Pt_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]],
- _Pw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Px_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale"),
- 0]],
- _Pu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 689,
- 10,
- 689,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PB_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Py_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 690,
- 10,
- 690,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PF_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _PC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 691,
- 10,
- 691,
- 35,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl"),
- 0]],
- _PG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 692,
- 10,
- 692,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PP_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement"),
- 0]],
- _PK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 693,
- 10,
- 693,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat"),
- 0]],
- _PQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 694,
- 10,
- 694,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _PX_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),
- 0]],
- _PU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 695,
- 10,
- 695,
- 49,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P1_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement"),
- 0]],
- _PY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 696,
- 10,
- 696,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P5_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _P2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 697,
- 10,
- 697,
- 21,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _P9_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17"),
- 0]],
- _P6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 698,
- 10,
- 698,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9.zone"),0]],
- _P__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 699,
- 10,
- 699,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qh_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.type_pr\xc3\xaat"),
- 0]],
- _Qc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 700,
- 10,
- 700,
- 19,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qn_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.anciennet\xc3\xa9_logement"),
- 0]],
- _Qi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 701,
- 10,
- 701,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 767,
- 3,
- 767,
- 22,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qr_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("accession_propri\xc3\xa9t\xc3\xa9.date_courante"),
- 0]],
- _Qo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 702,
- 10,
- 702,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qs_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Qt_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("accession_propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Qw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Qx_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.mode_occupation"),0]],
- _Qu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 632,
- 10,
- 632,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QB_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Qy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 633,
- 10,
- 633,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QF_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _QC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 634,
- 10,
- 634,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("logement_foyer.situation_familiale_calcul_apl"),
- 0]],
- _QG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 635,
- 10,
- 635,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QN_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.zone"),0]],
- _QK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 636,
- 10,
- 636,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QR_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.date_courante"),0]],
- _QO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 637,
- 10,
- 637,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 766,
- 3,
- 766,
- 17,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QV_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("logement_foyer.redevance"),0]],
- _QS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 638,
- 10,
- 638,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _QW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _QX_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _Q0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Q1_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.loyer_principal"),0]],
- _QY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 558,
- 10,
- 558,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Q4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Q5_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("locatif.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Q2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 559,
- 10,
- 559,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Q8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Q9_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),
- 0]],
- _Q6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 560,
- 10,
- 560,
- 55,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Ra_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.date_courante"),0]],
- _Q__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 562,
- 10,
- 562,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Re_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rf_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("locatif.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Rc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 563,
- 10,
- 563,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Ri_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rj_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.situation_familiale_calcul_apl"),0]],
- _Rg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 564,
- 10,
- 564,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rn_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.zone"),0]],
- _Rk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 565,
- 10,
- 565,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rr_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.logement_est_chambre"),0]],
- _Ro_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 566,
- 10,
- 566,
- 30,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Ru_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rv_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),
- 0]],
- _Rs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 567,
- 10,
- 567,
- 66,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Ry_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Rz_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.type_aide"),0]],
- _Rw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 569,
- 10,
- 569,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RD_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("locatif.colocation"),0]],
- _RA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 570,
- 10,
- 570,
- 20,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 765,
- 3,
- 765,
- 10,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RH_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes
- ("locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _RE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 571,
- 10,
- 571,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _RI_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("locatif"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- 0]]],
- _RJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,
- caml_string_of_jsbytes("locatif"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- 0]]],
- _RZ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _R2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 770,
- 10,
- 770,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _R0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 770,
- 10,
- 770,
- 29,
- [0,
- caml_string_of_jsbytes("Tous secteurs"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _R3_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _R6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1469,
- 5,
- 1471,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _R5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1465,
- 5,
- 1467,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _R4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1461,
- 5,
- 1463,
- 15,
- [0,
- caml_string_of_jsbytes("Article D823-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _O6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4569,
- 14,
- 4569,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _OY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _OZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _O0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _O1_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _O2_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _O3_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _O4_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _O5_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _O7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 905,
- 10,
- 905,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _OX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 905,
- 10,
- 905,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _OU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4546,
- 14,
- 4546,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Og_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Oh_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Oi_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Oj_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Ok_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ol_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Om_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _On_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Oo_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Op_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Oq_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Or_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Os_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ot_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ou_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ov_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ow_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ox_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Oy_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Oz_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _OB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _OD_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OE_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _OF_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _OG_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _OH_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _OI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _OJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _OL_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OM_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _ON_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _OO_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _OP_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _OQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _OR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OS_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _OT_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 904,
- 10,
- 904,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Of_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 904,
- 10,
- 904,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Oc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4527,
- 14,
- 4527,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _NQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _NR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _NS_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _NT_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _NU_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _NV_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _NW_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _NX_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _NY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _NZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _N0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _N1_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _N2_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _N3_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _N4_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _N5_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _N6_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _N7_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _N8_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _N9_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _N__=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _N$_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _Oa_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ob_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _Od_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 903,
- 10,
- 903,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _NP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 903,
- 10,
- 903,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _NM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4439,
- 14,
- 4439,
- 33,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _NI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4708,
- 14,
- 4708,
- 47,
- [0,
- caml_string_of_jsbytes("Article D842-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _NA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _NB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _NC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ND_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _NE_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _NF_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _NG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _NH_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _NJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 884,
- 11,
- 884,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 884,
- 11,
- 884,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nw_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4468,
- 14,
- 4468,
- 41,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ns_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4494,
- 14,
- 4494,
- 33,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _No_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4479,
- 14,
- 4479,
- 33,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Nj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4731,
- 7,
- 4734,
- 45,
- [0,
- caml_string_of_jsbytes("Article D842-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Nk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 880,
- 11,
- 880,
- 47,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ni_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4719,
- 14,
- 4719,
- 50,
- [0,
- caml_string_of_jsbytes("Article D842-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Nc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4465,
- 14,
- 4465,
- 62,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Nd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ne_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),
- 0]],
- _M$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4458,
- 14,
- 4458,
- 61,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Na_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nb_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.condition_2_du_832_25"),
- 0]],
- _M8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 929,
- 14,
- 929,
- 49,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _M4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 939,
- 14,
- 939,
- 53,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _M0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 937,
- 14,
- 937,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 935,
- 14,
- 935,
- 70,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 933,
- 14,
- 933,
- 65,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 931,
- 14,
- 931,
- 67,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 908,
- 14,
- 908,
- 55,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MI_=[0,[0,[0,0],1,1,1,1]],
- _MJ_=[1,0],
- _MC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4501,
- 14,
- 4501,
- 70,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _My_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4498,
- 14,
- 4498,
- 69,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Mu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4499,
- 14,
- 4499,
- 75,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Mp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4650,
- 5,
- 4650,
- 44,
- [0,
- caml_string_of_jsbytes("Article D842-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _L$_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ma_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mb_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Mc_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Md_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Me_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mf_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Mg_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mh_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Mi_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mj_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Mk_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Ml_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Mm_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mn_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Mo_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Mq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 875,
- 11,
- 875,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _L__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4632,
- 14,
- 4632,
- 39,
- [0,
- caml_string_of_jsbytes("Article D842-9"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _L6_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _L7_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _L8_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _L9_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _L1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4795,
- 5,
- 4795,
- 28,
- [0,
- caml_string_of_jsbytes("Article D842-12"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _L2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 857,
- 10,
- 857,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _L0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4785,
- 14,
- 4785,
- 41,
- [0,
- caml_string_of_jsbytes("Article D842-12"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _LV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4178,
- 24,
- 4178,
- 56,
- [0,
- caml_string_of_jsbytes("Article 37"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _LN_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _LO_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LP_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _LQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _LS_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LT_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _LU_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 878,
- 10,
- 878,
- 26,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4122,
- 14,
- 4122,
- 46,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _LI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _LJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _LL_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 878,
- 10,
- 878,
- 26,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 878,
- 10,
- 878,
- 26,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4697,
- 15,
- 4697,
- 37,
- [0,
- caml_string_of_jsbytes("Article D842-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _LF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 883,
- 11,
- 883,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 883,
- 11,
- 883,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4756,
- 6,
- 4762,
- 6,
- [0,
- caml_string_of_jsbytes("Article D842-12"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _LA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 881,
- 11,
- 881,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lx_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4774,
- 5,
- 4775,
- 59,
- [0,
- caml_string_of_jsbytes("Article D842-12"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ly_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 881,
- 11,
- 881,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ls_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3124,
- 5,
- 3124,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3170,
- 5,
- 3170,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lo_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3216,
- 5,
- 3216,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3262,
- 5,
- 3262,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Ln_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3308,
- 5,
- 3308,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Ll_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Li_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3354,
- 5,
- 3354,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3400,
- 5,
- 3400,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Le_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3446,
- 5,
- 3446,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3491,
- 5,
- 3491,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Ld_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _La_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3538,
- 5,
- 3538,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Lb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3583,
- 5,
- 3583,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3628,
- 5,
- 3628,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3673,
- 5,
- 3673,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3718,
- 5,
- 3718,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3763,
- 5,
- 3763,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _K0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3808,
- 5,
- 3808,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _K1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3853,
- 5,
- 3853,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3898,
- 5,
- 3898,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3943,
- 5,
- 3943,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KS_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 3988,
- 5,
- 3988,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4033,
- 5,
- 4033,
- 64,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4078,
- 5,
- 4078,
- 33,
- [0,
- caml_string_of_jsbytes("Article 33"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 877,
- 10,
- 877,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4513,
- 14,
- 4513,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _KL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 902,
- 10,
- 902,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 902,
- 10,
- 902,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4198,
- 5,
- 4198,
- 16,
- [0,
- caml_string_of_jsbytes("Article 37"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _KG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 872,
- 11,
- 872,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4144,
- 14,
- 4144,
- 41,
- [0,
- caml_string_of_jsbytes("Article 34"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Ky_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 941,
- 14,
- 941,
- 50,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ks_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4505,
- 14,
- 4505,
- 64,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ko_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4503,
- 14,
- 4503,
- 59,
- [0,
- caml_string_of_jsbytes("Article D842-6"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Kk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4236,
- 14,
- 4236,
- 33,
- [0,
- caml_string_of_jsbytes("Article 39"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Kg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4225,
- 14,
- 4225,
- 33,
- [0,
- caml_string_of_jsbytes("Article 38"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Kc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4243,
- 14,
- 4243,
- 41,
- [0,
- caml_string_of_jsbytes("Article 39"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _J__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4218,
- 14,
- 4218,
- 41,
- [0,
- caml_string_of_jsbytes("Article 38"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _J6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4166,
- 14,
- 4166,
- 41,
- [0,
- caml_string_of_jsbytes("Article 36"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _J2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 278,
- 14,
- 278,
- 36,
- [0,
- caml_string_of_jsbytes("Article premier"),
- [0,
- caml_string_of_jsbytes
- ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"),
- 0]]],
- _JY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4156,
- 14,
- 4156,
- 40,
- [0,
- caml_string_of_jsbytes("Article 35"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul des allocations de logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _JZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 879,
- 11,
- 879,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _JX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 879,
- 11,
- 879,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d842_6"),0]],
- _J3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 882,
- 11,
- 882,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 882,
- 11,
- 882,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J4_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]],
- _J7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 885,
- 11,
- 885,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 885,
- 11,
- 885,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J8_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_minimal_aide_d842_6"),0]],
- _J$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 886,
- 11,
- 886,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _J9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 886,
- 11,
- 886,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ka_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d842_11"),0]],
- _Kd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 887,
- 11,
- 887,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Kb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 887,
- 11,
- 887,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ke_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d842_12"),0]],
- _Kh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 888,
- 11,
- 888,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Kf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 888,
- 11,
- 888,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ki_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_d842_11"),0]],
- _Kl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 889,
- 11,
- 889,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Kj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 889,
- 11,
- 889,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Km_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_d842_12"),0]],
- _Kp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 891,
- 3,
- 891,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Kq_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _Kn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 681,
- 10,
- 681,
- 35,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Kt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 891,
- 3,
- 891,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ku_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.situation_familiale_calcul_apl"),
- 0]],
- _Kr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 682,
- 10,
- 682,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Kv_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Kw_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _Kz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 894,
- 3,
- 894,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]],
- _Kx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 544,
- 10,
- 544,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _KC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _KH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 872,
- 11,
- 872,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 872,
- 11,
- 872,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _KI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]],
- _KM_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _Lv_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"),
- 0]],
- _LB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 881,
- 11,
- 881,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Lw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 881,
- 11,
- 881,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("seuil_minimal_ressources_m\xc3\xa9nage"),0]],
- _LG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _LY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"),
- 0]],
- _L3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 857,
- 10,
- 857,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _LZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 857,
- 10,
- 857,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _L4_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"),
- 0]],
- _Mr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 875,
- 11,
- 875,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _L5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 875,
- 11,
- 875,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ms_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d842_6"),0]],
- _Mv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 896,
- 3,
- 896,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Mw_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Mt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 613,
- 10,
- 613,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Mz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 896,
- 3,
- 896,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"),
- 0]],
- _Mx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 614,
- 10,
- 614,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _MD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 896,
- 3,
- 896,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ME_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"),
- 0]],
- _MB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 615,
- 10,
- 615,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _MF_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _MG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _ML_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MM_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer.mode_occupation"),
- 0]],
- _MH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 632,
- 10,
- 632,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _MP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _MN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 633,
- 10,
- 633,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _MT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MU_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _MR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 634,
- 10,
- 634,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _MX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _MY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"),
- 0]],
- _MV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 635,
- 10,
- 635,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _M1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _M2_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]],
- _MZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 636,
- 10,
- 636,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _M5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _M6_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]],
- _M3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 637,
- 10,
- 637,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _M9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 892,
- 3,
- 892,
- 28,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _M__=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]],
- _M7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 638,
- 10,
- 638,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Nf_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _Ng_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _Nl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 880,
- 11,
- 880,
- 47,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 880,
- 11,
- 880,
- 47,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nm_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("seuil_minimal_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Np_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 871,
- 11,
- 871,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 871,
- 11,
- 871,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nq_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]],
- _Nt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 873,
- 11,
- 873,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 873,
- 11,
- 873,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nu_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]],
- _Nx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 874,
- 11,
- 874,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Nv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 874,
- 11,
- 874,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ny_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]],
- _NK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _NN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 899,
- 10,
- 899,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _NL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 899,
- 10,
- 899,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _NO_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _Oe_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _OW_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _O8_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _JU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4983,
- 14,
- 4983,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _JM_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _JN_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _JO_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _JP_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _JQ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _JR_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _JS_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _JT_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _JV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 982,
- 10,
- 982,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _JL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 982,
- 10,
- 982,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _JI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4959,
- 14,
- 4959,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _I6_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _I7_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _I8_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _I9_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _I__=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _I$_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ja_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jb_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Jc_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jd_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Je_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jf_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Jg_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jh_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ji_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jj_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Jk_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jl_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Jm_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jn_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Jo_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jp_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Jq_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jr_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Js_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jt_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ju_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jv_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Jw_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Jx_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _Jy_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Jz_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _JA_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _JB_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _JC_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _JD_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _JE_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _JF_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _JG_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_redevance"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _JH_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _JJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 981,
- 10,
- 981,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _I5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 981,
- 10,
- 981,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _I2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4947,
- 14,
- 4947,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _IU_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IV_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _IW_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _IX_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _IY_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IZ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _I0_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _I1_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _I3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 980,
- 10,
- 980,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _IT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 980,
- 10,
- 980,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _IQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4924,
- 14,
- 4924,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Is_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _It_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _Iu_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Iv_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _Iw_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ix_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Iy_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Iz_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _IA_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IB_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _IC_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ID_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _IE_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IF_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _IG_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _IH_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _II_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IJ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _IK_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _IL_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _IM_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _IN_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _IO_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _IP_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _IR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 979,
- 10,
- 979,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ir_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 979,
- 10,
- 979,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Io_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4844,
- 14,
- 4844,
- 33,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ik_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 5034,
- 14,
- 5034,
- 47,
- [0,
- caml_string_of_jsbytes("Article D842-17"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Ic_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Id_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _Ie_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _If_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _Ig_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ih_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _Ii_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ij_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _Il_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 959,
- 11,
- 959,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ib_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 959,
- 11,
- 959,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4903,
- 14,
- 4903,
- 27,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _H6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 5025,
- 14,
- 5025,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-17"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _H7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 958,
- 11,
- 958,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 958,
- 11,
- 958,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4865,
- 14,
- 4865,
- 41,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _HW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4901,
- 14,
- 4901,
- 70,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _HS_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4891,
- 14,
- 4891,
- 69,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _HO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4892,
- 14,
- 4892,
- 75,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _HK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4911,
- 14,
- 4911,
- 36,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _HL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 978,
- 10,
- 978,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 978,
- 10,
- 978,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4307,
- 6,
- 4307,
- 74,
- [0,
- caml_string_of_jsbytes("Article 43"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _HG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4342,
- 6,
- 4343,
- 38,
- [0,
- caml_string_of_jsbytes("Article 43"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _HE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4360,
- 6,
- 4361,
- 24,
- [0,
- caml_string_of_jsbytes("Article 43"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _HB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4324,
- 6,
- 4325,
- 41,
- [0,
- caml_string_of_jsbytes("Article 43"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _HC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4265,
- 14,
- 4265,
- 41,
- [0,
- caml_string_of_jsbytes("Article 40"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Hp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4862,
- 14,
- 4862,
- 61,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Hq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hr_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.condition_2_du_832_25"),
- 0]],
- _Hm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 987,
- 14,
- 987,
- 49,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 997,
- 14,
- 997,
- 53,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _He_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 995,
- 14,
- 995,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ha_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 993,
- 14,
- 993,
- 70,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 991,
- 14,
- 991,
- 65,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 989,
- 14,
- 989,
- 67,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 985,
- 14,
- 985,
- 55,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 999,
- 14,
- 999,
- 50,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4897,
- 14,
- 4897,
- 64,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _GK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4895,
- 14,
- 4895,
- 59,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _GG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4899,
- 14,
- 4899,
- 55,
- [0,
- caml_string_of_jsbytes("Article D842-15"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _GC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4379,
- 14,
- 4379,
- 51,
- [0,
- caml_string_of_jsbytes("Article 44"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Gy_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4278,
- 14,
- 4278,
- 41,
- [0,
- caml_string_of_jsbytes("Article 41"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Gu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 4289,
- 14,
- 4289,
- 42,
- [0,
- caml_string_of_jsbytes("Article 42"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _Gv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 960,
- 11,
- 960,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 960,
- 11,
- 960,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gw_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_minimal_aide_d842_15"),0]],
- _Gz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 961,
- 11,
- 961,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 961,
- 11,
- 961,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GA_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d842_15"),0]],
- _GD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 962,
- 11,
- 962,
- 48,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 962,
- 11,
- 962,
- 48,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GE_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("montant_minimal_d\xc3\xa9pense_nette_d842_17"),
- 0]],
- _GH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 968,
- 3,
- 968,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GI_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"),
- 0]],
- _GF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 625,
- 10,
- 625,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _GL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 968,
- 3,
- 968,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GM_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _GJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 626,
- 10,
- 626,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _GP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 968,
- 3,
- 968,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GQ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.situation_familiale_calcul_apl"),
- 0]],
- _GN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 627,
- 10,
- 627,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _GR_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]],
- _GS_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]],
- _GV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 971,
- 3,
- 971,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GW_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]],
- _GT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 544,
- 10,
- 544,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _GX_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _GY_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _G1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G2_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer.mode_occupation"),
- 0]],
- _GZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 632,
- 10,
- 632,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _G5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G6_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _G3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 633,
- 10,
- 633,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _G9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _G__=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _G7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 634,
- 10,
- 634,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Hb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hc_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"),
- 0]],
- _G$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 635,
- 10,
- 635,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Hf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hg_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]],
- _Hd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 636,
- 10,
- 636,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Hj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hk_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]],
- _Hh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 637,
- 10,
- 637,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Hn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 969,
- 3,
- 969,
- 28,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ho_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]],
- _Hl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 638,
- 10,
- 638,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Hs_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _Ht_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_apl_logement_foyer"),
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- 0]]],
- _Hw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 965,
- 10,
- 965,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 965,
- 10,
- 965,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hx_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]],
- _HH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Hy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 964,
- 10,
- 964,
- 27,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HI_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"),0]],
- _HM_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _HP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 973,
- 3,
- 973,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HQ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _HN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 613,
- 10,
- 613,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _HT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 973,
- 3,
- 973,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HU_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"),
- 0]],
- _HR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 614,
- 10,
- 614,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _HX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 973,
- 3,
- 973,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _HY_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"),
- 0]],
- _HV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 615,
- 10,
- 615,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _HZ_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _H0_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _H3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 963,
- 10,
- 963,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 963,
- 10,
- 963,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H4_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]],
- _H8_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]],
- _H$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 966,
- 10,
- 966,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _H9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 966,
- 10,
- 966,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ia_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("loyer_minimal"),0]],
- _Im_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _Ip_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 976,
- 10,
- 976,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _In_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 976,
- 10,
- 976,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Iq_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _IS_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"),
- 0]],
- _I4_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]],
- _JK_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _JW_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Gp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4338,
- 24,
- 4338,
- 43,
- [0,
- caml_string_of_jsbytes("Article D842-4"),
- [0,
- caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Gq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 811,
- 10,
- 811,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Go_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 846,
- 14,
- 846,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4346,
- 24,
- 4346,
- 46,
- [0,
- caml_string_of_jsbytes("Article D842-4"),
- [0,
- caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Gk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 813,
- 10,
- 813,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 847,
- 14,
- 847,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ge_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Gf_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Gg_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Gh_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _Gl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 813,
- 10,
- 813,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 813,
- 10,
- 813,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 842,
- 14,
- 842,
- 59,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 840,
- 14,
- 840,
- 43,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 838,
- 14,
- 838,
- 42,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 834,
- 5,
- 835,
- 63,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 831,
- 14,
- 831,
- 53,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 829,
- 14,
- 829,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 827,
- 14,
- 827,
- 63,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 825,
- 14,
- 825,
- 58,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 823,
- 14,
- 823,
- 46,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 820,
- 14,
- 820,
- 78,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Fw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 818,
- 14,
- 818,
- 60,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Fr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4278,
- 5,
- 4278,
- 27,
- [0,
- caml_string_of_jsbytes("Article D842-2"),
- [0,
- caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"),
- [0,
- caml_string_of_jsbytes("Titre IV : Allocations de Logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Fs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Fq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 816,
- 14,
- 816,
- 48,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ft_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Fu_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.loyer_principal"),0]],
- _Fp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 558,
- 10,
- 558,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Fx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Fy_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _Fv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 559,
- 10,
- 559,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FC_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),
- 0]],
- _Fz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 560,
- 10,
- 560,
- 55,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FG_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.date_courante"),0]],
- _FD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 562,
- 10,
- 562,
- 23,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FK_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _FH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 563,
- 10,
- 563,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FO_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.situation_familiale_calcul_apl"),
- 0]],
- _FL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 564,
- 10,
- 564,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FS_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.zone"),0]],
- _FP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 565,
- 10,
- 565,
- 14,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _FW_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.logement_est_chambre"),0]],
- _FT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 566,
- 10,
- 566,
- 30,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _FZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F0_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),
- 0]],
- _FX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 567,
- 10,
- 567,
- 66,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _F3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F4_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.type_aide"),0]],
- _F1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 569,
- 10,
- 569,
- 19,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _F7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _F8_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("calcul_apl_locatif.colocation"),0]],
- _F5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 570,
- 10,
- 570,
- 20,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _F$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 809,
- 3,
- 809,
- 21,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ga_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _F9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 571,
- 10,
- 571,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _Gb_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes("calcul_apl_locatif"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- 0]]],
- _Gc_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,
- caml_string_of_jsbytes("calcul_apl_locatif"),
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- 0]]],
- _Gm_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale"),0]],
- _Gr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 811,
- 10,
- 811,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 811,
- 10,
- 811,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Gs_=
- [0,
- caml_string_of_jsbytes("CalculAllocationLogementLocatif"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _Fj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"),
- 58,
- 5,
- 60,
- 60,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _Fk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fi_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"),
- 47,
- 5,
- 48,
- 78,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _Fl_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 41,
- 10,
- 41,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"),
- 66,
- 5,
- 69,
- 85,
- [0,
- caml_string_of_jsbytes("Article L512-3"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _Fd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 42,
- 10,
- 42,
- 29,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 42,
- 10,
- 42,
- 29,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fe_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 42,
- 10,
- 42,
- 29,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _Fa_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 42,
- 10,
- 42,
- 29,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _E8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"),
- 62,
- 18,
- 62,
- 41,
- [0,
- caml_string_of_jsbytes("Article R755-0-2"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _E9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 43,
- 11,
- 43,
- 27,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _E7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"),
- 31,
- 14,
- 31,
- 30,
- [0,
- caml_string_of_jsbytes("Article R512-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application."),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _EW_=[0,0],
- _EY_=[1,0],
- _EZ_=[2,0],
- _E0_=[3,0],
- _E1_=[4,0],
- _E2_=[5,0],
- _EX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"),
- 103,
- 5,
- 108,
- 30,
- [0,
- caml_string_of_jsbytes("Article L751-1"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"),
- [0,
- caml_string_of_jsbytes
- ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _E3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 45,
- 10,
- 45,
- 33,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 45,
- 10,
- 45,
- 33,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 52,
- 14,
- 52,
- 28,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 53,
- 14,
- 53,
- 32,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"),
- 21,
- 14,
- 21,
- 26,
- [0,
- caml_string_of_jsbytes("Article R512-2"),
- [0,
- caml_string_of_jsbytes("Chapitre 2 : Champ d'application."),
- [0,
- caml_string_of_jsbytes
- ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),
- [0,
- caml_string_of_jsbytes
- ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _EI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 44,
- 10,
- 44,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 44,
- 10,
- 44,
- 22,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EJ_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]],
- _EM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 49,
- 3,
- 49,
- 7,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EN_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic.date_courante"),0]],
- _EK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 9,
- 10,
- 9,
- 23,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _EQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 49,
- 3,
- 49,
- 7,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _ER_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]],
- _EO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 10,
- 10,
- 10,
- 19,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _ES_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]],
- _ET_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]],
- _E4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 45,
- 10,
- 45,
- 33,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _EU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 45,
- 10,
- 45,
- 33,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _E5_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]],
- _E__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 43,
- 11,
- 43,
- 27,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _E6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"),
- 43,
- 11,
- 43,
- 27,
- [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]],
- _E$_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]],
- _Ff_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]],
- _Fo_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"),
- [0,caml_string_of_jsbytes("droit_ouvert"),0]],
- _EB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 404,
- 14,
- 404,
- 32,
- [0,
- caml_string_of_jsbytes("Article R822-7"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Principes de neutralisation et d'abattement"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Ew_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 854,
- 6,
- 856,
- 35,
- [0,
- caml_string_of_jsbytes("Article R822-20"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Ex_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 537,
- 10,
- 537,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ev_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 124,
- 14,
- 124,
- 41,
- [0,
- caml_string_of_jsbytes("Article R822-2"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Er_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 457,
- 14,
- 457,
- 32,
- [0,
- caml_string_of_jsbytes("Article R822-8"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Principes de neutralisation et d'abattement"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _El_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 413,
- 14,
- 413,
- 65,
- [0,
- caml_string_of_jsbytes("Article R822-7"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Principes de neutralisation et d'abattement"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Eh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 519,
- 14,
- 519,
- 33,
- [0,
- caml_string_of_jsbytes("Article R822-10"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Principes de neutralisation et d'abattement"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Ed_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 129,
- 14,
- 129,
- 62,
- [0,
- caml_string_of_jsbytes("Article R822-2"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _D$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 532,
- 51,
- 532,
- 57,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 11,
- 14,
- 11,
- 41,
- [0,
- caml_string_of_jsbytes("Article 3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Dispositions applicables aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _D3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 21,
- 14,
- 21,
- 41,
- [0,
- caml_string_of_jsbytes("Article 4"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Dispositions applicables aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _DZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 522,
- 46,
- 522,
- 52,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 524,
- 10,
- 524,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 524,
- 10,
- 524,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D1_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"),
- 0]],
- _D4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 528,
- 11,
- 528,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 528,
- 11,
- 528,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D5_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_8"),0]],
- _D8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 530,
- 11,
- 530,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 530,
- 11,
- 530,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D9_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_7"),0]],
- _Ea_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 532,
- 11,
- 532,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _D__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 532,
- 11,
- 532,
- 42,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Eb_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("ressources_forfaitaires_r822_20"),0]],
- _Ee_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 526,
- 11,
- 526,
- 59,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ec_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 526,
- 11,
- 526,
- 59,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ef_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("ressources_personnes_vivant_habituellement_foyer"),
- 0]],
- _Ei_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 531,
- 11,
- 531,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Eg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 531,
- 11,
- 531,
- 30,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ej_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("abattement_r_822_10"),0]],
- _Em_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 534,
- 3,
- 534,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _En_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("base_mensuelle_allocations_familiales.date_courante"),
- 0]],
- _Ek_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 5,
- 10,
- 5,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _Eo_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("base_mensuelle_allocations_familiales"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _Ep_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("base_mensuelle_allocations_familiales"),
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]],
- _Es_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 527,
- 11,
- 527,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Eq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 527,
- 11,
- 527,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Et_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("abattement_r_822_8"),0]],
- _Ey_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 537,
- 10,
- 537,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Eu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 537,
- 10,
- 537,
- 37,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ez_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("ressources_prises_en_compte"),0]],
- _EC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 529,
- 11,
- 529,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _EA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 529,
- 11,
- 529,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Prise en compte des ressources pour les aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ED_=
- [0,
- caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("abattement_r_822_7"),0]],
- _EE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 142,
- 13,
- 143,
- 74,
- [0,
- caml_string_of_jsbytes("Article R822-2"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _EF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 142,
- 13,
- 143,
- 74,
- [0,
- caml_string_of_jsbytes("Article R822-2"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _DR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 361,
- 14,
- 361,
- 56,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 363,
- 14,
- 363,
- 63,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1138,
- 14,
- 1138,
- 49,
- [0,
- caml_string_of_jsbytes("Article R823-4"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _DF_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _DG_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"),
- 0]],
- _DH_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _DI_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"),
- 0]],
- _Dz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1213,
- 4,
- 1219,
- 49,
- [0,
- caml_string_of_jsbytes("Article R823-4"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _DA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Du_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("condition_2_r823_4"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Dv_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_2_r823_4"),0]],
- _Dw_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("condition_2_r823_4"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Dx_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_2_r823_4"),0]],
- _Dy_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1194,
- 5,
- 1194,
- 44,
- [0,
- caml_string_of_jsbytes("Article R823-4"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _DB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ds_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1150,
- 5,
- 1152,
- 44,
- [0,
- caml_string_of_jsbytes("Article R823-4"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Dt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 329,
- 11,
- 329,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dm_=[0,0],
- _Dl_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1173,
- 5,
- 1189,
- 10,
- [0,
- caml_string_of_jsbytes("Article R823-4"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Dn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 351,
- 10,
- 351,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 351,
- 10,
- 351,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Do_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 351,
- 10,
- 351,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 351,
- 10,
- 351,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Df_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 357,
- 5,
- 359,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 347,
- 10,
- 347,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _De_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 347,
- 10,
- 347,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Da_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 163,
- 14,
- 163,
- 31,
- [0,
- caml_string_of_jsbytes("Article L351-8"),
- [0,
- caml_string_of_jsbytes("Section 5 : Taux et montant de la pension"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),
- [0,
- caml_string_of_jsbytes
- ("Titre V : Assurance vieillesse - Assurance veuvage"),
- [0,
- caml_string_of_jsbytes
- ("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]],
- _C6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 72,
- 5,
- 74,
- 56,
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]],
- _C7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 328,
- 11,
- 328,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 65,
- 5,
- 68,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]],
- _C8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 328,
- 11,
- 328,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 328,
- 11,
- 328,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 285,
- 18,
- 285,
- 75,
- [0,
- caml_string_of_jsbytes("Article L822-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 341,
- 11,
- 341,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CU_=[4,0],
- _CV_=[5,0],
- _CW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 266,
- 18,
- 268,
- 45,
- [0,
- caml_string_of_jsbytes("Article L822-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 341,
- 11,
- 341,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 943,
- 5,
- 943,
- 59,
- [0,
- caml_string_of_jsbytes("Article R822-22"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 4 : Prise en compte du patrimoine"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _C0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 341,
- 11,
- 341,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CS_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 249,
- 33,
- 249,
- 58,
- [0,
- caml_string_of_jsbytes("Article L822-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 125,
- 14,
- 125,
- 32,
- [0,
- caml_string_of_jsbytes("Article L161-17-2"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Titre III: Titre III : Dispositions communes relatives au financement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _CI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1057,
- 5,
- 1064,
- 65,
- [0,
- caml_string_of_jsbytes("Article R822-25"),
- [0,
- caml_string_of_jsbytes
- ("Section 3 : Conditions relatives au logement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _CJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 323,
- 12,
- 323,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 323,
- 12,
- 323,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 323,
- 12,
- 323,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 171,
- 5,
- 177,
- 66,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 156,
- 5,
- 158,
- 30,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cy_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 125,
- 5,
- 131,
- 33,
- [0,
- caml_string_of_jsbytes("Article L822-2"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _CD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cs_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 381,
- 18,
- 381,
- 55,
- [0,
- caml_string_of_jsbytes("Article L822-10"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Ct_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 326,
- 11,
- 326,
- 62,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 326,
- 11,
- 326,
- 62,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 329,
- 5,
- 330,
- 35,
- [0,
- caml_string_of_jsbytes("Article D815-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]],
- _Cn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ck_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 334,
- 5,
- 335,
- 35,
- [0,
- caml_string_of_jsbytes("Article D815-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]],
- _Cl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ci_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 339,
- 5,
- 340,
- 35,
- [0,
- caml_string_of_jsbytes("Article D815-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]],
- _Cj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 33,
- 5,
- 34,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),
- 0]]],
- _Ch_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ce_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 70,
- 5,
- 71,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"),
- [0,
- caml_string_of_jsbytes
- ('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),
- 0]]],
- _Cf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 108,
- 5,
- 110,
- 78,
- [0,
- caml_string_of_jsbytes("Article L822-2"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Ca_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 317,
- 11,
- 317,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 317,
- 11,
- 317,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 245,
- 14,
- 245,
- 40,
- [0,
- caml_string_of_jsbytes("Article L822-5"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _B0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 123,
- 14,
- 123,
- 61,
- [0,
- caml_string_of_jsbytes("Article L161-17-2"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Titre III: Titre III : Dispositions communes relatives au financement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _BU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 46,
- 5,
- 46,
- 41,
- [0,
- caml_string_of_jsbytes("Article L821-2"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 1 : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _BV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 318,
- 12,
- 318,
- 51,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 318,
- 12,
- 318,
- 51,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 318,
- 12,
- 318,
- 51,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 203,
- 5,
- 207,
- 39,
- [0,
- caml_string_of_jsbytes("Article L822-4"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _BO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 320,
- 11,
- 320,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 197,
- 5,
- 198,
- 34,
- [0,
- caml_string_of_jsbytes("Article L822-4"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _BP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 320,
- 11,
- 320,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 320,
- 11,
- 320,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1045,
- 14,
- 1045,
- 69,
- [0,
- caml_string_of_jsbytes("Article R822-25"),
- [0,
- caml_string_of_jsbytes
- ("Section 3 : Conditions relatives au logement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _BC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 344,
- 18,
- 344,
- 67,
- [0,
- caml_string_of_jsbytes("Article L822-8"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _BD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 324,
- 11,
- 324,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 324,
- 11,
- 324,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bw_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 358,
- 18,
- 358,
- 61,
- [0,
- caml_string_of_jsbytes("Article L822-9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Bx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 325,
- 11,
- 325,
- 58,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 325,
- 11,
- 325,
- 58,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Br_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1034,
- 14,
- 1034,
- 39,
- [0,
- caml_string_of_jsbytes("Article R822-25"),
- [0,
- caml_string_of_jsbytes
- ("Section 3 : Conditions relatives au logement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Bn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 146,
- 14,
- 146,
- 43,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _Bj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 926,
- 14,
- 926,
- 37,
- [0,
- caml_string_of_jsbytes("Article R822-22"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 4 : Prise en compte du patrimoine"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Conditions relatives aux ressources"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _Bf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 106,
- 14,
- 106,
- 41,
- [0,
- caml_string_of_jsbytes("Article R822-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _Bb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 105,
- 14,
- 105,
- 42,
- [0,
- caml_string_of_jsbytes("Article R822-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _A9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 327,
- 11,
- 327,
- 48,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 316,
- 11,
- 316,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 316,
- 11,
- 316,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 316,
- 11,
- 316,
- 25,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A7_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_pr\xc3\xaat"),0]],
- _A__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 327,
- 11,
- 327,
- 48,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 327,
- 11,
- 327,
- 48,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _A$_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_peuplement_logement_l822_10"),0]],
- _Bc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 338,
- 11,
- 338,
- 39,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Ba_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 338,
- 11,
- 338,
- 39,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bd_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),
- 0]],
- _Bg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 339,
- 11,
- 339,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Be_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 339,
- 11,
- 339,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bh_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("seuil_l822_3_parts_usufruit"),0]],
- _Bk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 340,
- 11,
- 340,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 340,
- 11,
- 340,
- 34,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bl_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("seuil_l822_5_patrimoine"),0]],
- _Bo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 337,
- 11,
- 337,
- 40,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 337,
- 11,
- 337,
- 40,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bp_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),
- 0]],
- _Bs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 336,
- 11,
- 336,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 336,
- 11,
- 336,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bt_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("nombre_personnes_logement"),0]],
- _By_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 325,
- 11,
- 325,
- 58,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 325,
- 11,
- 325,
- 58,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Bz_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("condition_non_ouverture_l822_9_decence_logement"),
- 0]],
- _BE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 324,
- 11,
- 324,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 324,
- 11,
- 324,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BF_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_non_ouverture_l822_8"),0]],
- _BI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 321,
- 11,
- 321,
- 66,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 321,
- 11,
- 321,
- 66,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BJ_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("condition_logement_surface_minimale_sans_seuil_m_carr\xc3\xa9s"),
- 0]],
- _BQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 320,
- 11,
- 320,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 320,
- 11,
- 320,
- 44,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BR_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_logement_location_tiers"),0]],
- _BX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 318,
- 12,
- 318,
- 51,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 318,
- 12,
- 318,
- 51,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _BY_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("condition_logement_r\xc3\xa9sidence_principale"),
- 0]],
- _B1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 346,
- 3,
- 346,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B2_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),
- 0]],
- _BZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1034,
- 10,
- 1034,
- 31,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B3_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("ouverture_droits_retraite"),
- [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]],
- _B4_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("ouverture_droits_retraite"),
- [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]],
- _B7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 335,
- 11,
- 335,
- 37,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 335,
- 11,
- 335,
- 37,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B8_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("patrimoine_total_demandeur"),0]],
- _Cb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 317,
- 11,
- 317,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _B9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 317,
- 11,
- 317,
- 32,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cc_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_nationalit\xc3\xa9"),0]],
- _Co_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 344,
- 11,
- 344,
- 41,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cp_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],
- _Cu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 326,
- 11,
- 326,
- 62,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 326,
- 11,
- 326,
- 62,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cv_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("condition_non_ouverture_l822_10_peuplement_logement"),
- 0]],
- _CE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Cw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 319,
- 11,
- 319,
- 45,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CF_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_logement_mode_occupation"),0]],
- _CL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 323,
- 12,
- 323,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 323,
- 12,
- 323,
- 38,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CM_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_logement_surface"),0]],
- _CP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 343,
- 11,
- 343,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 343,
- 11,
- 343,
- 29,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CQ_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],
- _C1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 341,
- 11,
- 341,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _CR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 341,
- 11,
- 341,
- 36,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C2_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("patrimoine_pris_en_compte"),0]],
- _C9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 328,
- 11,
- 328,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 328,
- 11,
- 328,
- 31,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C__=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]],
- _Db_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 342,
- 11,
- 342,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _C$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 342,
- 11,
- 342,
- 28,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dc_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],
- _Dh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 347,
- 10,
- 347,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Dd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 347,
- 10,
- 347,
- 21,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _Di_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]],
- _Dp_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("condition_2_r823_4"),0]],
- _DD_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"),
- 0]],
- _DK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 331,
- 11,
- 331,
- 46,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 331,
- 11,
- 331,
- 46,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DL_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("personnes_\xc3\xa0_charge_prises_en_compte"),
- 0]],
- _DO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 349,
- 10,
- 349,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 349,
- 10,
- 349,
- 59,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DP_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"),
- 0]],
- _DS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 348,
- 10,
- 348,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 348,
- 10,
- 348,
- 52,
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _DT_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes
- ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"),
- 0]],
- _DU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 182,
- 13,
- 182,
- 48,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _DX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 182,
- 13,
- 182,
- 48,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _DV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 181,
- 13,
- 181,
- 49,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _DW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 181,
- 13,
- 181,
- 49,
- [0,
- caml_string_of_jsbytes("Article L822-3"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _A1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3250,
- 14,
- 3250,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _AT_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _AU_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _AV_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _AW_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _AX_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _AY_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _AZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _A0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _A2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 741,
- 10,
- 741,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _AS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 741,
- 10,
- 741,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _AP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3149,
- 14,
- 3149,
- 33,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _AL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3225,
- 14,
- 3225,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _z9_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _z__=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _z$_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Aa_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Ab_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ac_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ad_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ae_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Af_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ag_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Ah_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ai_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Aj_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ak_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Al_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Am_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _An_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Ao_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Ap_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Aq_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Ar_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _As_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _At_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Au_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _Av_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _Aw_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Ax_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _Ay_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _Az_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _AA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _AB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _AC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _AD_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _AE_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _AF_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _AG_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _AH_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _AI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _AJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _AK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _AM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 740,
- 10,
- 740,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 740,
- 10,
- 740,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3284,
- 14,
- 3284,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _z1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3169,
- 14,
- 3169,
- 33,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _zX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3208,
- 14,
- 3208,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _zz_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zD_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zE_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- 0]],
- _zF_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- 0]],
- _zH_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zL_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zM_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zN_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zO_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zP_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- 0]],
- _zR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zS_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- 0]],
- _zT_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _zU_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zV_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zW_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _zY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 739,
- 10,
- 739,
- 20,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 739,
- 10,
- 739,
- 20,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3281,
- 14,
- 3281,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _zq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3496,
- 5,
- 3508,
- 77,
- [0,
- caml_string_of_jsbytes("Article D832-15"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _zr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 705,
- 10,
- 705,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zo_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3549,
- 5,
- 3549,
- 75,
- [0,
- caml_string_of_jsbytes("Article D832-15"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _zp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 705,
- 10,
- 705,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 444,
- 14,
- 444,
- 42,
- [0,
- caml_string_of_jsbytes("Article 24"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _zj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 708,
- 10,
- 708,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2627,
- 14,
- 2627,
- 42,
- [0,
- caml_string_of_jsbytes("Article 24"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _zk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 708,
- 10,
- 708,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zd_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3621,
- 14,
- 3621,
- 55,
- [0,
- caml_string_of_jsbytes("Article D832-17"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _y7_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _y8_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]],
- _y9_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _y__=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]],
- _y$_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _za_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]],
- _zb_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _zc_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]],
- _ze_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 716,
- 11,
- 716,
- 52,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _y6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 716,
- 11,
- 716,
- 52,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _y3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3265,
- 14,
- 3265,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3557,
- 14,
- 3557,
- 70,
- [0,
- caml_string_of_jsbytes("Article D832-15"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3554,
- 14,
- 3554,
- 69,
- [0,
- caml_string_of_jsbytes("Article D832-15"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3555,
- 14,
- 3555,
- 75,
- [0,
- caml_string_of_jsbytes("Article D832-15"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3437,
- 5,
- 3437,
- 44,
- [0,
- caml_string_of_jsbytes("Article D832-14"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yu_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _yv_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yw_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _yx_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yy_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _yz_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yA_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _yB_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yC_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _yD_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yE_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _yF_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _yH_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yI_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _yJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 707,
- 10,
- 707,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yt_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3417,
- 14,
- 3417,
- 42,
- [0,
- caml_string_of_jsbytes("Article D832-14"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yp_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _yq_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yr_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ys_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3599,
- 5,
- 3599,
- 41,
- [0,
- caml_string_of_jsbytes("Article D832-17"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _yl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 715,
- 11,
- 715,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3610,
- 14,
- 3610,
- 44,
- [0,
- caml_string_of_jsbytes("Article D832-17"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _ym_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 715,
- 11,
- 715,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yi_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 715,
- 11,
- 715,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3350,
- 14,
- 3350,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _ya_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 621,
- 5,
- 624,
- 33,
- [0,
- caml_string_of_jsbytes("Article 17"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _yb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 665,
- 5,
- 668,
- 33,
- [0,
- caml_string_of_jsbytes("Article 17"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 710,
- 5,
- 712,
- 33,
- [0,
- caml_string_of_jsbytes("Article 17"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 753,
- 5,
- 755,
- 33,
- [0,
- caml_string_of_jsbytes("Article 17"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 804,
- 5,
- 807,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 848,
- 5,
- 854,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _x0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 895,
- 5,
- 901,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _x1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 927,
- 5,
- 930,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 971,
- 5,
- 974,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1016,
- 5,
- 1019,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xS_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1060,
- 5,
- 1063,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1107,
- 5,
- 1110,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1150,
- 5,
- 1153,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1196,
- 5,
- 1199,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xK_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1239,
- 5,
- 1242,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1284,
- 5,
- 1287,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1328,
- 5,
- 1331,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1373,
- 5,
- 1376,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1417,
- 5,
- 1420,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1462,
- 5,
- 1465,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xy_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1506,
- 5,
- 1509,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xw_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1551,
- 5,
- 1554,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1595,
- 5,
- 1598,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xs_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1640,
- 5,
- 1643,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1684,
- 5,
- 1687,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xo_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1729,
- 5,
- 1732,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1773,
- 5,
- 1776,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1818,
- 5,
- 1821,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xi_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1862,
- 5,
- 1865,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1907,
- 5,
- 1910,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xe_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1951,
- 5,
- 1954,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 1996,
- 5,
- 1999,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _xa_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2071,
- 5,
- 2074,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _xb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2118,
- 5,
- 2121,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2162,
- 5,
- 2165,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2207,
- 5,
- 2210,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2251,
- 5,
- 2254,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2296,
- 5,
- 2299,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _w0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2340,
- 5,
- 2343,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _w1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2385,
- 5,
- 2388,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wW_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2429,
- 5,
- 2432,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2474,
- 5,
- 2476,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wS_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2517,
- 5,
- 2519,
- 36,
- [0,
- caml_string_of_jsbytes("Article 18"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 709,
- 11,
- 709,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3660,
- 5,
- 3660,
- 28,
- [0,
- caml_string_of_jsbytes("Article D832-18"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _wO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 718,
- 11,
- 718,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3652,
- 14,
- 3652,
- 44,
- [0,
- caml_string_of_jsbytes("Article D832-18"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _wI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3194,
- 14,
- 3194,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-10"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _wJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 738,
- 10,
- 738,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 738,
- 10,
- 738,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2646,
- 7,
- 2646,
- 18,
- [0,
- caml_string_of_jsbytes("Article 24"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 464,
- 7,
- 464,
- 18,
- [0,
- caml_string_of_jsbytes("Article 24"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _wB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wx_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2567,
- 29,
- 2567,
- 64,
- [0,
- caml_string_of_jsbytes("Article 19"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 429,
- 29,
- 429,
- 64,
- [0,
- caml_string_of_jsbytes("Article 19"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _ww_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 744,
- 14,
- 744,
- 50,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wl_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2672,
- 14,
- 2672,
- 50,
- [0,
- caml_string_of_jsbytes("Article 25"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _wf_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3354,
- 14,
- 3354,
- 64,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _wb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3352,
- 14,
- 3352,
- 59,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _v9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 275,
- 14,
- 275,
- 36,
- [0,
- caml_string_of_jsbytes("Article premier"),
- [0,
- caml_string_of_jsbytes
- ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"),
- 0]]],
- _v5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2615,
- 14,
- 2615,
- 47,
- [0,
- caml_string_of_jsbytes("Article 23"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _v1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2614,
- 14,
- 2614,
- 47,
- [0,
- caml_string_of_jsbytes("Article 23"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2613,
- 14,
- 2613,
- 47,
- [0,
- caml_string_of_jsbytes("Article 23"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2690,
- 14,
- 2690,
- 48,
- [0,
- caml_string_of_jsbytes("Article 26"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2598,
- 15,
- 2598,
- 49,
- [0,
- caml_string_of_jsbytes("Article 22"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2589,
- 14,
- 2589,
- 42,
- [0,
- caml_string_of_jsbytes("Article 21"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2578,
- 14,
- 2578,
- 41,
- [0,
- caml_string_of_jsbytes("Article 20"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _vI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 720,
- 11,
- 720,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 720,
- 11,
- 720,
- 38,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vJ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d832_10"),0]],
- _vM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 721,
- 11,
- 721,
- 39,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 721,
- 11,
- 721,
- 39,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vN_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_minimal_aide_d832_10"),0]],
- _vQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 723,
- 11,
- 723,
- 45,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 723,
- 11,
- 723,
- 45,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_11"),0]],
- _vU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 724,
- 11,
- 724,
- 45,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 724,
- 11,
- 724,
- 45,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vV_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_18"),0]],
- _vY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 725,
- 11,
- 725,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 725,
- 11,
- 725,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_limite_tranches_d832_15_1"),0]],
- _v2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 726,
- 11,
- 726,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 726,
- 11,
- 726,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v3_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),
- 0]],
- _v6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 727,
- 11,
- 727,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 727,
- 11,
- 727,
- 44,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v7_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),
- 0]],
- _v__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 728,
- 11,
- 728,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 728,
- 11,
- 728,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _v$_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]],
- _wc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 730,
- 3,
- 730,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wd_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _wa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 681,
- 10,
- 681,
- 35,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 730,
- 3,
- 730,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wh_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.situation_familiale_calcul_apl"),
- 0]],
- _we_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 682,
- 10,
- 682,
- 40,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wi_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _wj_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0]]],
- _wm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 722,
- 11,
- 722,
- 47,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 722,
- 11,
- 722,
- 47,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wn_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_17_3"),0]],
- _wq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 733,
- 3,
- 733,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wr_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]],
- _wo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 544,
- 10,
- 544,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ws_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _wt_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _wF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 719,
- 11,
- 719,
- 46,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wG_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d832_10"),0]],
- _wK_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _wP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 718,
- 11,
- 718,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 718,
- 11,
- 718,
- 41,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _wQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_d832_18"),0]],
- _yd_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"),
- 0]],
- _yg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 710,
- 11,
- 710,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _ye_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 710,
- 11,
- 710,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yh_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]],
- _yn_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]],
- _yM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 707,
- 10,
- 707,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 707,
- 10,
- 707,
- 14,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yN_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d832_10_3_base"),
- 0]],
- _yQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 731,
- 3,
- 731,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _yO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 613,
- 10,
- 613,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 731,
- 3,
- 731,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yV_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"),
- 0]],
- _yS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 614,
- 10,
- 614,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 731,
- 3,
- 731,
- 36,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _yZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"),
- 0]],
- _yW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 615,
- 10,
- 615,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _y0_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _y1_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _y4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 712,
- 10,
- 712,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _y2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 712,
- 10,
- 712,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _y5_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_formule"),
- 0]],
- _zf_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"),
- 0]],
- _zl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 708,
- 10,
- 708,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 708,
- 10,
- 708,
- 25,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zm_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),
- 0]],
- _zs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 705,
- 10,
- 705,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 705,
- 10,
- 705,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zt_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]],
- _zw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 713,
- 10,
- 713,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 713,
- 10,
- 713,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _zx_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_arrondi"),
- 0]],
- _zZ_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _z2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 704,
- 10,
- 704,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 704,
- 10,
- 704,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z3_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]],
- _z6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 714,
- 10,
- 714,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 714,
- 10,
- 714,
- 15,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _z7_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil"),
- 0]],
- _AN_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _AQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 736,
- 10,
- 736,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _AO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 736,
- 10,
- 736,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _AR_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _A3_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _vD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3904,
- 14,
- 3904,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _vv_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _vw_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _vx_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _vy_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _vz_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _vA_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _vB_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _vC_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _vE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 671,
- 10,
- 671,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 671,
- 10,
- 671,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3801,
- 14,
- 3801,
- 33,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _vn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3879,
- 14,
- 3879,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _uL_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uM_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _uN_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uO_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _uP_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uQ_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _uR_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uS_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _uT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uU_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _uV_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _uX_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uY_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _uZ_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _u0_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _u1_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _u2_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _u3_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _u4_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _u5_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _u6_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _u7_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _u8_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _u9_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _u__=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _u$_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _va_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _vb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _vc_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _vd_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ve_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _vf_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _vg_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _vh_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _vi_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _vj_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _vk_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _vl_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_abattement"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _vm_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _vo_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 670,
- 10,
- 670,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 670,
- 10,
- 670,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4045,
- 5,
- 4045,
- 26,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _uH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 664,
- 10,
- 664,
- 15,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3958,
- 14,
- 3958,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _uB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3862,
- 14,
- 3862,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _ud_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _ue_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _uf_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ug_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _uh_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _ui_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- 0]],
- _uj_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uk_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- 0]],
- _ul_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _um_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _un_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uo_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _up_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uq_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _ur_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _us_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _ut_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uu_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- 0]],
- _uv_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uw_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- 0]],
- _ux_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _uy_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _uz_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _uA_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _uC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 669,
- 10,
- 669,
- 20,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 669,
- 10,
- 669,
- 20,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _t__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4039,
- 5,
- 4039,
- 26,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _t$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 663,
- 10,
- 663,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _t9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3955,
- 14,
- 3955,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _t5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3834,
- 14,
- 3834,
- 40,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _t1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4210,
- 14,
- 4210,
- 55,
- [0,
- caml_string_of_jsbytes("Article D832-27"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _tU_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]],
- _tV_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _tW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]],
- _tX_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _tY_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]],
- _tZ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _t0_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]],
- _t2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 647,
- 11,
- 647,
- 52,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 647,
- 11,
- 647,
- 52,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4022,
- 5,
- 4022,
- 26,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 662,
- 10,
- 662,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3939,
- 14,
- 3939,
- 49,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3840,
- 14,
- 3840,
- 70,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3836,
- 14,
- 3836,
- 69,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3838,
- 14,
- 3838,
- 75,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4206,
- 14,
- 4206,
- 44,
- [0,
- caml_string_of_jsbytes("Article D832-27"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 649,
- 11,
- 649,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 649,
- 11,
- 649,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4010,
- 14,
- 4010,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _tr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 644,
- 19,
- 644,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3822,
- 14,
- 3822,
- 40,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _ti_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2806,
- 14,
- 2806,
- 48,
- [0,
- caml_string_of_jsbytes("Article 30"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _te_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2915,
- 14,
- 2915,
- 41,
- [0,
- caml_string_of_jsbytes("Article 32"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _s__=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4006,
- 14,
- 4006,
- 64,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _s6_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4004,
- 14,
- 4004,
- 59,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _s2_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4008,
- 14,
- 4008,
- 55,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _sY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3848,
- 14,
- 3848,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-24"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _sZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 668,
- 10,
- 668,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 668,
- 10,
- 668,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2717,
- 14,
- 2717,
- 48,
- [0,
- caml_string_of_jsbytes("Article 27"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _sU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 646,
- 10,
- 646,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 501,
- 14,
- 501,
- 48,
- [0,
- caml_string_of_jsbytes("Article 27"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _sS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 646,
- 10,
- 646,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 674,
- 14,
- 674,
- 50,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3921,
- 14,
- 3921,
- 35,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _sH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 640,
- 12,
- 640,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2782,
- 14,
- 2782,
- 42,
- [0,
- caml_string_of_jsbytes("Article 29"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _sy_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2771,
- 14,
- 2771,
- 41,
- [0,
- caml_string_of_jsbytes("Article 28"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _su_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2796,
- 14,
- 2796,
- 35,
- [0,
- caml_string_of_jsbytes("Article 30"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _sv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 643,
- 10,
- 643,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _st_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 643,
- 10,
- 643,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sw_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("coefficient_r_d832_25"),0]],
- _sz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 650,
- 11,
- 650,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 650,
- 11,
- 650,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sA_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d832_24"),0]],
- _sD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 652,
- 11,
- 652,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 652,
- 11,
- 652,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sE_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_minimal_aide_d823_24"),0]],
- _sI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 640,
- 12,
- 640,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 640,
- 12,
- 640,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("condition_2_du_832_25"),0]],
- _sM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 658,
- 3,
- 658,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sN_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]],
- _sK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 544,
- 10,
- 544,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _sO_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _sP_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _sV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 646,
- 10,
- 646,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 646,
- 10,
- 646,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),
- 0]],
- _s0_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _s3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 655,
- 3,
- 655,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _s4_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"),
- 0]],
- _s1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 625,
- 10,
- 625,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _s7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 655,
- 3,
- 655,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _s8_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"),
- 0]],
- _s5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 626,
- 10,
- 626,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _s$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 655,
- 3,
- 655,
- 22,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _ta_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_nombre_parts.situation_familiale_calcul_apl"),
- 0]],
- _s9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 627,
- 10,
- 627,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]],
- _tc_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_nombre_parts"),
- [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]],
- _tf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 651,
- 11,
- 651,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _td_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 651,
- 11,
- 651,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tg_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d832_27"),0]],
- _tj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 642,
- 10,
- 642,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _th_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 642,
- 10,
- 642,
- 44,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tk_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"),0]],
- _tn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 645,
- 10,
- 645,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 645,
- 10,
- 645,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _to_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),
- 0]],
- _ts_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 644,
- 19,
- 644,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 644,
- 19,
- 644,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tt_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]],
- _tx_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]],
- _tA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 656,
- 3,
- 656,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tB_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"),
- 0]],
- _ty_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 613,
- 10,
- 613,
- 37,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 656,
- 3,
- 656,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tF_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"),
- 0]],
- _tC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 614,
- 10,
- 614,
- 31,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 656,
- 3,
- 656,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"),
- 0]],
- _tG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 615,
- 10,
- 615,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tK_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _tL_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"),
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]],
- _tQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 662,
- 10,
- 662,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 662,
- 10,
- 662,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _tR_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_formule"),
- 0]],
- _t3_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"),
- 0]],
- _t6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 653,
- 10,
- 653,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _t4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 653,
- 10,
- 653,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _t7_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"),0]],
- _ua_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 663,
- 10,
- 663,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _t8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 663,
- 10,
- 663,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _ub_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_arrondi"),
- 0]],
- _uD_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]],
- _uI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 664,
- 10,
- 664,
- 15,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 664,
- 10,
- 664,
- 15,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _uJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil"),
- 0]],
- _vp_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _vs_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 666,
- 10,
- 666,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 666,
- 10,
- 666,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _vt_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _vF_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _sm_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1862,
- 14,
- 1862,
- 33,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _si_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2003,
- 14,
- 2003,
- 39,
- [0,
- caml_string_of_jsbytes("Article D823-17"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _se_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1984,
- 14,
- 1984,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _r8_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _r9_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _r__=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _r$_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _sa_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _sb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _sc_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _sd_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _sf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 603,
- 10,
- 603,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _r7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 603,
- 10,
- 603,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _r4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2032,
- 14,
- 2032,
- 42,
- [0,
- caml_string_of_jsbytes("Article D823-17"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _r0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 823,
- 14,
- 823,
- 36,
- [0,
- caml_string_of_jsbytes("Article L832-3"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _rS_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _rU_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rV_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _rW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rX_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _rY_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rZ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _r1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 602,
- 10,
- 602,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 602,
- 10,
- 602,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 287,
- 14,
- 287,
- 33,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _rN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 576,
- 10,
- 576,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 423,
- 14,
- 423,
- 33,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _rO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 576,
- 10,
- 576,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1951,
- 14,
- 1951,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _q5_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _q6_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _q7_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _q8_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _q9_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _q__=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _q$_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ra_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rb_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rc_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rd_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _re_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rf_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rg_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rh_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ri_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rj_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rk_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rl_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rm_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rn_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _ro_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rp_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rq_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rr_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rs_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rt_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ru_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rv_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rw_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rx_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _ry_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rz_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rA_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rB_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,
- caml_string_of_jsbytes("montant"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rC_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _rD_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _rE_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rF_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _rG_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _rI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 601,
- 10,
- 601,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _q4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 601,
- 10,
- 601,
- 40,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 280,
- 14,
- 280,
- 33,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _q0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 575,
- 10,
- 575,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 416,
- 14,
- 416,
- 33,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _q1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 575,
- 10,
- 575,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1936,
- 14,
- 1936,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _qM_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _qN_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]],
- _qO_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _qP_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]],
- _qQ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),
- [0,caml_string_of_jsbytes("input"),0]]],
- _qR_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]],
- _qS_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),
- [0,caml_string_of_jsbytes("output"),0]]],
- _qT_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]],
- _qV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 600,
- 10,
- 600,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qL_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 600,
- 10,
- 600,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 256,
- 14,
- 256,
- 28,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _qH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 577,
- 11,
- 577,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 390,
- 14,
- 390,
- 28,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _qI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 577,
- 11,
- 577,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 296,
- 14,
- 296,
- 36,
- [0,
- caml_string_of_jsbytes("Article 13"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _qB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 589,
- 10,
- 589,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qy_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 177,
- 14,
- 177,
- 36,
- [0,
- caml_string_of_jsbytes("Article 13"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _qz_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 589,
- 10,
- 589,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qt_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1926,
- 5,
- 1926,
- 50,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _qu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 599,
- 10,
- 599,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qs_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1914,
- 14,
- 1914,
- 36,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _qv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 599,
- 10,
- 599,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 599,
- 10,
- 599,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qo_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1880,
- 14,
- 1880,
- 28,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _qk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 247,
- 14,
- 247,
- 42,
- [0,
- caml_string_of_jsbytes("Article 10"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _qg_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 253,
- 14,
- 253,
- 41,
- [0,
- caml_string_of_jsbytes("Article 10"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _qa_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 577,
- 29,
- 577,
- 64,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _qb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 394,
- 29,
- 394,
- 64,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _p$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 224,
- 29,
- 224,
- 64,
- [0,
- caml_string_of_jsbytes("Article 9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _p8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 163,
- 29,
- 163,
- 64,
- [0,
- caml_string_of_jsbytes("Article 9"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _p6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pZ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 534,
- 5,
- 535,
- 34,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _p0_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pX_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 543,
- 5,
- 544,
- 34,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pV_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 552,
- 5,
- 552,
- 35,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pW_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 350,
- 5,
- 351,
- 34,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 359,
- 5,
- 360,
- 34,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 368,
- 5,
- 368,
- 35,
- [0,
- caml_string_of_jsbytes("Article 16"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 189,
- 5,
- 189,
- 61,
- [0,
- caml_string_of_jsbytes("Article 8"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 128,
- 5,
- 128,
- 61,
- [0,
- caml_string_of_jsbytes("Article 8"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pN_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 182,
- 14,
- 182,
- 37,
- [0,
- caml_string_of_jsbytes("Article 8"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pH_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 121,
- 14,
- 121,
- 37,
- [0,
- caml_string_of_jsbytes("Article 8"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pF_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 97,
- 5,
- 98,
- 34,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 107,
- 5,
- 108,
- 34,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pA_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _px_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 117,
- 5,
- 117,
- 35,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _py_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 37,
- 5,
- 38,
- 34,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 47,
- 5,
- 48,
- 34,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pu_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 57,
- 5,
- 57,
- 35,
- [0,
- caml_string_of_jsbytes("Article 7"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _ps_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pD_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 280,
- 14,
- 280,
- 42,
- [0,
- caml_string_of_jsbytes("Article 12"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pi_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 440,
- 14,
- 440,
- 29,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 578,
- 11,
- 578,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pg_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 305,
- 14,
- 305,
- 29,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _ph_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 578,
- 11,
- 578,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pb_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 474,
- 14,
- 474,
- 44,
- [0,
- caml_string_of_jsbytes("Article 15"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _pc_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 584,
- 11,
- 584,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 576,
- 14,
- 576,
- 44,
- [0,
- caml_string_of_jsbytes("Article 15"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er janvier 2020 au 1er janvier 2022"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _pa_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 584,
- 11,
- 584,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"),
- 222,
- 14,
- 222,
- 40,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- [0,
- caml_string_of_jsbytes
- ("Articles valables du 1er octobre 2020 au 1er octobre 2021"),
- [0,
- caml_string_of_jsbytes
- ("Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires"),
- 0]]]]],
- _o6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 590,
- 10,
- 590,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o4_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 357,
- 14,
- 357,
- 40,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _o7_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 590,
- 10,
- 590,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 606,
- 14,
- 606,
- 50,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oU_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 268,
- 14,
- 268,
- 41,
- [0,
- caml_string_of_jsbytes("Article 11"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _oQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1975,
- 14,
- 1975,
- 29,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _oR_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 579,
- 11,
- 579,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 579,
- 11,
- 579,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oS_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("fraction_l832_3"),0]],
- _oV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 582,
- 11,
- 582,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oT_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 582,
- 11,
- 582,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _oW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d823_16"),0]],
- _oZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 593,
- 3,
- 593,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o0_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]],
- _oX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 544,
- 10,
- 544,
- 23,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _o1_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _o2_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("contributions_sociales"),
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement"),
- 0]]],
- _o8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 590,
- 10,
- 590,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 590,
- 10,
- 590,
- 36,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o9_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("taux_composition_familiale"),0]],
- _pd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 584,
- 11,
- 584,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _o__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 584,
- 11,
- 584,
- 41,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pe_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("abattement_forfaitaire_d823_17"),0]],
- _pk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 578,
- 11,
- 578,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 578,
- 11,
- 578,
- 26,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pl_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],
- _po_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 583,
- 11,
- 583,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 583,
- 11,
- 583,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pp_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("montant_minimal_aide_d823_16"),0]],
- _p2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _pq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 588,
- 10,
- 588,
- 33,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p3_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("plafond_loyer_d823_16_2"),0]],
- _qd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _p4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 587,
- 10,
- 587,
- 45,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qe_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"),0]],
- _qh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 581,
- 11,
- 581,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 581,
- 11,
- 581,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qi_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("plafond_suppression_d823_16"),0]],
- _ql_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 580,
- 11,
- 580,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 580,
- 11,
- 580,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qm_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),
- 0]],
- _qp_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 573,
- 11,
- 573,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 573,
- 11,
- 573,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qq_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("loyer_\xc3\xa9ligible"),0]],
- _qw_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]],
- _qC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 589,
- 10,
- 589,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 589,
- 10,
- 589,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qD_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("participation_minimale"),0]],
- _qJ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 577,
- 11,
- 577,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 577,
- 11,
- 577,
- 25,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qK_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("rapport_loyers"),0]],
- _qW_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_minoration_forfaitaire"),
- 0]],
- _q2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 575,
- 10,
- 575,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _qX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 575,
- 10,
- 575,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _q3_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_formule"),0]],
- _rJ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_contributions_sociales_arrondi"),
- 0]],
- _rP_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 576,
- 10,
- 576,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 576,
- 10,
- 576,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _rQ_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_arrondi"),0]],
- _r2_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,
- caml_string_of_jsbytes
- ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),
- 0]],
- _r5_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 585,
- 11,
- 585,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _r3_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 585,
- 11,
- 585,
- 39,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _r6_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("taux_prise_compte_ressources"),0]],
- _sg_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]],
- _sj_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 591,
- 10,
- 591,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sh_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 591,
- 10,
- 591,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sk_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("participation_personnelle"),0]],
- _sn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 596,
- 10,
- 596,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _sl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 596,
- 10,
- 596,
- 29,
- [0,
- caml_string_of_jsbytes("Secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _so_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"),
- [0,caml_string_of_jsbytes("aide_finale_formule"),0]],
- _sp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1929,
- 13,
- 1929,
- 76,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _ss_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 1929,
- 13,
- 1929,
- 76,
- [0,
- caml_string_of_jsbytes("Article D823-16"),
- [0,
- caml_string_of_jsbytes
- ("Sous-section 2 : Calcul de l'aide en secteur locatif"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Calcul, liquidation et versement des aides"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _sq_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 833,
- 13,
- 833,
- 63,
- [0,
- caml_string_of_jsbytes("Article L832-3"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _sr_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_legislatif.catala_fr"),
- 833,
- 13,
- 833,
- 63,
- [0,
- caml_string_of_jsbytes("Article L832-3"),
- [0,
- caml_string_of_jsbytes("Chapitre Ier : Champ d'application"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]],
- _oD_=[6,0],
- _oF_=[0,0],
- _oG_=[1,0],
- _oH_=[2,0],
- _oI_=[3,0],
- _oJ_=[4,0],
- _oK_=[5,0],
- _oL_=[7,0],
- _oE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 29,
- 5,
- 38,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _oM_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _oA_=[8,0],
- _oB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 47,
- 5,
- 49,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _oC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _oq_=[6,0],
- _os_=[0,0],
- _ot_=[1,0],
- _ou_=[2,0],
- _ov_=[3,0],
- _ow_=[4,0],
- _ox_=[5,0],
- _oy_=[7,0],
- _or_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 68,
- 5,
- 77,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _oz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _on_=[8,0],
- _oo_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 86,
- 5,
- 88,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _op_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _od_=[6,0],
- _of_=[0,0],
- _og_=[1,0],
- _oh_=[2,0],
- _oi_=[3,0],
- _oj_=[4,0],
- _ok_=[5,0],
- _ol_=[7,0],
- _oe_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 107,
- 5,
- 116,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _om_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _oa_=[8,0],
- _ob_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 125,
- 5,
- 127,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _oc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _n2_=[6,0],
- _n4_=[0,0],
- _n5_=[1,0],
- _n6_=[2,0],
- _n7_=[3,0],
- _n8_=[4,0],
- _n9_=[5,0],
- _n__=[7,0],
- _n3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 146,
- 5,
- 155,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _n$_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _nZ_=[8,0],
- _n0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 165,
- 5,
- 167,
- 6,
- [0,
- caml_string_of_jsbytes("Article 1"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _n1_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _nP_=[6,0],
- _nR_=[0,0],
- _nS_=[1,0],
- _nT_=[2,0],
- _nU_=[3,0],
- _nV_=[4,0],
- _nW_=[5,0],
- _nX_=[7,0],
- _nQ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 186,
- 5,
- 195,
- 6,
- [0,
- caml_string_of_jsbytes("Article 2"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _nY_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _nM_=[8,0],
- _nN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 204,
- 5,
- 206,
- 6,
- [0,
- caml_string_of_jsbytes("Article 2"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]]],
- _nO_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _oN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _nL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"),
- 11,
- 10,
- 11,
- 22,
- [0,
- caml_string_of_jsbytes("Prologue"),
- [0,
- caml_string_of_jsbytes("Montant du salaire minimum de croissance"),
- 0]]],
- _oO_=
- [0,
- caml_string_of_jsbytes("Smic"),
- [0,caml_string_of_jsbytes("brut_horaire"),0]],
- _nH_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 28,
- 5,
- 29,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _nI_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 48,
- 5,
- 49,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _nG_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nD_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 64,
- 5,
- 65,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _nE_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nB_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 82,
- 5,
- 83,
- 34,
- [0,
- caml_string_of_jsbytes
- ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]]],
- _nC_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"),
- 6,
- 10,
- 6,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Montant de la base mensuelle des allocations familiales"),
- 0]],
- _nK_=
- [0,
- caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _nv_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2310,
- 14,
- 2310,
- 28,
- [0,
- caml_string_of_jsbytes("Article R824-2"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1053,
- 10,
- 1053,
- 24,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2247,
- 14,
- 2247,
- 28,
- [0,
- caml_string_of_jsbytes("Article R824-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nx_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1053,
- 10,
- 1053,
- 24,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _no_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2268,
- 20,
- 2268,
- 51,
- [0,
- caml_string_of_jsbytes("Article R824-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _np_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nn_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2252,
- 20,
- 2252,
- 55,
- [0,
- caml_string_of_jsbytes("Article R824-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nk_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2362,
- 7,
- 2362,
- 51,
- [0,
- caml_string_of_jsbytes("Article R824-2"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nl_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2334,
- 7,
- 2334,
- 42,
- [0,
- caml_string_of_jsbytes("Article R824-2"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nm_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ne_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2291,
- 14,
- 2291,
- 36,
- [0,
- caml_string_of_jsbytes("Article R824-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1051,
- 11,
- 1051,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2387,
- 14,
- 2387,
- 36,
- [0,
- caml_string_of_jsbytes("Article R824-2"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _nd_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1051,
- 11,
- 1051,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _m8_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2378,
- 14,
- 2378,
- 36,
- [0,
- caml_string_of_jsbytes("Article R824-2"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _m9_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1050,
- 11,
- 1050,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _m7_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2282,
- 14,
- 2282,
- 36,
- [0,
- caml_string_of_jsbytes("Article R824-1"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _m__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1050,
- 11,
- 1050,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _m3_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 2410,
- 14,
- 2410,
- 36,
- [0,
- caml_string_of_jsbytes("Article R824-3"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre II : Dispositions communes aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _mY_=[0,0],
- _mZ_=[1,0],
- _m0_=[1,0],
- _m1_=[0,0],
- _m2_=[0,0],
- _m4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1049,
- 11,
- 1049,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mX_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1049,
- 11,
- 1049,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _m5_=
- [0,
- caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),
- [0,caml_string_of_jsbytes("mode_occupation_impay\xc3\xa9"),0]],
- _m$_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1050,
- 11,
- 1050,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _m6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1050,
- 11,
- 1050,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _na_=
- [0,
- caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_brute"),0]],
- _ng_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1051,
- 11,
- 1051,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1051,
- 11,
- 1051,
- 33,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nh_=
- [0,
- caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),
- [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_nette"),0]],
- _nr_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ni_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1048,
- 11,
- 1048,
- 43,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _ns_=
- [0,
- caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),
- [0,
- caml_string_of_jsbytes
- ("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),
- 0]],
- _ny_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1053,
- 10,
- 1053,
- 24,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nt_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1053,
- 10,
- 1053,
- 24,
- [0,
- caml_string_of_jsbytes
- ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _nz_=
- [0,
- caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),
- [0,caml_string_of_jsbytes("montant_impay\xc3\xa9"),0]],
- _mT_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 119,
- 5,
- 119,
- 43,
- [0,
- caml_string_of_jsbytes("Article L161-17-2"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Titre III: Titre III : Dispositions communes relatives au financement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mU_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mR_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 256,
- 5,
- 256,
- 42,
- [0,
- caml_string_of_jsbytes("Article D161-2-1-9"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 2 : Ouverture du droit et liquidation."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mS_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mP_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 266,
- 5,
- 267,
- 43,
- [0,
- caml_string_of_jsbytes("Article D161-2-1-9"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 2 : Ouverture du droit et liquidation."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mQ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mN_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 276,
- 5,
- 276,
- 48,
- [0,
- caml_string_of_jsbytes("Article D161-2-1-9"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 2 : Ouverture du droit et liquidation."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mO_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mL_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 285,
- 5,
- 285,
- 48,
- [0,
- caml_string_of_jsbytes("Article D161-2-1-9"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 2 : Ouverture du droit et liquidation."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mM_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mJ_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 294,
- 5,
- 294,
- 48,
- [0,
- caml_string_of_jsbytes("Article D161-2-1-9"),
- [0,
- caml_string_of_jsbytes
- ("Paragraphe 2 : Ouverture du droit et liquidation."),
- [0,
- caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"),
- [0,
- caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 1er : Dispositions relatives aux prestations"),
- [0,
- caml_string_of_jsbytes
- ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"),
- [0,
- caml_string_of_jsbytes
- ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"),
- [0,
- caml_string_of_jsbytes
- ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]]]]],
- _mK_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mV_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mI_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 1033,
- 10,
- 1033,
- 29,
- [0,
- caml_string_of_jsbytes
- ("Date d'ouverture des droits \xc3\xa0 la retraite"),
- [0,
- caml_string_of_jsbytes("Calcul du montant de l'allocation logement"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _mW_=
- [0,
- caml_string_of_jsbytes("OuvertureDroitsRetraite"),
- [0,caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"),0]],
- _mF_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3331,
- 14,
- 3331,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-11"),
- [0,
- caml_string_of_jsbytes
- ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]],
- _mG_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 684,
- 10,
- 684,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mE_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 684,
- 10,
- 684,
- 32,
- [0,
- caml_string_of_jsbytes
- ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mH_=
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"),
- [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]],
- _mA_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4072,
- 5,
- 4072,
- 26,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _mB_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 629,
- 10,
- 629,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mz_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 3985,
- 14,
- 3985,
- 36,
- [0,
- caml_string_of_jsbytes("Article D832-25"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _mC_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 629,
- 10,
- 629,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _my_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 629,
- 10,
- 629,
- 32,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mD_=
- [0,
- caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),
- [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]],
- _mu_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4158,
- 5,
- 4158,
- 26,
- [0,
- caml_string_of_jsbytes("Article D832-26"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _mv_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 622,
- 10,
- 622,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mt_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4120,
- 14,
- 4120,
- 21,
- [0,
- caml_string_of_jsbytes("Article D832-26"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _mp_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_construction_reglementaire.catala_fr"),
- 4107,
- 14,
- 4107,
- 50,
- [0,
- caml_string_of_jsbytes("Article D832-26"),
- [0,
- caml_string_of_jsbytes
- ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"),
- [0,
- caml_string_of_jsbytes("Section 3 : Logements-foyers"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Titre III : Aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("Livre VIII : Aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"),
- [0,
- caml_string_of_jsbytes
- ("Code de la construction et de l'habitation"),
- 0]]]]]]]]],
- _mo_=[1,0],
- _mj_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2868,
- 5,
- 2868,
- 26,
- [0,
- caml_string_of_jsbytes("Article 31"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _mi_=[1,0],
- _mk_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 617,
- 11,
- 617,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mh_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2829,
- 14,
- 2829,
- 38,
- [0,
- caml_string_of_jsbytes("Article 31"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _mg_=[1,0],
- _mc_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/arrete_2019-09-27.catala_fr"),
- 2903,
- 14,
- 2903,
- 41,
- [0,
- caml_string_of_jsbytes("Article 31"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"),
- 0]]]],
- _md_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 620,
- 11,
- 620,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mb_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 620,
- 11,
- 620,
- 38,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _me_=
- [0,
- caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),
- [0,caml_string_of_jsbytes("montant_forfaitaire_d832_26"),0]],
- _ml_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 617,
- 11,
- 617,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mf_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 617,
- 11,
- 617,
- 35,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mm_=
- [0,
- caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),
- [0,caml_string_of_jsbytes("tranches_revenus_d832_26"),0]],
- _mq_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 618,
- 11,
- 618,
- 47,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mn_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 618,
- 11,
- 618,
- 47,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mr_=
- [0,
- caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),
- [0,
- caml_string_of_jsbytes("tranches_revenus_d832_26_multipli\xc3\xa9es"),
- 0]],
- _mw_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 622,
- 10,
- 622,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _ms_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 622,
- 10,
- 622,
- 17,
- [0,
- caml_string_of_jsbytes("Secteur logement-foyer"),
- [0,
- caml_string_of_jsbytes
- ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]],
- _mx_=
- [0,
- caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _l9_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 100,
- 5,
- 100,
- 35,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Des contributions pour le remboursement de la dette sociale."),
- [0,
- caml_string_of_jsbytes
- ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"),
- 0]]]],
- _l__=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 549,
- 10,
- 549,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l8_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 549,
- 10,
- 549,
- 17,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l5_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 138,
- 39,
- 138,
- 69,
- [0,
- caml_string_of_jsbytes("Article 19"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Des contributions pour le remboursement de la dette sociale."),
- [0,
- caml_string_of_jsbytes
- ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"),
- 0]]]],
- _l0_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"),
- 37,
- 9,
- 37,
- 20,
- [0,
- caml_string_of_jsbytes("Article L136-1-3"),
- [0,
- caml_string_of_jsbytes
- ("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),
- [0,
- caml_string_of_jsbytes
- ("Titre III: Titre III : Dispositions communes relatives au financement"),
- [0,
- caml_string_of_jsbytes("Partie l\xc3\xa9gislative"),
- [0,
- caml_string_of_jsbytes
- ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"),
- 0]]]]]]],
- _l1_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 547,
- 11,
- 547,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _lZ_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 547,
- 11,
- 547,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l2_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 547,
- 11,
- 547,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _lY_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 547,
- 11,
- 547,
- 22,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l3_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("exon\xc3\xa9r\xc3\xa9_csg"),0]],
- _l6_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 546,
- 11,
- 546,
- 20,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l4_=
- [0,
- caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"),
- 546,
- 11,
- 546,
- 20,
- [0,
- caml_string_of_jsbytes
- ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"),
- [0,
- caml_string_of_jsbytes
- ("D\xc3\xa9clarations des champs d'application"),
- [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]],
- _l7_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("taux_crds"),0]],
- _l$_=
- [0,
- caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"),
- [0,caml_string_of_jsbytes("montant"),0]],
- _ma_=
- [0,
- caml_string_of_jsbytes
- ("examples/aides_logement/autres_sources.catala_fr"),
- 104,
- 13,
- 104,
- 24,
- [0,
- caml_string_of_jsbytes("Article 14"),
- [0,
- caml_string_of_jsbytes
- ("Chapitre II : Des contributions pour le remboursement de la dette sociale."),
- [0,
- caml_string_of_jsbytes
- ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"),
- 0]]]],
- _lX_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_in"),
- 0],
- _lW_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_out"),
- 0],
- _lV_=[0,caml_string_of_jsbytes("Smic_in"),0],
- _lU_=[0,caml_string_of_jsbytes("Smic_out"),0],
- _lT_=
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0],
- _lS_=
- [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_out"),0],
- _lR_=
- [0,
- caml_string_of_jsbytes
- ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_in"),
- 0],
- _lQ_=
- [0,
- caml_string_of_jsbytes
- ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_out"),
- 0],
- _lP_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_in"),0],
- _lO_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_out"),0],
- _lN_=
- [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_in"),0],
- _lM_=
- [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_out"),0],
- _lL_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_in"),0],
- _lK_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_out"),0],
- _lJ_=[0,caml_string_of_jsbytes("CalculAllocationLogement_in"),0],
- _lI_=[0,caml_string_of_jsbytes("CalculAllocationLogement_out"),0],
- _lH_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_in"),0],
- _lG_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_out"),0],
- _lF_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),
- 0],
- _lE_=
- [0,
- caml_string_of_jsbytes
- ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_out"),
- 0],
- _lD_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_in"),0],
- _lC_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_out"),0],
- _lB_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_in"),
- 0],
- _lA_=
- [0,
- caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_out"),
- 0],
- _lz_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),
- 0],
- _ly_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_out"),
- 0],
- _lx_=
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_in"),
- 0],
- _lw_=
- [0,
- caml_string_of_jsbytes
- ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_out"),
- 0],
- _lv_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),
- 0],
- _lu_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_out"),
- 0],
- _lt_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_in"),0],
- _ls_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_out"),0],
- _lr_=
- [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_in"),0],
- _lq_=
- [0,
- caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_out"),
- 0],
- _lp_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),
- 0],
- _lo_=
- [0,
- caml_string_of_jsbytes
- ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_out"),
- 0],
- _ln_=
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement_in"),
- 0],
- _lm_=
- [0,
- caml_string_of_jsbytes
- ("ContributionsSocialesAidesPersonnelleLogement_out"),
- 0],
- _ll_=
- [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_in"),0],
- _lk_=
- [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_out"),0],
- _lj_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_in"),
- 0],
- _li_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_out"),
- 0],
- _lh_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_in"),
- 0],
- _lg_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_out"),
- 0],
- _lf_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_in"),
- 0],
- _le_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_out"),
- 0],
- _ld_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_in"),
- 0],
- _lc_=
- [0,
- caml_string_of_jsbytes
- ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_out"),
- 0],
- _lb_=[0,caml_string_of_jsbytes("M\xc3\xa9nage"),0],
- _la_=[0,caml_string_of_jsbytes("Logement"),0],
- _k$_=[0,caml_string_of_jsbytes("ModeOccupation"),0],
- _k__=[0,caml_string_of_jsbytes("InformationsCalculAPL"),0],
- _k9_=[0,caml_string_of_jsbytes("LogementFoyer"),0],
- _k8_=[0,caml_string_of_jsbytes("InformationsCalculAPLLocatif"),0],
- _k7_=[0,caml_string_of_jsbytes("Personne\xc3\x80Charge"),0],
- _k6_=
- [0,
- caml_string_of_jsbytes
- ("InformationsCalculAPLAccessionPropri\xc3\xa9t\xc3\xa9"),
- 0],
- _k5_=[0,caml_string_of_jsbytes("Propri\xc3\xa9taire"),0],
- _k4_=[0,caml_string_of_jsbytes("Location"),0],
- _k3_=[0,caml_string_of_jsbytes("ChangementLogementD842_4"),0],
- _k2_=[0,caml_string_of_jsbytes("Demandeur"),0],
- _k1_=
- [0,
- caml_string_of_jsbytes("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),
- 0],
- _k0_=[0,caml_string_of_jsbytes("Enfant\xc3\x80Charge"),0],
- _kZ_=[0,caml_string_of_jsbytes("EnfantPrestationsFamiliales"),0],
- _kY_=[0,caml_string_of_jsbytes("InformationsCalculAPLLogementFoyer"),0],
- _kX_=
- [0,
- caml_string_of_jsbytes
- ("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"),
- 0],
- _kW_=[0,caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),0],
- _kV_=[0,caml_string_of_jsbytes("TrancheRevenuD\xc3\xa9cimal"),0],
- _kU_=[0,caml_string_of_jsbytes("TrancheRevenu"),0],
- _kT_=[0,caml_string_of_jsbytes("NeufOuAncien"),0],
- _kS_=[0,caml_string_of_jsbytes("Pr\xc3\xaat"),0],
- _kR_=[0,caml_string_of_jsbytes("Bailleur"),0],
- _kQ_=[0,caml_string_of_jsbytes("InfosChangementLogementD842_4"),0],
- _kP_=[0,caml_string_of_jsbytes("PersonneVivantHabituellementAuFoyer"),0],
- _kO_=[0,caml_string_of_jsbytes("Patrimoine"),0],
- _kN_=[0,caml_string_of_jsbytes("PersonneSousLocation"),0],
- _kM_=
- [0,
- caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"),
- 0],
- _kL_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0],
- _kK_=[0,caml_string_of_jsbytes("PriseEnChargeEnfant"),0],
- _kJ_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0],
- _kI_=[0,caml_string_of_jsbytes("SituationFamilialeCalculAPL"),0],
- _kH_=
- [0,
- caml_string_of_jsbytes
- ("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),
- 0],
- _kG_=[0,caml_string_of_jsbytes("TypeLogementFoyer"),0],
- _kF_=[0,caml_string_of_jsbytes("PriseEnCharge"),0],
- _kE_=[0,caml_string_of_jsbytes("SituationFamiliale"),0],
- _kD_=[0,caml_string_of_jsbytes("TypeAidesPersonnelleLogement"),0],
- _kC_=
- [0,
- caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"),
- 0],
- _kB_=[0,caml_string_of_jsbytes("ModeOccupationImpay\xc3\xa9"),0],
- _kA_=[0,caml_string_of_jsbytes("D\xc3\xa9penseLogement"),0],
- _kz_=[0,caml_string_of_jsbytes("Versement\xc3\x80"),0],
- _ky_=
- [0,caml_string_of_jsbytes("PaiementLogementDistinctProfessionnel"),0],
- _kx_=[0,caml_string_of_jsbytes("Cat\xc3\xa9gorieCalculAPL"),0],
- _kw_=[0,caml_string_of_jsbytes("ZoneDHabitation"),0],
- _kv_=[0,caml_string_of_jsbytes("Nationalit\xc3\xa9"),0],
- _ku_=[0,caml_string_of_jsbytes("DateDeNaissanceOuMoisDeGrossesse"),0],
- _kt_=[0,caml_string_of_jsbytes("Parent\xc3\xa9"),0],
- _ks_=[0,caml_string_of_jsbytes("SituationGardeAltern\xc3\xa9e"),0],
- _kr_=[0,caml_string_of_jsbytes("ParentOuAutre"),0],
- _kq_=[0,caml_string_of_jsbytes("TypeContratTravail"),0],
- _kp_=[0,caml_string_of_jsbytes("PrestationRe\xc3\xa7ue"),0],
- _ko_=[0,caml_string_of_jsbytes("LimiteTrancheD\xc3\xa9cimal"),0],
- _kn_=[0,caml_string_of_jsbytes("LimiteTranche"),0],
- _km_=[0,caml_string_of_jsbytes("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],
- _kl_=[0,caml_string_of_jsbytes("TypeTravauxLogementR842_5"),0],
- _kk_=[0,caml_string_of_jsbytes("TypeTravauxLogementD832_15"),0],
- _kj_=[0,caml_string_of_jsbytes("TitulairePr\xc3\xaat"),0],
- _ki_=[0,caml_string_of_jsbytes("TypePr\xc3\xaat"),0],
- _kh_=[0,caml_string_of_jsbytes("TypeBailleur"),0],
- _acX_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ModeOccupation.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],
- _acW_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'InformationsCalculAPL.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'InformationsCalculAPL.t'")],
- _acV_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PersonneACharge.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],
- _acU_=[1,0],
- _acT_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ChangementLogementD8424.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],
- _acS_=[0,0],
- _acR_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],
- _acQ_=[0,0],
- _acP_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],
- _acO_=[0,0],
- _acN_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'NeufOuAncien.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],
- _acF_=[0,0],
- _acG_=[2,0],
- _acH_=[1,0],
- _acI_=[5,0],
- _acJ_=[6,0],
- _acK_=[3,0],
- _acL_=[7,0],
- _acM_=[4,0],
- _acE_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")],
- _acB_=[1,0],
- _acC_=[0,0],
- _acD_=[2,0],
- _acA_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'SituationObligationScolaire.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")],
- _acv_=[4,0],
- _acw_=[3,0],
- _acx_=[0,0],
- _acy_=[1,0],
- _acz_=[2,0],
- _acu_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PriseEnChargeEnfant.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],
- _acl_=[7,0],
- _acm_=[5,0],
- _acn_=[4,0],
- _aco_=[6,0],
- _acp_=[8,0],
- _acq_=[2,0],
- _acr_=[3,0],
- _acs_=[1,0],
- _act_=[0,0],
- _ack_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'Collectivite.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")],
- _aci_=[0,0],
- _acj_=[1,0],
- _ach_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],
- _acd_=[2,0],
- _ace_=[1,0],
- _acf_=[0,0],
- _acg_=[3,0],
- _acc_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],
- _ab__=[1,0],
- _ab$_=[0,0],
- _aca_=[2,0],
- _acb_=[3,0],
- _ab9_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeLogementFoyer.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],
- _ab6_=[2,0],
- _ab7_=[1,0],
- _ab8_=[0,0],
- _ab5_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PriseEnCharge.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],
- _ab0_=[2,0],
- _ab1_=[3,0],
- _ab2_=[5,0],
- _ab3_=[4,0],
- _ab4_=[0,0],
- _abZ_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'SituationFamiliale.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],
- _abW_=[2,0],
- _abX_=[1,0],
- _abY_=[0,0],
- _abV_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],
- _abS_=[0,0],
- _abT_=[2,0],
- _abU_=[1,0],
- _abR_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'EligibiliteAllocationLogement.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'EligibiliteAllocationLogement.t'")],
- _abP_=[1,0],
- _abQ_=[0,0],
- _abO_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ModeOccupationImpaye.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ModeOccupationImpaye.t'")],
- _abN_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'DepenseLogement.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],
- _abK_=[2,0],
- _abL_=[1,0],
- _abM_=[0,0],
- _abJ_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("' kind for the enumeration 'VersementA.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'VersementA.t'")],
- _abI_=[1,0],
- _abH_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],
- _abE_=[2,0],
- _abF_=[0,0],
- _abG_=[1,0],
- _abD_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'CategorieCalculAPL.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'CategorieCalculAPL.t'")],
- _abA_=[2,0],
- _abB_=[1,0],
- _abC_=[0,0],
- _abz_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ZoneDHabitation.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],
- _abx_=[0,0],
- _aby_=[1,0],
- _abw_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("' kind for the enumeration 'Nationalite.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],
- _abu_=[1,0],
- _abv_=[2,0],
- _abt_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],
- _abq_=[1,0],
- _abr_=[2,0],
- _abs_=[0,0],
- _abp_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("' kind for the enumeration 'Parente.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'Parente.t'")],
- _abo_=[0,0],
- _abn_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'SituationGardeAlternee.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],
- _abm_=[1,0],
- _abl_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'ParentOuAutre.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],
- _abj_=[0,0],
- _abk_=[1,0],
- _abi_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeContratTravail.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeContratTravail.t'")],
- _abc_=[1,0],
- _abd_=[0,0],
- _abe_=[3,0],
- _abf_=[4,0],
- _abg_=[2,0],
- _abh_=[5,0],
- _abb_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'PrestationRecue.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],
- _aba_=[1,0],
- _aa$_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'LimiteTrancheDecimal.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'LimiteTrancheDecimal.t'")],
- _aa__=[1,0],
- _aa9_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'LimiteTranche.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'LimiteTranche.t'")],
- _aa7_=[0,0],
- _aa8_=[1,0],
- _aa6_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'AmelioreParOccupant.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],
- _aa2_=[1,0],
- _aa3_=[3,0],
- _aa4_=[0,0],
- _aa5_=[2,0],
- _aa1_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],
- _aaY_=[1,0],
- _aaZ_=[0,0],
- _aa0_=[2,0],
- _aaX_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],
- _aaV_=[1,0],
- _aaW_=[0,0],
- _aaU_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TitulairePret.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],
- _aaP_=[3,0],
- _aaQ_=[1,0],
- _aaR_=[2,0],
- _aaS_=[0,0],
- _aaT_=[4,0],
- _aaO_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes("' kind for the enumeration 'TypePret.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypePret.t'")],
- _aaM_=[0,0],
- _aaN_=[1,0],
- _aaL_=
- [0,
- [11,
- caml_string_of_jsbytes("Unexpected '"),
- [2,
- 0,
- [11,
- caml_string_of_jsbytes
- ("' kind for the enumeration 'TypeBailleur.t'"),
- 0]]],
- caml_string_of_jsbytes
- ("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")];
- function embed_prise_en_charge(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _b89_=
- [0,
- cst_GardeAltern_ePartageAlloca,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _b89_=
- [0,
- cst_GardeAltern_eAllocataireUn,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _b89_=
- [0,
- cst_EffectiveEtPermanente,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _b89_=
- [0,
- cst_ServicesSociauxAllocationV,
- caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- default:
- var
- x$4=x[1],
- _b89_=
- [0,
- cst_ServicesSociauxAllocationV$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)]}
- return [6,_a_,_b89_]}
- var SituationObligationScolaire=[0];
- function embed_situation_obligation_sco(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _b88_=[0,cst_Avant,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _b88_=[0,cst_Pendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _b88_=[0,cst_Apr_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_b_,_b88_]}
- var PriseEnCompte=[0];
- function embed_prise_en_compte(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _b87_=[0,cst_Compl_te,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _b87_=[0,cst_Partag_e,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _b87_=[0,cst_Z_ro,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_c_,_b87_]}
- var VersementAllocations=[0];
- function embed_versement_allocations(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _b86_=[0,cst_Normal,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _b86_=
- [0,
- cst_AllocationVers_eAuxService,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_d_,_b86_]}
- var ElementPrestationsFamiliales=[0];
- function embed_element_prestations_fami(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _b85_=
- [0,
- cst_PrestationAccueilJeuneEnfa,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _b85_=
- [0,
- cst_AllocationsFamiliales,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _b85_=
- [0,
- cst_Compl_mentFamilial,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _b85_=
- [0,
- cst_AllocationLogement,
- caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _b85_=
- [0,
- cst_Allocation_ducationEnfantH,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- case 5:
- var
- x$5=x[1],
- _b85_=
- [0,
- cst_AllocationSoutienFamilial,
- caml_call1(Runtime_ocaml_Runtime[11],x$5)];
- break;
- case 6:
- var
- x$6=x[1],
- _b85_=
- [0,
- cst_AllocationRentr_eScolaire,
- caml_call1(Runtime_ocaml_Runtime[11],x$6)];
- break;
- default:
- var
- x$7=x[1],
- _b85_=
- [0,
- cst_AllocationJournali_rePrese,
- caml_call1(Runtime_ocaml_Runtime[11],x$7)]}
- return [6,_e_,_b85_]}
- var Collectivite=[0];
- function embed_collectivite(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _b84_=[0,cst_Guadeloupe,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _b84_=[0,cst_Guyane,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _b84_=[0,cst_Martinique,caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _b84_=[0,cst_LaR_union,caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _b84_=
- [0,cst_SaintBarth_lemy,caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- case 5:
- var
- x$5=x[1],
- _b84_=[0,cst_SaintMartin,caml_call1(Runtime_ocaml_Runtime[11],x$5)];
- break;
- case 6:
- var
- x$6=x[1],
- _b84_=[0,cst_M_tropole,caml_call1(Runtime_ocaml_Runtime[11],x$6)];
- break;
- case 7:
- var
- x$7=x[1],
- _b84_=
- [0,
- cst_SaintPierreEtMiquelon,
- caml_call1(Runtime_ocaml_Runtime[11],x$7)];
- break;
- default:
- var
- x$8=x[1],
- _b84_=[0,cst_Mayotte,caml_call1(Runtime_ocaml_Runtime[11],x$8)]}
- return [6,_f_,_b84_]}
- var EnfantEntree=[0];
- function embed_enfant_entree(x)
- {var
- _b8Z_=
- [0,
- [0,
- cst_d_b_n_ficie_titre_personne,
- caml_call1(Runtime_ocaml_Runtime[12],x[6])],
- 0],
- _b80_=
- [0,
- [0,
- cst_d_a_d_j_ouvert_droit_aux_a,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- _b8Z_],
- _b81_=[0,[0,cst_d_prise_en_charge,embed_prise_en_charge(x[4])],_b80_],
- _b82_=
- [0,
- [0,
- cst_d_date_de_naissance,
- caml_call1(Runtime_ocaml_Runtime[16],x[3])],
- _b81_],
- _b83_=
- [0,
- [0,
- cst_d_r_muneration_mensuelle,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _b82_];
- return [7,
- _g_,
- [0,
- [0,
- cst_d_identifiant,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _b83_]]}
- var Enfant=[0];
- function embed_enfant(x)
- {var
- _b8S_=
- [0,
- [0,
- cst_b_n_ficie_titre_personnel_,
- caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- 0],
- _b8T_=
- [0,
- [0,
- cst_a_d_j_ouvert_droit_aux_all,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _b8S_],
- _b8U_=[0,[0,cst_prise_en_charge,embed_prise_en_charge(x[6])],_b8T_],
- _b8V_=[0,[0,cst_ge,caml_call1(Runtime_ocaml_Runtime[14],x[5])],_b8U_],
- _b8W_=
- [0,
- [0,cst_date_de_naissance,caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _b8V_],
- _b8X_=
- [0,
- [0,
- cst_r_muneration_mensuelle,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _b8W_],
- _b8Y_=
- [0,
- [0,cst_obligation_scolaire,embed_situation_obligation_sco(x[2])],
- _b8X_];
- return [7,
- _h_,
- [0,
- [0,cst_identifiant,caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _b8Y_]]}
- var PrestationsFamilialesOut=[0];
- function embed_prestations_familiales_o(x)
- {var
- _b8P_=
- [0,
- [0,
- cst_r_gime_outre_mer_l751_1_ou,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- 0],
- _b8Q_=
- [0,
- [0,cst_ge_l512_3_2_out,caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _b8P_],
- _b8R_=
- [0,
- [0,
- cst_conditions_hors_ge_out,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- _b8Q_];
- return [7,
- _i_,
- [0,
- [0,
- cst_droit_ouvert_out,
- caml_call1(Runtime_ocaml_Runtime[10],x[1])],
- _b8R_]]}
- var PrestationsFamilialesIn=[0];
- function embed_prestations_familiales_i(x)
- {var
- _b8N_=[0,[0,cst_r_sidence_in,embed_collectivite(x[3])],0],
- _b8O_=
- [0,
- [0,cst_prestation_courante_in,embed_element_prestations_fami(x[2])],
- _b8N_];
- return [7,
- _j_,
- [0,
- [0,
- cst_date_courante_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _b8O_]]}
- var AllocationFamilialesAvril2008O=[0];
- function embed_allocation_familiales_av(x)
- {return [7,
- _k_,
- [0,
- [0,
- cst_ge_minimum_alin_a_1_l521_3,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- 0]]}
- var AllocationFamilialesAvril2008I=[0];
- function embed_allocation_familiales_av$0(param){return 0}
- var EnfantLePlusAgeOut=[0];
- function embed_enfant_le_plus_age_out(x)
- {return [7,_l_,[0,[0,cst_le_plus_g_out,embed_enfant(x[1])],0]]}
- var EnfantLePlusAgeIn=[0];
- function embed_enfant_le_plus_age_in(x)
- {return [7,
- _m_,
- [0,
- [0,
- cst_enfants_in,
- caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[1])],
- 0]]}
- var AllocationsFamilialesOut=[0];
- function embed_allocations_familiales_o(x)
- {return [7,
- _n_,
- [0,
- [0,
- cst_montant_vers_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var AllocationsFamilialesIn=[0];
- function embed_allocations_familiales_i(x)
- {var
- _b8H_=
- [0,
- [0,
- cst_avait_enfant_charge_avant_,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- 0],
- _b8I_=
- [0,
- [0,
- cst_enfants_charge_in,
- caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[6])],
- _b8H_],
- _b8J_=
- [0,
- [0,cst_date_courante_in$0,caml_call1(Runtime_ocaml_Runtime[16],x[5])],
- _b8I_],
- _b8K_=[0,[0,cst_r_sidence_in$0,embed_collectivite(x[4])],_b8J_],
- _b8L_=
- [0,
- [0,
- cst_ressources_m_nage_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _b8K_],
- _b8M_=
- [0,
- [0,
- cst_personne_charge_effective_,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _b8L_];
- return [7,
- _o_,
- [0,
- [0,
- cst_personne_charge_effective_$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _b8M_]]}
- var SmicOut=[0];
- function embed_smic_out(x)
- {return [7,
- _p_,
- [0,
- [0,
- cst_brut_horaire_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var SmicIn=[0];
- function embed_smic_in(x)
- {var _b8G_=[0,[0,cst_r_sidence_in$1,embed_collectivite(x[2])],0];
- return [7,
- _q_,
- [0,
- [0,
- cst_date_courante_in$1,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _b8G_]]}
- var BaseMensuelleAllocationsFamili=[0];
- function embed_base_mensuelle_allocatio(x)
- {return [7,
- _r_,
- [0,
- [0,cst_montant_out,caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var BaseMensuelleAllocationsFamili$0=[0];
- function embed_base_mensuelle_allocatio$0(x)
- {return [7,
- _s_,
- [0,
- [0,
- cst_date_courante_in$2,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- 0]]}
- var InterfaceAllocationsFamiliales=[0];
- function embed_interface_allocations_fa(x)
- {return [7,
- _t_,
- [0,
- [0,
- cst_i_montant_vers_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var InterfaceAllocationsFamiliales$0=[0];
- function embed_interface_allocations_fa$0(x)
- {var
- _b8A_=
- [0,
- [0,
- cst_i_avait_enfant_charge_avan,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- 0],
- _b8B_=
- [0,
- [0,
- cst_i_personne_charge_effectiv,
- caml_call1(Runtime_ocaml_Runtime[12],x[6])],
- _b8A_],
- _b8C_=
- [0,
- [0,
- cst_i_personne_charge_effectiv$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- _b8B_],
- _b8D_=[0,[0,cst_i_r_sidence_in,embed_collectivite(x[4])],_b8C_],
- _b8E_=
- [0,
- [0,
- cst_i_ressources_m_nage_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _b8D_],
- _b8F_=
- [0,
- [0,
- cst_i_enfants_in,
- caml_call2(Runtime_ocaml_Runtime[18],embed_enfant_entree,x[2])],
- _b8E_];
- return [7,
- _u_,
- [0,
- [0,
- cst_i_date_courante_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _b8F_]]}
- function allocation_familiales_avril200(allocation_familiales_avril200)
- {try
- {var
- _b8w_=
- function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_16)},
- _b8x_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_w_,1)},
- _b8y_=caml_call4(Runtime_ocaml_Runtime[62],_x_,[0],_b8x_,_b8w_)}
- catch(_b8z_)
- {_b8z_ = caml_wrap_exception(_b8z_);
- if(_b8z_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_v_];
- throw _b8z_}
- var
- age_minimum_alinea_1_l521_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_y_,Runtime_ocaml_Runtime[14],_b8y_);
- return [0,age_minimum_alinea_1_l521_3]}
- function enfant_le_plus_age(enfant_le_plus_age_in)
- {var enfants=enfant_le_plus_age_in[1];
- try
- {var
- _b8n_=
- function(param)
- {var
- _b8r_=caml_call1(Runtime_ocaml_Runtime[46],cst_0),
- _b8s_=caml_call3(Runtime_ocaml_Runtime[56],1900,1,1),
- _b8t_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$0),
- _b8u_=
- [0,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1),
- _B_,
- _b8t_,
- _b8s_,
- _b8r_,
- _A_,
- 0,
- 0];
- function _b8v_(acc,item)
- {return caml_call2(Runtime_ocaml_Runtime[83],acc[5],item[5])
- ?acc
- :item}
- return caml_call3(Stdlib_Array[17],_b8v_,_b8u_,enfants)},
- _b8o_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C_,1)},
- _b8p_=caml_call4(Runtime_ocaml_Runtime[62],_D_,[0],_b8o_,_b8n_)}
- catch(_b8q_)
- {_b8q_ = caml_wrap_exception(_b8q_);
- if(_b8q_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_z_];
- throw _b8q_}
- var
- le_plus_age=
- caml_call3(Runtime_ocaml_Runtime[28],_E_,embed_enfant,_b8p_);
- return [0,le_plus_age]}
- function smic(smic_in)
- {var date_courante=smic_in[1],residence=smic_in[2];
- try
- {var
- _b6w_=function(param){throw Runtime_ocaml_Runtime[2]},
- _b6x_=function(param){return 0},
- _b6y_=
- function(param)
- {function _b8g_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_819)}
- function _b8h_(param)
- {var
- _b8i_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1),
- _b8j_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b8i_);
- if(_b8j_)
- var
- _b8k_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31),
- _b8l_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b8k_),
- _b8m_=_b8l_?caml_equal(residence,_G_):_b8l_;
- else
- var _b8m_=_b8j_;
- return caml_call2(Runtime_ocaml_Runtime[29],_H_,_b8m_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_I_,[0],_b8h_,_b8g_)},
- _b6z_=
- function(param)
- {function _b74_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085)}
- function _b75_(param)
- {var
- _b76_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1),
- _b77_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b76_);
- if(_b77_)
- {var
- _b78_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31),
- _b79_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b78_);
- if(_b79_)
- {var _b7__=caml_equal(residence,_J_);
- if(_b7__)
- var _b7$_=_b7__;
- else
- {var _b8a_=caml_equal(residence,_L_);
- if(_b8a_)
- var _b7$_=_b8a_;
- else
- {var _b8b_=caml_equal(residence,_M_);
- if(_b8b_)
- var _b7$_=_b8b_;
- else
- {var _b8c_=caml_equal(residence,_N_);
- if(_b8c_)
- var _b7$_=_b8c_;
- else
- {var _b8d_=caml_equal(residence,_O_);
- if(_b8d_)
- var _b7$_=_b8d_;
- else
- {var _b8e_=caml_equal(residence,_P_);
- if(_b8e_)
- var _b7$_=_b8e_;
- else
- var
- _b8f_=caml_equal(residence,_Q_),
- _b7$_=_b8f_ || caml_equal(residence,_R_)}}}}}}
- else
- var _b7$_=_b79_}
- else
- var _b7$_=_b77_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K_,_b7$_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_S_,[0],_b75_,_b74_)},
- _b6A_=
- function(param)
- {function _b7X_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_798)}
- function _b7Y_(param)
- {var
- _b7Z_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _b70_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7Z_);
- if(_b70_)
- var
- _b71_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30),
- _b72_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b71_),
- _b73_=_b72_?caml_equal(residence,_T_):_b72_;
- else
- var _b73_=_b70_;
- return caml_call2(Runtime_ocaml_Runtime[29],_U_,_b73_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_V_,[0],_b7Y_,_b7X_)},
- _b6B_=
- function(param)
- {function _b7J_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057)}
- function _b7K_(param)
- {var
- _b7L_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _b7M_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7L_);
- if(_b7M_)
- {var
- _b7N_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30),
- _b7O_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7N_);
- if(_b7O_)
- {var _b7P_=caml_equal(residence,_W_);
- if(_b7P_)
- var _b7Q_=_b7P_;
- else
- {var _b7R_=caml_equal(residence,_Y_);
- if(_b7R_)
- var _b7Q_=_b7R_;
- else
- {var _b7S_=caml_equal(residence,_Z_);
- if(_b7S_)
- var _b7Q_=_b7S_;
- else
- {var _b7T_=caml_equal(residence,___);
- if(_b7T_)
- var _b7Q_=_b7T_;
- else
- {var _b7U_=caml_equal(residence,_$_);
- if(_b7U_)
- var _b7Q_=_b7U_;
- else
- {var _b7V_=caml_equal(residence,_aa_);
- if(_b7V_)
- var _b7Q_=_b7V_;
- else
- var
- _b7W_=caml_equal(residence,_ab_),
- _b7Q_=_b7W_ || caml_equal(residence,_ac_)}}}}}}
- else
- var _b7Q_=_b7O_}
- else
- var _b7Q_=_b7M_;
- return caml_call2(Runtime_ocaml_Runtime[29],_X_,_b7Q_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_ad_,[0],_b7K_,_b7J_)},
- _b6C_=
- function(param)
- {function _b7C_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_774)}
- function _b7D_(param)
- {var
- _b7E_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _b7F_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7E_);
- if(_b7F_)
- var
- _b7G_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _b7H_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7G_),
- _b7I_=_b7H_?caml_equal(residence,_ae_):_b7H_;
- else
- var _b7I_=_b7F_;
- return caml_call2(Runtime_ocaml_Runtime[29],_af_,_b7I_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_ag_,[0],_b7D_,_b7C_)},
- _b6D_=
- function(param)
- {function _b7o_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025)}
- function _b7p_(param)
- {var
- _b7q_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _b7r_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7q_);
- if(_b7r_)
- {var
- _b7s_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _b7t_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7s_);
- if(_b7t_)
- {var _b7u_=caml_equal(residence,_ah_);
- if(_b7u_)
- var _b7v_=_b7u_;
- else
- {var _b7w_=caml_equal(residence,_aj_);
- if(_b7w_)
- var _b7v_=_b7w_;
- else
- {var _b7x_=caml_equal(residence,_ak_);
- if(_b7x_)
- var _b7v_=_b7x_;
- else
- {var _b7y_=caml_equal(residence,_al_);
- if(_b7y_)
- var _b7v_=_b7y_;
- else
- {var _b7z_=caml_equal(residence,_am_);
- if(_b7z_)
- var _b7v_=_b7z_;
- else
- {var _b7A_=caml_equal(residence,_an_);
- if(_b7A_)
- var _b7v_=_b7A_;
- else
- var
- _b7B_=caml_equal(residence,_ao_),
- _b7v_=_b7B_ || caml_equal(residence,_ap_)}}}}}}
- else
- var _b7v_=_b7t_}
- else
- var _b7v_=_b7r_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ai_,_b7v_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aq_,[0],_b7p_,_b7o_)},
- _b6E_=
- function(param)
- {function _b7h_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_766)}
- function _b7i_(param)
- {var
- _b7j_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _b7k_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b7j_);
- if(_b7k_)
- var
- _b7l_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _b7m_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b7l_),
- _b7n_=_b7m_?caml_equal(residence,_ar_):_b7m_;
- else
- var _b7n_=_b7k_;
- return caml_call2(Runtime_ocaml_Runtime[29],_as_,_b7n_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_at_,[0],_b7i_,_b7h_)},
- _b6F_=
- function(param)
- {function _b65_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015)}
- function _b66_(param)
- {var
- _b67_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _b68_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b67_);
- if(_b68_)
- {var
- _b69_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _b6__=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b69_);
- if(_b6__)
- {var _b6$_=caml_equal(residence,_au_);
- if(_b6$_)
- var _b7a_=_b6$_;
- else
- {var _b7b_=caml_equal(residence,_aw_);
- if(_b7b_)
- var _b7a_=_b7b_;
- else
- {var _b7c_=caml_equal(residence,_ax_);
- if(_b7c_)
- var _b7a_=_b7c_;
- else
- {var _b7d_=caml_equal(residence,_ay_);
- if(_b7d_)
- var _b7a_=_b7d_;
- else
- {var _b7e_=caml_equal(residence,_az_);
- if(_b7e_)
- var _b7a_=_b7e_;
- else
- {var _b7f_=caml_equal(residence,_aA_);
- if(_b7f_)
- var _b7a_=_b7f_;
- else
- var
- _b7g_=caml_equal(residence,_aB_),
- _b7a_=_b7g_ || caml_equal(residence,_aC_)}}}}}}
- else
- var _b7a_=_b6__}
- else
- var _b7a_=_b68_;
- return caml_call2(Runtime_ocaml_Runtime[29],_av_,_b7a_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aD_,[0],_b66_,_b65_)},
- _b6G_=
- function(param)
- {function _b6Y_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_757)}
- function _b6Z_(param)
- {var
- _b60_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _b61_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b60_);
- if(_b61_)
- var
- _b62_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _b63_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b62_),
- _b64_=_b63_?caml_equal(residence,_aE_):_b63_;
- else
- var _b64_=_b61_;
- return caml_call2(Runtime_ocaml_Runtime[29],_aF_,_b64_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aG_,[0],_b6Z_,_b6Y_)},
- _b6H_=
- [0,
- function(param)
- {function _b6K_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003)}
- function _b6L_(param)
- {var
- _b6M_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _b6N_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6M_);
- if(_b6N_)
- {var
- _b6O_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _b6P_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b6O_);
- if(_b6P_)
- {var _b6Q_=caml_equal(residence,_aH_);
- if(_b6Q_)
- var _b6R_=_b6Q_;
- else
- {var _b6S_=caml_equal(residence,_aJ_);
- if(_b6S_)
- var _b6R_=_b6S_;
- else
- {var _b6T_=caml_equal(residence,_aK_);
- if(_b6T_)
- var _b6R_=_b6T_;
- else
- {var _b6U_=caml_equal(residence,_aL_);
- if(_b6U_)
- var _b6R_=_b6U_;
- else
- {var _b6V_=caml_equal(residence,_aM_);
- if(_b6V_)
- var _b6R_=_b6V_;
- else
- {var _b6W_=caml_equal(residence,_aN_);
- if(_b6W_)
- var _b6R_=_b6W_;
- else
- var
- _b6X_=caml_equal(residence,_aO_),
- _b6R_=_b6X_ || caml_equal(residence,_aP_)}}}}}}
- else
- var _b6R_=_b6P_}
- else
- var _b6R_=_b6N_;
- return caml_call2(Runtime_ocaml_Runtime[29],_aI_,_b6R_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aQ_,[0],_b6L_,_b6K_)},
- _b6G_,
- _b6F_,
- _b6E_,
- _b6D_,
- _b6C_,
- _b6B_,
- _b6A_,
- _b6z_,
- _b6y_],
- _b6I_=caml_call4(Runtime_ocaml_Runtime[62],_aR_,_b6H_,_b6x_,_b6w_)}
- catch(_b6J_)
- {_b6J_ = caml_wrap_exception(_b6J_);
- if(_b6J_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_F_];
- throw _b6J_}
- var
- brut_horaire=
- caml_call3
- (Runtime_ocaml_Runtime[28],_aS_,Runtime_ocaml_Runtime[13],_b6I_);
- return [0,brut_horaire]}
- function base_mensuelle_allocations_fam(base_mensuelle_allocations_fam)
- {var date_courante=base_mensuelle_allocations_fam[1];
- try
- {var
- _b52_=function(param){throw Runtime_ocaml_Runtime[2]},
- _b53_=function(param){return 0},
- _b54_=
- function(param)
- {function _b6q_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228)}
- function _b6r_(param)
- {var
- _b6s_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1),
- _b6t_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6s_);
- if(_b6t_)
- var
- _b6u_=caml_call3(Runtime_ocaml_Runtime[56],2023,4,1),
- _b6v_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6u_);
- else
- var _b6v_=_b6t_;
- return caml_call2(Runtime_ocaml_Runtime[29],_aU_,_b6v_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aV_,[0],_b6r_,_b6q_)},
- _b55_=
- function(param)
- {function _b6k_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481)}
- function _b6l_(param)
- {var
- _b6m_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1),
- _b6n_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6m_);
- if(_b6n_)
- var
- _b6o_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1),
- _b6p_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6o_);
- else
- var _b6p_=_b6n_;
- return caml_call2(Runtime_ocaml_Runtime[29],_aW_,_b6p_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aX_,[0],_b6l_,_b6k_)},
- _b56_=
- function(param)
- {function _b6e_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440)}
- function _b6f_(param)
- {var
- _b6g_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1),
- _b6h_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6g_);
- if(_b6h_)
- var
- _b6i_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1),
- _b6j_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6i_);
- else
- var _b6j_=_b6h_;
- return caml_call2(Runtime_ocaml_Runtime[29],_aY_,_b6j_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_aZ_,[0],_b6f_,_b6e_)},
- _b57_=
- [0,
- function(param)
- {function _b5__(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316)}
- function _b5$_(param)
- {var
- _b6a_=caml_call3(Runtime_ocaml_Runtime[56],2019,4,1),
- _b6b_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b6a_);
- if(_b6b_)
- var
- _b6c_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1),
- _b6d_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_b6c_);
- else
- var _b6d_=_b6b_;
- return caml_call2(Runtime_ocaml_Runtime[29],_a0_,_b6d_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_a1_,[0],_b5$_,_b5__)},
- _b56_,
- _b55_,
- _b54_],
- _b58_=caml_call4(Runtime_ocaml_Runtime[62],_a2_,_b57_,_b53_,_b52_)}
- catch(_b59_)
- {_b59_ = caml_wrap_exception(_b59_);
- if(_b59_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aT_];
- throw _b59_}
- var
- montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_a3_,Runtime_ocaml_Runtime[13],_b58_);
- return [0,montant]}
- function prestations_familiales(prestations_familiales_in)
- {var
- date_courante=prestations_familiales_in[1],
- residence=prestations_familiales_in[3];
- try
- {var
- _b4P_=
- function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_20)},
- _b4Q_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_a5_,1)},
- _b4R_=caml_call4(Runtime_ocaml_Runtime[62],_a6_,[0],_b4Q_,_b4P_)}
- catch(_b51_)
- {_b51_ = caml_wrap_exception(_b51_);
- if(_b51_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_a4_];
- throw _b51_}
- var
- age_l512_3_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_a7_,Runtime_ocaml_Runtime[14],_b4R_);
- try
- {var
- _b4S_=function(param){return date_courante},
- _b4T_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_a9_,1)},
- _b4U_=caml_call4(Runtime_ocaml_Runtime[62],_a__,[0],_b4T_,_b4S_),
- smic_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_a$_,Runtime_ocaml_Runtime[16],_b4U_)}
- catch(_b50_)
- {_b50_ = caml_wrap_exception(_b50_);
- if(_b50_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_a8_];
- throw _b50_}
- try
- {var
- _b4V_=function(param){return residence},
- _b4W_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bb_,1)},
- _b4X_=caml_call4(Runtime_ocaml_Runtime[62],_bc_,[0],_b4W_,_b4V_),
- smic_dot_residence=
- caml_call3(Runtime_ocaml_Runtime[28],_bd_,embed_collectivite,_b4X_)}
- catch(_b5Z_)
- {_b5Z_ = caml_wrap_exception(_b5Z_);
- if(_b5Z_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ba_];
- throw _b5Z_}
- var
- _b4Y_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_be_,smic),
- [0,smic_dot_date_courante,smic_dot_residence]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_bf_,_b4Y_),
- smic_dot_brut_horaire=result[1];
- try
- {var
- _b4Z_=function(param){return 0},
- _b40_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bh_,1)},
- _b41_=
- [0,
- function(param)
- {function _b5R_(param){return 1}
- function _b5S_(param)
- {var _b5T_=caml_equal(residence,_bi_);
- if(_b5T_)
- var _b5U_=_b5T_;
- else
- {var _b5V_=caml_equal(residence,_bk_);
- if(_b5V_)
- var _b5U_=_b5V_;
- else
- {var _b5W_=caml_equal(residence,_bl_);
- if(_b5W_)
- var _b5U_=_b5W_;
- else
- {var _b5X_=caml_equal(residence,_bm_);
- if(_b5X_)
- var _b5U_=_b5X_;
- else
- var
- _b5Y_=caml_equal(residence,_bn_),
- _b5U_=_b5Y_ || caml_equal(residence,_bo_)}}}
- return caml_call2(Runtime_ocaml_Runtime[29],_bj_,_b5U_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_bp_,[0],_b5S_,_b5R_)}],
- _b42_=caml_call4(Runtime_ocaml_Runtime[62],_bq_,_b41_,_b40_,_b4Z_)}
- catch(_b5Q_)
- {_b5Q_ = caml_wrap_exception(_b5Q_);
- if(_b5Q_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_bg_];
- throw _b5Q_}
- var
- regime_outre_mer_l751_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_br_,Runtime_ocaml_Runtime[12],_b42_);
- try
- {var
- _b43_=
- function(param)
- {var
- _b5N_=caml_call1(Runtime_ocaml_Runtime[39],cst_169),
- _b5O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55),
- _b5P_=
- caml_call2
- (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_b5O_);
- return caml_call2(Runtime_ocaml_Runtime[65],_b5P_,_b5N_)},
- _b44_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bt_,1)},
- _b45_=
- [0,
- function(param)
- {function _b5I_(param)
- {var
- _b5K_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$0),
- _b5L_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$0),
- _b5M_=
- caml_call2
- (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_b5L_);
- return caml_call2(Runtime_ocaml_Runtime[65],_b5M_,_b5K_)}
- function _b5J_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_bu_,regime_outre_mer_l751_1)}
- return caml_call4(Runtime_ocaml_Runtime[62],_bv_,[0],_b5J_,_b5I_)}],
- _b46_=caml_call4(Runtime_ocaml_Runtime[62],_bw_,_b45_,_b44_,_b43_)}
- catch(_b5H_)
- {_b5H_ = caml_wrap_exception(_b5H_);
- if(_b5H_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_bs_];
- throw _b5H_}
- var
- plafond_l512_3_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_bx_,Runtime_ocaml_Runtime[13],_b46_);
- function _b47_(param)
- {try
- {var
- _b5v_=function(param){return 0},
- _b5w_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_bz_,1)},
- _b5x_=
- [0,
- function(param$0)
- {function _b5A_(param){return 1}
- function _b5B_(param$0)
- {switch(param[2][0])
- {case 0:var _b5C_=1;break;
- case 1:var _b5C_=0;break;
- default:var _b5C_=0}
- if(_b5C_)
- var _b5D_=_b5C_;
- else
- {switch(param[2][0])
- {case 0:var _b5F_=0;break;
- case 1:var _b5F_=1;break;
- default:var _b5F_=0}
- if(_b5F_)
- var _b5D_=_b5F_;
- else
- {switch(param[2][0])
- {case 0:var _b5G_=0;break;
- case 1:var _b5G_=0;break;
- default:var _b5G_=1}
- var _b5D_=_b5G_}}
- var
- _b5E_=
- _b5D_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2)
- :_b5D_;
- return caml_call2(Runtime_ocaml_Runtime[29],_bA_,_b5E_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bB_,[0],_b5B_,_b5A_)}],
- _b5y_=caml_call4(Runtime_ocaml_Runtime[62],_bC_,_b5x_,_b5w_,_b5v_);
- return _b5y_}
- catch(_b5z_)
- {_b5z_ = caml_wrap_exception(_b5z_);
- if(_b5z_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_by_];
- throw _b5z_}}
- var
- conditions_hors_age=
- caml_call3
- (Runtime_ocaml_Runtime[28],_bD_,Runtime_ocaml_Runtime[10],_b47_);
- function _b48_(param)
- {try
- {var
- _b49_=function(param){return 0},
- _b4__=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_bF_,1)},
- _b4$_=
- [0,
- function(param$0)
- {function _b5c_(param$0)
- {function _b5h_(param){throw Runtime_ocaml_Runtime[2]}
- function _b5i_(param){return 0}
- var
- _b5j_=
- [0,
- function(param$0)
- {function _b5k_(param){return 1}
- function _b5l_(param$0)
- {switch(param[2][0])
- {case 0:var _b5s_=1;break;
- case 1:var _b5s_=0;break;
- default:var _b5s_=0}
- if(_b5s_)
- var _b5t_=_b5s_;
- else
- {switch(param[2][0])
- {case 0:var _b5u_=0;break;
- case 1:var _b5u_=1;break;
- default:var _b5u_=0}
- var _b5t_=_b5u_}
- return caml_call2(Runtime_ocaml_Runtime[29],_bG_,_b5t_)}
- var
- _b5m_=
- [0,
- function(param$0)
- {function _b5n_(param){return 1}
- function _b5o_(param$0)
- {switch(param[2][0])
- {case 0:var _b5p_=0;break;
- case 1:var _b5p_=0;break;
- default:var _b5p_=1}
- if(_b5p_)
- var
- _b5q_=
- caml_call2
- (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2),
- _b5r_=
- _b5q_
- ?caml_call2(Runtime_ocaml_Runtime[84],param[5],age_l512_3_2)
- :_b5q_;
- else
- var _b5r_=_b5p_;
- return caml_call2(Runtime_ocaml_Runtime[29],_bH_,_b5r_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bI_,[0],_b5o_,_b5n_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bJ_,_b5m_,_b5l_,_b5k_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bK_,_b5j_,_b5i_,_b5h_)}
- function _b5d_(param){return 1}
- var
- _b5e_=
- [0,
- function(param$0)
- {function _b5f_(param){return 0}
- function _b5g_(param$0)
- {return caml_call2(Runtime_ocaml_Runtime[29],_bL_,param[8])}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bM_,[0],_b5g_,_b5f_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bN_,_b5e_,_b5d_,_b5c_)}],
- _b5a_=caml_call4(Runtime_ocaml_Runtime[62],_bO_,_b4$_,_b4__,_b49_);
- return _b5a_}
- catch(_b5b_)
- {_b5b_ = caml_wrap_exception(_b5b_);
- if(_b5b_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_bE_];
- throw _b5b_}}
- var
- droit_ouvert=
- caml_call3
- (Runtime_ocaml_Runtime[28],_bP_,Runtime_ocaml_Runtime[10],_b48_);
- return [0,
- droit_ouvert,
- conditions_hors_age,
- age_l512_3_2,
- regime_outre_mer_l751_1]}
- function allocations_familiales(allocations_familiales_in)
- {var
- personne_charge_effective_perm=allocations_familiales_in[1],
- personne_charge_effective_perm$0=allocations_familiales_in[2],
- ressources_menage=allocations_familiales_in[3],
- residence=allocations_familiales_in[4],
- date_courante=allocations_familiales_in[5],
- enfants_a_charge=allocations_familiales_in[6],
- avait_enfant_a_charge_avant_1e=allocations_familiales_in[7];
- function _bOp_(param)
- {try
- {var
- _b4r_=function(param){throw Runtime_ocaml_Runtime[2]},
- _b4s_=function(param){return 0},
- _b4t_=
- function(param$0)
- {function _b4E_(param){return _bR_}
- function _b4F_(param$0)
- {switch(param[6][0])
- {case 0:var _b4O_=0;break;
- case 1:var _b4O_=0;break;
- case 2:var _b4O_=1;break;
- case 3:var _b4O_=0;break;
- default:var _b4O_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_bS_,_b4O_)}
- var
- _b4G_=
- [0,
- function(param$0)
- {function _b4H_(param){return _bT_}
- function _b4I_(param$0)
- {switch(param[6][0])
- {case 0:var _b4N_=0;break;
- case 1:var _b4N_=1;break;
- case 2:var _b4N_=0;break;
- case 3:var _b4N_=0;break;
- default:var _b4N_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_bU_,_b4N_)}
- var
- _b4J_=
- [0,
- function(param$0)
- {function _b4K_(param){return _bV_}
- function _b4L_(param$0)
- {switch(param[6][0])
- {case 0:var _b4M_=0;break;
- case 1:var _b4M_=0;break;
- case 2:var _b4M_=0;break;
- case 3:var _b4M_=1;break;
- default:var _b4M_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_bW_,_b4M_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bX_,[0],_b4L_,_b4K_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bY_,_b4J_,_b4I_,_b4H_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_bZ_,_b4G_,_b4F_,_b4E_)},
- _b4u_=
- function(param$0)
- {function _b4B_(param){return _b0_}
- function _b4C_(param$0)
- {switch(param[6][0])
- {case 0:var _b4D_=0;break;
- case 1:var _b4D_=0;break;
- case 2:var _b4D_=0;break;
- case 3:var _b4D_=0;break;
- default:var _b4D_=1}
- return caml_call2(Runtime_ocaml_Runtime[29],_b1_,_b4D_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_b2_,[0],_b4C_,_b4B_)},
- _b4v_=
- [0,
- function(param$0)
- {function _b4y_(param){return _b3_}
- function _b4z_(param$0)
- {switch(param[6][0])
- {case 0:var _b4A_=1;break;
- case 1:var _b4A_=0;break;
- case 2:var _b4A_=0;break;
- case 3:var _b4A_=0;break;
- default:var _b4A_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_b4_,_b4A_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_b5_,[0],_b4z_,_b4y_)},
- _b4u_,
- _b4t_],
- _b4w_=caml_call4(Runtime_ocaml_Runtime[62],_b6_,_b4v_,_b4s_,_b4r_);
- return _b4w_}
- catch(_b4x_)
- {_b4x_ = caml_wrap_exception(_b4x_);
- if(_b4x_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_bQ_];
- throw _b4x_}}
- var
- prise_en_compte=
- caml_call3
- (Runtime_ocaml_Runtime[28],_b7_,Runtime_ocaml_Runtime[10],_bOp_);
- function _bOq_(param)
- {try
- {var
- _b35_=function(param){throw Runtime_ocaml_Runtime[2]},
- _b36_=function(param){return 0},
- _b37_=
- function(param$0)
- {function _b4c_(param){return _b9_}
- function _b4d_(param$0)
- {switch(param[6][0])
- {case 0:var _b4q_=0;break;
- case 1:var _b4q_=0;break;
- case 2:var _b4q_=1;break;
- case 3:var _b4q_=0;break;
- default:var _b4q_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_b__,_b4q_)}
- var
- _b4e_=
- [0,
- function(param$0)
- {function _b4f_(param){return _b$_}
- function _b4g_(param$0)
- {switch(param[6][0])
- {case 0:var _b4p_=0;break;
- case 1:var _b4p_=1;break;
- case 2:var _b4p_=0;break;
- case 3:var _b4p_=0;break;
- default:var _b4p_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_ca_,_b4p_)}
- var
- _b4h_=
- [0,
- function(param$0)
- {function _b4i_(param){return _cb_}
- function _b4j_(param$0)
- {switch(param[6][0])
- {case 0:var _b4o_=1;break;
- case 1:var _b4o_=0;break;
- case 2:var _b4o_=0;break;
- case 3:var _b4o_=0;break;
- default:var _b4o_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_cc_,_b4o_)}
- var
- _b4k_=
- [0,
- function(param$0)
- {function _b4l_(param){return _cd_}
- function _b4m_(param$0)
- {switch(param[6][0])
- {case 0:var _b4n_=0;break;
- case 1:var _b4n_=0;break;
- case 2:var _b4n_=0;break;
- case 3:var _b4n_=1;break;
- default:var _b4n_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_ce_,_b4n_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_cf_,[0],_b4m_,_b4l_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_cg_,_b4k_,_b4j_,_b4i_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ch_,_b4h_,_b4g_,_b4f_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ci_,_b4e_,_b4d_,_b4c_)},
- _b38_=
- [0,
- function(param$0)
- {function _b3$_(param){return _cj_}
- function _b4a_(param$0)
- {switch(param[6][0])
- {case 0:var _b4b_=0;break;
- case 1:var _b4b_=0;break;
- case 2:var _b4b_=0;break;
- case 3:var _b4b_=0;break;
- default:var _b4b_=1}
- return caml_call2(Runtime_ocaml_Runtime[29],_ck_,_b4b_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_cl_,[0],_b4a_,_b3$_)},
- _b37_],
- _b39_=caml_call4(Runtime_ocaml_Runtime[62],_cm_,_b38_,_b36_,_b35_);
- return _b39_}
- catch(_b3__)
- {_b3__ = caml_wrap_exception(_b3__);
- if(_b3__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_b8_];
- throw _b3__}}
- caml_call3
- (Runtime_ocaml_Runtime[28],_cn_,Runtime_ocaml_Runtime[10],_bOq_);
- try
- {var
- _bOr_=
- function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_3)},
- _bOs_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cp_,1)},
- _bOt_=caml_call4(Runtime_ocaml_Runtime[62],_cq_,[0],_bOs_,_bOr_)}
- catch(_b34_)
- {_b34_ = caml_wrap_exception(_b34_);
- if(_b34_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_co_];
- throw _b34_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_cr_,Runtime_ocaml_Runtime[14],_bOt_);
- try
- {var
- _bOu_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[46],cst_3$0)},
- _bOv_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ct_,1)},
- _bOw_=caml_call4(Runtime_ocaml_Runtime[62],_cu_,[0],_bOv_,_bOu_)}
- catch(_b33_)
- {_b33_ = caml_wrap_exception(_b33_);
- if(_b33_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cs_];
- throw _b33_}
- var
- nombre_enfants_alinea_2_l521_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_cv_,Runtime_ocaml_Runtime[14],_bOw_),
- _bOx_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_cw_,allocation_familiales_avril200),
- 0),
- result=caml_call2(Runtime_ocaml_Runtime[27],_cx_,_bOx_),
- version_avril_2008_dot_age_min=result[1];
- try
- {var
- _bOy_=function(param){return date_courante},
- _bOz_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cz_,1)},
- _bOA_=caml_call4(Runtime_ocaml_Runtime[62],_cA_,[0],_bOz_,_bOy_),
- bmaf_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_cB_,Runtime_ocaml_Runtime[16],_bOA_)}
- catch(_b32_)
- {_b32_ = caml_wrap_exception(_b32_);
- if(_b32_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cy_];
- throw _b32_}
- var
- _bOB_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_cC_,base_mensuelle_allocations_fam),
- [0,bmaf_dot_date_courante]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_cD_,_bOB_),
- bmaf_dot_montant=result$0[1];
- try
- {var
- _bOC_=function(param){return date_courante},
- _bOD_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cF_,1)},
- _bOE_=caml_call4(Runtime_ocaml_Runtime[62],_cG_,[0],_bOD_,_bOC_),
- prestations_familiales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_cH_,Runtime_ocaml_Runtime[16],_bOE_)}
- catch(_b31_)
- {_b31_ = caml_wrap_exception(_b31_);
- if(_b31_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cE_];
- throw _b31_}
- try
- {var
- _bOF_=function(param){return _cJ_},
- _bOG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cK_,1)},
- _bOH_=caml_call4(Runtime_ocaml_Runtime[62],_cL_,[0],_bOG_,_bOF_),
- prestations_familiales_dot_pre=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _cM_,
- embed_element_prestations_fami,
- _bOH_)}
- catch(_b30_)
- {_b30_ = caml_wrap_exception(_b30_);
- if(_b30_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cI_];
- throw _b30_}
- try
- {var
- _bOI_=function(param){return residence},
- _bOJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cO_,1)},
- _bOK_=caml_call4(Runtime_ocaml_Runtime[62],_cP_,[0],_bOJ_,_bOI_),
- prestations_familiales_dot_res=
- caml_call3(Runtime_ocaml_Runtime[28],_cQ_,embed_collectivite,_bOK_)}
- catch(_b3Z_)
- {_b3Z_ = caml_wrap_exception(_b3Z_);
- if(_b3Z_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cN_];
- throw _b3Z_}
- var
- _bOL_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_cR_,prestations_familiales),
- [0,
- prestations_familiales_dot_dat,
- prestations_familiales_dot_pre,
- prestations_familiales_dot_res]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_cS_,_bOL_),
- prestations_familiales_dot_dro=result$1[1],
- prestations_familiales_dot_con=result$1[2],
- prestations_familiales_dot_age=result$1[3],
- prestations_familiales_dot_reg=result$1[4];
- try
- {var
- _bOM_=function(param){return enfants_a_charge},
- _bON_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cU_,1)},
- _bOO_=caml_call4(Runtime_ocaml_Runtime[62],_cV_,[0],_bON_,_bOM_),
- _bOP_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant),
- enfant_le_plus_age_dot_enfants=
- caml_call3(Runtime_ocaml_Runtime[28],_cW_,_bOP_,_bOO_)}
- catch(_b3Y_)
- {_b3Y_ = caml_wrap_exception(_b3Y_);
- if(_b3Y_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cT_];
- throw _b3Y_}
- var
- _bOQ_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_cX_,enfant_le_plus_age),
- [0,enfant_le_plus_age_dot_enfants]),
- result$2=caml_call2(Runtime_ocaml_Runtime[27],_cY_,_bOQ_),
- enfant_le_plus_age_dot_le_plus=result$2[1];
- function _bOR_(param)
- {try
- {var
- _b3N_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[46],cst_14)},
- _b3O_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_c0_,1)},
- _b3P_=
- [0,
- function(param$0)
- {function _b3S_(param){return version_avril_2008_dot_age_min}
- function _b3T_(param$0)
- {var
- _b3U_=caml_call3(Runtime_ocaml_Runtime[56],2008,4,30),
- _b3V_=caml_call3(Runtime_ocaml_Runtime[59],11,0,0),
- _b3W_=caml_call2(Runtime_ocaml_Runtime[95],param[4],_b3V_),
- _b3X_=caml_call2(Runtime_ocaml_Runtime[99],_b3W_,_b3U_);
- return caml_call2(Runtime_ocaml_Runtime[29],_c1_,_b3X_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_c2_,[0],_b3T_,_b3S_)}],
- _b3Q_=caml_call4(Runtime_ocaml_Runtime[62],_c3_,_b3P_,_b3O_,_b3N_);
- return _b3Q_}
- catch(_b3R_)
- {_b3R_ = caml_wrap_exception(_b3R_);
- if(_b3R_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_cZ_];
- throw _b3R_}}
- var
- age_minimum_alinea_1_l521_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_c4_,Runtime_ocaml_Runtime[10],_bOR_);
- try
- {var
- _bOS_=
- function(param)
- {function _b3J_(enfant)
- {var
- _b3K_=
- caml_call3(Runtime_ocaml_Runtime[28],_c6_,embed_enfant,enfant),
- _b3L_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _c7_,
- prestations_familiales_dot_dro),
- _b3K_),
- _b3M_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _c8_,
- Runtime_ocaml_Runtime[12],
- _b3L_);
- return caml_call2(Runtime_ocaml_Runtime[27],_c9_,_b3M_)}
- return caml_call2
- (Runtime_ocaml_Runtime[112],_b3J_,enfants_a_charge)},
- _bOT_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c__,1)},
- _bOU_=caml_call4(Runtime_ocaml_Runtime[62],_c$_,[0],_bOT_,_bOS_)}
- catch(_b3I_)
- {_b3I_ = caml_wrap_exception(_b3I_);
- if(_b3I_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_c5_];
- throw _b3I_}
- var
- _bOV_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant),
- enfants_a_charge_droit_ouvert_=
- caml_call3(Runtime_ocaml_Runtime[28],_da_,_bOV_,_bOU_);
- function _bOW_(param)
- {try
- {var
- _b3E_=
- function(param$0)
- {return caml_equal(enfant_le_plus_age_dot_le_plus,param)},
- _b3F_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_dc_,1)},
- _b3G_=caml_call4(Runtime_ocaml_Runtime[62],_dd_,[0],_b3F_,_b3E_);
- return _b3G_}
- catch(_b3H_)
- {_b3H_ = caml_wrap_exception(_b3H_);
- if(_b3H_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_db_];
- throw _b3H_}}
- var
- est_enfant_le_plus_age=
- caml_call3
- (Runtime_ocaml_Runtime[28],_de_,Runtime_ocaml_Runtime[10],_bOW_);
- try
- {var
- _bOX_=
- function(param)
- {var
- _b3z_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b3A_=caml_call1(Runtime_ocaml_Runtime[41],_b3z_),
- _b3B_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500),
- _b3C_=caml_call2(Runtime_ocaml_Runtime[65],_b3B_,_b3A_),
- _b3D_=caml_call1(Runtime_ocaml_Runtime[31],cst_7830000);
- return caml_call2(Runtime_ocaml_Runtime[67],_b3D_,_b3C_)},
- _bOY_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dg_,1)},
- _bOZ_=
- [0,
- function(param)
- {function _b2N_(param){throw Runtime_ocaml_Runtime[2]}
- function _b2O_(param){return 0}
- function _b2P_(param)
- {function _b3o_(param)
- {var
- _b3u_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b3v_=caml_call1(Runtime_ocaml_Runtime[41],_b3u_),
- _b3w_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700),
- _b3x_=caml_call2(Runtime_ocaml_Runtime[65],_b3w_,_b3v_),
- _b3y_=caml_call1(Runtime_ocaml_Runtime[31],cst_8155800);
- return caml_call2(Runtime_ocaml_Runtime[67],_b3y_,_b3x_)}
- function _b3p_(param)
- {var
- _b3q_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _b3r_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b3q_);
- if(_b3r_)
- var
- _b3s_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _b3t_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b3s_);
- else
- var _b3t_=_b3r_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dh_,_b3t_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_di_,[0],_b3p_,_b3o_)}
- function _b2Q_(param)
- {function _b3d_(param)
- {var
- _b3j_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b3k_=caml_call1(Runtime_ocaml_Runtime[41],_b3j_),
- _b3l_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500),
- _b3m_=caml_call2(Runtime_ocaml_Runtime[65],_b3l_,_b3k_),
- _b3n_=caml_call1(Runtime_ocaml_Runtime[31],cst_8083100);
- return caml_call2(Runtime_ocaml_Runtime[67],_b3n_,_b3m_)}
- function _b3e_(param)
- {var
- _b3f_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _b3g_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b3f_);
- if(_b3g_)
- var
- _b3h_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _b3i_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b3h_);
- else
- var _b3i_=_b3g_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dj_,_b3i_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dk_,[0],_b3e_,_b3d_)}
- function _b2R_(param)
- {function _b24_(param)
- {var
- _b2__=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b2$_=caml_call1(Runtime_ocaml_Runtime[41],_b2__),
- _b3a_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400),
- _b3b_=caml_call2(Runtime_ocaml_Runtime[65],_b3a_,_b2$_),
- _b3c_=caml_call1(Runtime_ocaml_Runtime[31],cst_7955800);
- return caml_call2(Runtime_ocaml_Runtime[67],_b3c_,_b3b_)}
- function _b25_(param)
- {var
- _b26_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _b27_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b26_);
- if(_b27_)
- var
- _b28_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _b29_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b28_);
- else
- var _b29_=_b27_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dl_,_b29_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dm_,[0],_b25_,_b24_)}
- var
- _b2S_=
- [0,
- function(param)
- {function _b2T_(param)
- {var
- _b2Z_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b20_=caml_call1(Runtime_ocaml_Runtime[41],_b2Z_),
- _b21_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800),
- _b22_=caml_call2(Runtime_ocaml_Runtime[65],_b21_,_b20_),
- _b23_=caml_call1(Runtime_ocaml_Runtime[31],cst_7877000);
- return caml_call2(Runtime_ocaml_Runtime[67],_b23_,_b22_)}
- function _b2U_(param)
- {var
- _b2V_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _b2W_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2V_);
- if(_b2W_)
- var
- _b2X_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31),
- _b2Y_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2X_);
- else
- var _b2Y_=_b2W_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dn_,_b2Y_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_do_,[0],_b2U_,_b2T_)},
- _b2R_,
- _b2Q_,
- _b2P_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dp_,_b2S_,_b2O_,_b2N_)}],
- _bO0_=caml_call4(Runtime_ocaml_Runtime[62],_dq_,_bOZ_,_bOY_,_bOX_)}
- catch(_b2M_)
- {_b2M_ = caml_wrap_exception(_b2M_);
- if(_b2M_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_df_];
- throw _b2M_}
- var
- plafond_i_i_d521_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_dr_,Runtime_ocaml_Runtime[13],_bO0_);
- try
- {var
- _bO1_=
- function(param)
- {var
- _b2H_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b2I_=caml_call1(Runtime_ocaml_Runtime[41],_b2H_),
- _b2J_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500$0),
- _b2K_=caml_call2(Runtime_ocaml_Runtime[65],_b2J_,_b2I_),
- _b2L_=caml_call1(Runtime_ocaml_Runtime[31],cst_5595000);
- return caml_call2(Runtime_ocaml_Runtime[67],_b2L_,_b2K_)},
- _bO2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dt_,1)},
- _bO3_=
- [0,
- function(param)
- {function _b1V_(param){throw Runtime_ocaml_Runtime[2]}
- function _b1W_(param){return 0}
- function _b1X_(param)
- {function _b2w_(param)
- {var
- _b2C_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b2D_=caml_call1(Runtime_ocaml_Runtime[41],_b2C_),
- _b2E_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700$0),
- _b2F_=caml_call2(Runtime_ocaml_Runtime[65],_b2E_,_b2D_),
- _b2G_=caml_call1(Runtime_ocaml_Runtime[31],cst_5827900);
- return caml_call2(Runtime_ocaml_Runtime[67],_b2G_,_b2F_)}
- function _b2x_(param)
- {var
- _b2y_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _b2z_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2y_);
- if(_b2z_)
- var
- _b2A_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _b2B_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2A_);
- else
- var _b2B_=_b2z_;
- return caml_call2(Runtime_ocaml_Runtime[29],_du_,_b2B_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dv_,[0],_b2x_,_b2w_)}
- function _b1Y_(param)
- {function _b2l_(param)
- {var
- _b2r_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b2s_=caml_call1(Runtime_ocaml_Runtime[41],_b2r_),
- _b2t_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500$0),
- _b2u_=caml_call2(Runtime_ocaml_Runtime[65],_b2t_,_b2s_),
- _b2v_=caml_call1(Runtime_ocaml_Runtime[31],cst_5775900);
- return caml_call2(Runtime_ocaml_Runtime[67],_b2v_,_b2u_)}
- function _b2m_(param)
- {var
- _b2n_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _b2o_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2n_);
- if(_b2o_)
- var
- _b2p_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _b2q_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2p_);
- else
- var _b2q_=_b2o_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dw_,_b2q_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dx_,[0],_b2m_,_b2l_)}
- function _b1Z_(param)
- {function _b2a_(param)
- {var
- _b2g_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b2h_=caml_call1(Runtime_ocaml_Runtime[41],_b2g_),
- _b2i_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400$0),
- _b2j_=caml_call2(Runtime_ocaml_Runtime[65],_b2i_,_b2h_),
- _b2k_=caml_call1(Runtime_ocaml_Runtime[31],cst_5684900);
- return caml_call2(Runtime_ocaml_Runtime[67],_b2k_,_b2j_)}
- function _b2b_(param)
- {var
- _b2c_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _b2d_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b2c_);
- if(_b2d_)
- var
- _b2e_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _b2f_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b2e_);
- else
- var _b2f_=_b2d_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dy_,_b2f_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dz_,[0],_b2b_,_b2a_)}
- var
- _b10_=
- [0,
- function(param)
- {function _b11_(param)
- {var
- _b17_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b18_=caml_call1(Runtime_ocaml_Runtime[41],_b17_),
- _b19_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800$0),
- _b1__=caml_call2(Runtime_ocaml_Runtime[65],_b19_,_b18_),
- _b1$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5628600);
- return caml_call2(Runtime_ocaml_Runtime[67],_b1$_,_b1__)}
- function _b12_(param)
- {var
- _b13_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _b14_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b13_);
- if(_b14_)
- var
- _b15_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31),
- _b16_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b15_);
- else
- var _b16_=_b14_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dA_,_b16_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dB_,[0],_b12_,_b11_)},
- _b1Z_,
- _b1Y_,
- _b1X_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dC_,_b10_,_b1W_,_b1V_)}],
- _bO4_=caml_call4(Runtime_ocaml_Runtime[62],_dD_,_bO3_,_bO2_,_bO1_)}
- catch(_b1U_)
- {_b1U_ = caml_wrap_exception(_b1U_);
- if(_b1U_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ds_];
- throw _b1U_}
- var
- plafond_i_d521_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_dE_,Runtime_ocaml_Runtime[13],_bO4_);
- try
- {var
- _bO5_=function(param){return 0},
- _bO6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dG_,1)},
- _bO7_=
- [0,
- function(param)
- {function _b1N_(param){return 1}
- function _b1O_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_dH_,1)}
- var
- _b1P_=
- [0,
- function(param)
- {function _b1Q_(param){return 0}
- function _b1R_(param)
- {if(prestations_familiales_dot_reg)
- var
- _b1S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$0),
- _b1T_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b1S_);
- else
- var _b1T_=prestations_familiales_dot_reg;
- return caml_call2(Runtime_ocaml_Runtime[29],_dI_,_b1T_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dJ_,[0],_b1R_,_b1Q_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dK_,_b1P_,_b1O_,_b1N_)}],
- _bO8_=caml_call4(Runtime_ocaml_Runtime[62],_dL_,_bO7_,_bO6_,_bO5_)}
- catch(_b1M_)
- {_b1M_ = caml_wrap_exception(_b1M_);
- if(_b1M_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_dF_];
- throw _b1M_}
- var
- droit_ouvert_complement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_dM_,Runtime_ocaml_Runtime[12],_bO8_);
- function _bO9_(param)
- {try
- {var
- _b1s_=function(param){return 0},
- _b1t_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_dO_,1)},
- _b1u_=
- [0,
- function(param$0)
- {function _b1x_(param){return 1}
- function _b1y_(param$0)
- {var
- _b1E_=
- caml_call1(Runtime_ocaml_Runtime[113],enfants_a_charge),
- _b1F_=
- caml_call2
- (Runtime_ocaml_Runtime[81],
- _b1E_,
- nombre_enfants_alinea_2_l521_3);
- if(_b1F_)
- {var
- _b1G_=
- caml_equal(param[5],prestations_familiales_dot_age);
- if(_b1G_)
- {var _b1H_=param[7];
- if(_b1H_)
- var
- _b1I_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_dP_,embed_enfant,param),
- _b1J_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _dQ_,
- prestations_familiales_dot_con),
- _b1I_),
- _b1K_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _dR_,
- Runtime_ocaml_Runtime[12],
- _b1J_),
- _b1L_=caml_call2(Runtime_ocaml_Runtime[27],_dS_,_b1K_);
- else
- var _b1L_=_b1H_}
- else
- var _b1L_=_b1G_}
- else
- var _b1L_=_b1F_;
- return caml_call2(Runtime_ocaml_Runtime[29],_dT_,_b1L_)}
- var
- _b1z_=
- [0,
- function(param)
- {function _b1A_(param){return 0}
- function _b1B_(param)
- {if(prestations_familiales_dot_reg)
- var
- _b1C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$1),
- _b1D_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b1C_);
- else
- var _b1D_=prestations_familiales_dot_reg;
- return caml_call2(Runtime_ocaml_Runtime[29],_dU_,_b1D_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dV_,[0],_b1B_,_b1A_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_dW_,_b1z_,_b1y_,_b1x_)}],
- _b1v_=caml_call4(Runtime_ocaml_Runtime[62],_dX_,_b1u_,_b1t_,_b1s_);
- return _b1v_}
- catch(_b1w_)
- {_b1w_ = caml_wrap_exception(_b1w_);
- if(_b1w_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_dN_];
- throw _b1w_}}
- var
- droit_ouvert_forfaitaire=
- caml_call3
- (Runtime_ocaml_Runtime[28],_dY_,Runtime_ocaml_Runtime[10],_bO9_);
- try
- {var
- _bO__=
- function(param)
- {var
- _b1k_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$1),
- _b1l_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b1l_,_b1k_))
- {var
- _b1m_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2),
- _b1n_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _b1o_=caml_call2(Runtime_ocaml_Runtime[76],_b1n_,_b1m_),
- _b1p_=caml_call1(Runtime_ocaml_Runtime[41],_b1o_),
- _b1q_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463),
- _b1r_=
- caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1q_);
- return caml_call2(Runtime_ocaml_Runtime[65],_b1r_,_b1p_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)},
- _bO$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d0_,1)},
- _bPa_=caml_call4(Runtime_ocaml_Runtime[62],_d1_,[0],_bO$_,_bO__)}
- catch(_b1j_)
- {_b1j_ = caml_wrap_exception(_b1j_);
- if(_b1j_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_dZ_];
- throw _b1j_}
- var
- montant_initial_base_quatrieme=
- caml_call3
- (Runtime_ocaml_Runtime[28],_d2_,Runtime_ocaml_Runtime[13],_bPa_);
- try
- {var
- _bPb_=
- function(param)
- {var
- _b1g_=caml_call1(Runtime_ocaml_Runtime[46],cst_2),
- _b1h_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b1h_,_b1g_))
- {var _b1i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1i_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)},
- _bPc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d4_,1)},
- _bPd_=
- [0,
- function(param)
- {function _bZw_(param){throw Runtime_ocaml_Runtime[2]}
- function _bZx_(param){return 0}
- function _bZy_(param)
- {function _b08_(param)
- {var
- _b1d_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$0),
- _b1e_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b1e_,_b1d_))
- {var _b1f_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b1f_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)}
- function _b09_(param)
- {var _b0__=caml_equal(residence,_d5_);
- if(_b0__)
- {var
- _b0$_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _b1a_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0$_);
- if(_b1a_)
- var
- _b1b_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _b1c_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b1b_);
- else
- var _b1c_=_b1a_}
- else
- var _b1c_=_b0__;
- return caml_call2(Runtime_ocaml_Runtime[29],_d6_,_b1c_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_d7_,[0],_b09_,_b08_)}
- function _bZz_(param)
- {function _b0Y_(param)
- {var
- _b05_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$1),
- _b06_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b06_,_b05_))
- {var _b07_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b07_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)}
- function _b0Z_(param)
- {var _b00_=caml_equal(residence,_d8_);
- if(_b00_)
- {var
- _b01_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _b02_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b01_);
- if(_b02_)
- var
- _b03_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _b04_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b03_);
- else
- var _b04_=_b02_}
- else
- var _b04_=_b00_;
- return caml_call2(Runtime_ocaml_Runtime[29],_d9_,_b04_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_d__,[0],_b0Z_,_b0Y_)}
- function _bZA_(param)
- {function _b0O_(param)
- {var
- _b0V_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$2),
- _b0W_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b0W_,_b0V_))
- {var _b0X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0X_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)}
- function _b0P_(param)
- {var _b0Q_=caml_equal(residence,_d$_);
- if(_b0Q_)
- {var
- _b0R_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _b0S_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0R_);
- if(_b0S_)
- var
- _b0T_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31),
- _b0U_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0T_);
- else
- var _b0U_=_b0S_}
- else
- var _b0U_=_b0Q_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ea_,_b0U_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_eb_,[0],_b0P_,_b0O_)}
- function _bZB_(param)
- {function _b0E_(param)
- {var
- _b0L_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$3),
- _b0M_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b0M_,_b0L_))
- {var _b0N_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0N_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)}
- function _b0F_(param)
- {var _b0G_=caml_equal(residence,_ec_);
- if(_b0G_)
- {var
- _b0H_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1),
- _b0I_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0H_);
- if(_b0I_)
- var
- _b0J_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _b0K_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0J_);
- else
- var _b0K_=_b0I_}
- else
- var _b0K_=_b0G_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ed_,_b0K_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ee_,[0],_b0F_,_b0E_)}
- function _bZC_(param)
- {function _b0u_(param)
- {var
- _b0B_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$4),
- _b0C_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b0C_,_b0B_))
- {var _b0D_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0D_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)}
- function _b0v_(param)
- {var _b0w_=caml_equal(residence,_ef_);
- if(_b0w_)
- {var
- _b0x_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1),
- _b0y_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0x_);
- if(_b0y_)
- var
- _b0z_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31),
- _b0A_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0z_);
- else
- var _b0A_=_b0y_}
- else
- var _b0A_=_b0w_;
- return caml_call2(Runtime_ocaml_Runtime[29],_eg_,_b0A_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_eh_,[0],_b0v_,_b0u_)}
- function _bZD_(param)
- {function _b0k_(param)
- {var
- _b0r_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$5),
- _b0s_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b0s_,_b0r_))
- {var _b0t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0t_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)}
- function _b0l_(param)
- {var _b0m_=caml_equal(residence,_ei_);
- if(_b0m_)
- {var
- _b0n_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1),
- _b0o_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0n_);
- if(_b0o_)
- var
- _b0p_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31),
- _b0q_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0p_);
- else
- var _b0q_=_b0o_}
- else
- var _b0q_=_b0m_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ej_,_b0q_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ek_,[0],_b0l_,_b0k_)}
- function _bZE_(param)
- {function _b0a_(param)
- {var
- _b0h_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$6),
- _b0i_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_b0i_,_b0h_))
- {var _b0j_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_b0j_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)}
- function _b0b_(param)
- {var _b0c_=caml_equal(residence,_el_);
- if(_b0c_)
- {var
- _b0d_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1),
- _b0e_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_b0d_);
- if(_b0e_)
- var
- _b0f_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31),
- _b0g_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_b0f_);
- else
- var _b0g_=_b0e_}
- else
- var _b0g_=_b0c_;
- return caml_call2(Runtime_ocaml_Runtime[29],_em_,_b0g_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_en_,[0],_b0b_,_b0a_)}
- function _bZF_(param)
- {function _bZ2_(param)
- {var
- _bZ9_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$7),
- _bZ__=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bZ__,_bZ9_))
- {var _bZ$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZ$_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)}
- function _bZ3_(param)
- {var _bZ4_=caml_equal(residence,_eo_);
- if(_bZ4_)
- {var
- _bZ5_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1),
- _bZ6_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZ5_);
- if(_bZ6_)
- var
- _bZ7_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31),
- _bZ8_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZ7_);
- else
- var _bZ8_=_bZ6_}
- else
- var _bZ8_=_bZ4_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ep_,_bZ8_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_eq_,[0],_bZ3_,_bZ2_)}
- function _bZG_(param)
- {function _bZS_(param)
- {var
- _bZZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$8),
- _bZ0_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bZ0_,_bZZ_))
- {var _bZ1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZ1_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)}
- function _bZT_(param)
- {var _bZU_=caml_equal(residence,_er_);
- if(_bZU_)
- {var
- _bZV_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1),
- _bZW_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZV_);
- if(_bZW_)
- var
- _bZX_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bZY_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZX_);
- else
- var _bZY_=_bZW_}
- else
- var _bZY_=_bZU_;
- return caml_call2(Runtime_ocaml_Runtime[29],_es_,_bZY_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_et_,[0],_bZT_,_bZS_)}
- var
- _bZH_=
- [0,
- function(param)
- {function _bZI_(param)
- {var
- _bZP_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$9),
- _bZQ_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bZQ_,_bZP_))
- {var
- _bZR_=
- caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZR_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$12)}
- function _bZJ_(param)
- {var _bZK_=caml_equal(residence,_eu_);
- if(_bZK_)
- {var
- _bZL_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1),
- _bZM_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bZL_);
- if(_bZM_)
- var
- _bZN_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bZO_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bZN_);
- else
- var _bZO_=_bZM_}
- else
- var _bZO_=_bZK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ev_,_bZO_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ew_,[0],_bZJ_,_bZI_)},
- _bZG_,
- _bZF_,
- _bZE_,
- _bZD_,
- _bZC_,
- _bZB_,
- _bZA_,
- _bZz_,
- _bZy_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ex_,_bZH_,_bZx_,_bZw_)}],
- _bPe_=caml_call4(Runtime_ocaml_Runtime[62],_ey_,_bPd_,_bPc_,_bPb_)}
- catch(_bZv_)
- {_bZv_ = caml_wrap_exception(_bZv_);
- if(_bZv_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_d3_];
- throw _bZv_}
- var
- montant_initial_base_troisieme=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ez_,Runtime_ocaml_Runtime[13],_bPe_);
- try
- {var
- _bPf_=
- function(param)
- {var
- _bZu_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- return caml_call1(Runtime_ocaml_Runtime[41],_bZu_)},
- _bPg_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eB_,1)},
- _bPh_=caml_call4(Runtime_ocaml_Runtime[62],_eC_,[0],_bPg_,_bPf_)}
- catch(_bZt_)
- {_bZt_ = caml_wrap_exception(_bZt_);
- if(_bZt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_eA_];
- throw _bZt_}
- var
- nombre_total_enfants=
- caml_call3
- (Runtime_ocaml_Runtime[28],_eD_,Runtime_ocaml_Runtime[15],_bPh_);
- try
- {var
- _bPi_=
- function(param)
- {var _bZn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$13);
- function _bZo_(acc,enfant)
- {var
- _bZp_=
- caml_call3(Runtime_ocaml_Runtime[28],_eF_,embed_enfant,enfant),
- _bZq_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_eG_,prise_en_compte),
- _bZp_),
- _bZr_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_eH_,embed_prise_en_compte,_bZq_),
- match=caml_call2(Runtime_ocaml_Runtime[27],_eI_,_bZr_);
- switch(match[0])
- {case 0:
- var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$2);
- break;
- case 1:
- var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5);
- break;
- default:
- var _bZs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$14)}
- return caml_call2(Runtime_ocaml_Runtime[85],acc,_bZs_)}
- return caml_call3
- (Stdlib_Array[17],
- _bZo_,
- _bZn_,
- enfants_a_charge_droit_ouvert_)},
- _bPj_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eJ_,1)},
- _bPk_=caml_call4(Runtime_ocaml_Runtime[62],_eK_,[0],_bPj_,_bPi_)}
- catch(_bZm_)
- {_bZm_ = caml_wrap_exception(_bZm_);
- if(_bZm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_eE_];
- throw _bZm_}
- var
- nombre_moyen_enfants=
- caml_call3
- (Runtime_ocaml_Runtime[28],_eL_,Runtime_ocaml_Runtime[15],_bPk_);
- try
- {var
- _bPl_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$15)},
- _bPm_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eN_,1)},
- _bPn_=
- function(param)
- {function _bZh_(param)
- {var _bZl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZl_)}
- function _bZi_(param)
- {if(prestations_familiales_dot_reg)
- var
- _bZj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$3),
- _bZk_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bZj_);
- else
- var _bZk_=prestations_familiales_dot_reg;
- return caml_call2(Runtime_ocaml_Runtime[29],_eO_,_bZk_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_eP_,[0],_bZi_,_bZh_)},
- _bPo_=
- [0,
- function(param)
- {function _bXb_(param)
- {var
- _bZe_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$16),
- _bZf_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bZf_,_bZe_))
- {var _bZg_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bZg_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$17)}
- function _bXc_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_eR_,caml_equal(residence,_eQ_))}
- var
- _bXd_=
- [0,
- function(param)
- {function _bXe_(param){throw Runtime_ocaml_Runtime[2]}
- function _bXf_(param){return 0}
- function _bXg_(param)
- {function _bY$_(param)
- {var
- _bZc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$18),
- _bZd_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- return caml_call2(Runtime_ocaml_Runtime[83],_bZd_,_bZc_)
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_5728)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$19)}
- function _bZa_(param)
- {var
- _bZb_=caml_equal(residence,_eS_),
- avait_enfant_a_charge_avant_1e$0=
- _bZb_?avait_enfant_a_charge_avant_1e:_bZb_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _eT_,
- avait_enfant_a_charge_avant_1e$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_eU_,[0],_bZa_,_bY$_)}
- function _bXh_(param)
- {function _bY0_(param)
- {var
- _bY8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$20),
- _bY9_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bY9_,_bY8_))
- {var _bY__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bY__)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$21)}
- function _bY1_(param)
- {var _bY2_=caml_equal(residence,_eV_);
- if(_bY2_)
- {var
- _bY3_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bY4_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bY3_);
- if(_bY4_)
- var
- _bY5_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _bY6_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bY5_),
- _bY7_=_bY6_?1 - avait_enfant_a_charge_avant_1e:_bY6_;
- else
- var _bY7_=_bY4_}
- else
- var _bY7_=_bY2_;
- return caml_call2(Runtime_ocaml_Runtime[29],_eW_,_bY7_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_eX_,[0],_bY1_,_bY0_)}
- function _bXi_(param)
- {function _bYP_(param)
- {var
- _bYX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$22),
- _bYY_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bYY_,_bYX_))
- {var _bYZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYZ_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$23)}
- function _bYQ_(param)
- {var _bYR_=caml_equal(residence,_eY_);
- if(_bYR_)
- {var
- _bYS_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _bYT_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYS_);
- if(_bYT_)
- var
- _bYU_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _bYV_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYU_),
- _bYW_=_bYV_?1 - avait_enfant_a_charge_avant_1e:_bYV_;
- else
- var _bYW_=_bYT_}
- else
- var _bYW_=_bYR_;
- return caml_call2(Runtime_ocaml_Runtime[29],_eZ_,_bYW_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_e0_,[0],_bYQ_,_bYP_)}
- function _bXj_(param)
- {function _bYE_(param)
- {var
- _bYM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$24),
- _bYN_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bYN_,_bYM_))
- {var _bYO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYO_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$25)}
- function _bYF_(param)
- {var _bYG_=caml_equal(residence,_e1_);
- if(_bYG_)
- {var
- _bYH_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _bYI_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYH_);
- if(_bYI_)
- var
- _bYJ_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31),
- _bYK_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYJ_),
- _bYL_=_bYK_?1 - avait_enfant_a_charge_avant_1e:_bYK_;
- else
- var _bYL_=_bYI_}
- else
- var _bYL_=_bYG_;
- return caml_call2(Runtime_ocaml_Runtime[29],_e2_,_bYL_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_e3_,[0],_bYF_,_bYE_)}
- function _bXk_(param)
- {function _bYt_(param)
- {var
- _bYB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$26),
- _bYC_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bYC_,_bYB_))
- {var _bYD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYD_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$27)}
- function _bYu_(param)
- {var _bYv_=caml_equal(residence,_e4_);
- if(_bYv_)
- {var
- _bYw_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1),
- _bYx_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYw_);
- if(_bYx_)
- var
- _bYy_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _bYz_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYy_),
- _bYA_=_bYz_?1 - avait_enfant_a_charge_avant_1e:_bYz_;
- else
- var _bYA_=_bYx_}
- else
- var _bYA_=_bYv_;
- return caml_call2(Runtime_ocaml_Runtime[29],_e5_,_bYA_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_e6_,[0],_bYu_,_bYt_)}
- function _bXl_(param)
- {function _bYi_(param)
- {var
- _bYq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$28),
- _bYr_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bYr_,_bYq_))
- {var _bYs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYs_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$29)}
- function _bYj_(param)
- {var _bYk_=caml_equal(residence,_e7_);
- if(_bYk_)
- {var
- _bYl_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1),
- _bYm_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYl_);
- if(_bYm_)
- var
- _bYn_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31),
- _bYo_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYn_),
- _bYp_=_bYo_?1 - avait_enfant_a_charge_avant_1e:_bYo_;
- else
- var _bYp_=_bYm_}
- else
- var _bYp_=_bYk_;
- return caml_call2(Runtime_ocaml_Runtime[29],_e8_,_bYp_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_e9_,[0],_bYj_,_bYi_)}
- function _bXm_(param)
- {function _bX9_(param)
- {var
- _bYf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$30),
- _bYg_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bYg_,_bYf_))
- {var _bYh_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bYh_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$31)}
- function _bX__(param)
- {var _bX$_=caml_equal(residence,_e__);
- if(_bX$_)
- {var
- _bYa_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1),
- _bYb_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bYa_);
- if(_bYb_)
- var
- _bYc_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31),
- _bYd_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bYc_),
- _bYe_=_bYd_?1 - avait_enfant_a_charge_avant_1e:_bYd_;
- else
- var _bYe_=_bYb_}
- else
- var _bYe_=_bX$_;
- return caml_call2(Runtime_ocaml_Runtime[29],_e$_,_bYe_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fa_,[0],_bX__,_bX9_)}
- function _bXn_(param)
- {function _bXY_(param)
- {var
- _bX6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$32),
- _bX7_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bX7_,_bX6_))
- {var _bX8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bX8_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$33)}
- function _bXZ_(param)
- {var _bX0_=caml_equal(residence,_fb_);
- if(_bX0_)
- {var
- _bX1_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1),
- _bX2_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bX1_);
- if(_bX2_)
- var
- _bX3_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31),
- _bX4_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bX3_),
- _bX5_=_bX4_?1 - avait_enfant_a_charge_avant_1e:_bX4_;
- else
- var _bX5_=_bX2_}
- else
- var _bX5_=_bX0_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fc_,_bX5_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fd_,[0],_bXZ_,_bXY_)}
- function _bXo_(param)
- {function _bXN_(param)
- {var
- _bXV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$34),
- _bXW_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bXW_,_bXV_))
- {var _bXX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXX_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$35)}
- function _bXO_(param)
- {var _bXP_=caml_equal(residence,_fe_);
- if(_bXP_)
- {var
- _bXQ_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1),
- _bXR_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXQ_);
- if(_bXR_)
- var
- _bXS_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31),
- _bXT_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXS_),
- _bXU_=_bXT_?1 - avait_enfant_a_charge_avant_1e:_bXT_;
- else
- var _bXU_=_bXR_}
- else
- var _bXU_=_bXP_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ff_,_bXU_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fg_,[0],_bXO_,_bXN_)}
- function _bXp_(param)
- {function _bXC_(param)
- {var
- _bXK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$36),
- _bXL_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bXL_,_bXK_))
- {var _bXM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXM_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$37)}
- function _bXD_(param)
- {var _bXE_=caml_equal(residence,_fh_);
- if(_bXE_)
- {var
- _bXF_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1),
- _bXG_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXF_);
- if(_bXG_)
- var
- _bXH_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bXI_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXH_),
- _bXJ_=_bXI_?1 - avait_enfant_a_charge_avant_1e:_bXI_;
- else
- var _bXJ_=_bXG_}
- else
- var _bXJ_=_bXE_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fi_,_bXJ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fj_,[0],_bXD_,_bXC_)}
- var
- _bXq_=
- [0,
- function(param)
- {function _bXr_(param)
- {var
- _bXz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$38),
- _bXA_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bXA_,_bXz_))
- {var _bXB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bXB_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$39)}
- function _bXs_(param)
- {var _bXt_=caml_equal(residence,_fk_);
- if(_bXt_)
- {var
- _bXu_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1),
- _bXv_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bXu_);
- if(_bXv_)
- var
- _bXw_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bXx_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bXw_),
- _bXy_=_bXx_?1 - avait_enfant_a_charge_avant_1e:_bXx_;
- else
- var _bXy_=_bXv_}
- else
- var _bXy_=_bXt_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fl_,_bXy_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fm_,[0],_bXs_,_bXr_)},
- _bXp_,
- _bXo_,
- _bXn_,
- _bXm_,
- _bXl_,
- _bXk_,
- _bXj_,
- _bXi_,
- _bXh_,
- _bXg_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fn_,_bXq_,_bXf_,_bXe_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fo_,_bXd_,_bXc_,_bXb_)},
- _bPn_],
- _bPp_=caml_call4(Runtime_ocaml_Runtime[62],_fp_,_bPo_,_bPm_,_bPl_)}
- catch(_bXa_)
- {_bXa_ = caml_wrap_exception(_bXa_);
- if(_bXa_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_eM_];
- throw _bXa_}
- var
- montant_initial_base_premier_e=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fq_,Runtime_ocaml_Runtime[13],_bPp_);
- try
- {var
- _bPq_=function(param){return 0},
- _bPr_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fs_,1)},
- _bPs_=
- [0,
- function(param)
- {function _bWR_(param){return 1}
- function _bWS_(param)
- {var
- _bW9_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$10),
- _bW__=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bW$_=caml_call2(Runtime_ocaml_Runtime[81],_bW__,_bW9_);
- return caml_call2(Runtime_ocaml_Runtime[29],_ft_,_bW$_)}
- var
- _bWT_=
- [0,
- function(param)
- {function _bWU_(param){throw Runtime_ocaml_Runtime[2]}
- function _bWV_(param){return 0}
- var
- _bWW_=
- [0,
- function(param)
- {function _bWX_(param){return 1}
- function _bWY_(param)
- {if(prestations_familiales_dot_reg)
- var
- _bW6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$4),
- _bW7_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bW8_=caml_call2(Runtime_ocaml_Runtime[81],_bW7_,_bW6_);
- else
- var _bW8_=prestations_familiales_dot_reg;
- return caml_call2(Runtime_ocaml_Runtime[29],_fu_,_bW8_)}
- var
- _bWZ_=
- [0,
- function(param)
- {function _bW0_(param){return 1}
- function _bW1_(param)
- {var _bW2_=caml_equal(residence,_fv_);
- if(_bW2_)
- var
- _bW3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$5),
- _bW4_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bW5_=caml_call2(Runtime_ocaml_Runtime[81],_bW4_,_bW3_);
- else
- var _bW5_=_bW2_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fw_,_bW5_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fx_,[0],_bW1_,_bW0_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fy_,_bWZ_,_bWY_,_bWX_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fz_,_bWW_,_bWV_,_bWU_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fA_,_bWT_,_bWS_,_bWR_)}],
- _bPt_=caml_call4(Runtime_ocaml_Runtime[62],_fB_,_bPs_,_bPr_,_bPq_)}
- catch(_bWQ_)
- {_bWQ_ = caml_wrap_exception(_bWQ_);
- if(_bWQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_fr_];
- throw _bWQ_}
- var
- droit_ouvert_base=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fC_,Runtime_ocaml_Runtime[12],_bPt_);
- function _bPu_(param)
- {try
- {var
- _bWq_=function(param){return 0},
- _bWr_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_fE_,1)},
- _bWs_=
- [0,
- function(param$0)
- {function _bWv_(param){return 1}
- function _bWw_(param$0)
- {var
- _bWH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fF_,embed_enfant,param),
- _bWI_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_fG_,est_enfant_le_plus_age),
- _bWH_),
- _bWJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _fH_,
- Runtime_ocaml_Runtime[12],
- _bWI_),
- _bWK_=1 - caml_call2(Runtime_ocaml_Runtime[27],_fI_,_bWJ_);
- if(_bWK_)
- var
- _bWL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fJ_,embed_enfant,param),
- _bWM_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_fK_,age_minimum_alinea_1_l521_3),
- _bWL_),
- _bWN_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _fL_,
- Runtime_ocaml_Runtime[14],
- _bWM_),
- _bWO_=caml_call2(Runtime_ocaml_Runtime[27],_fM_,_bWN_),
- _bWP_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bWO_);
- else
- var _bWP_=_bWK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fN_,_bWP_)}
- var
- _bWx_=
- [0,
- function(param$0)
- {function _bWy_(param){return 1}
- function _bWz_(param$0)
- {var
- _bWA_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bWB_=
- caml_call2
- (Runtime_ocaml_Runtime[81],
- _bWA_,
- nombre_enfants_alinea_2_l521_3);
- if(_bWB_)
- var
- _bWC_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fO_,embed_enfant,param),
- _bWD_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_fP_,age_minimum_alinea_1_l521_3),
- _bWC_),
- _bWE_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _fQ_,
- Runtime_ocaml_Runtime[14],
- _bWD_),
- _bWF_=caml_call2(Runtime_ocaml_Runtime[27],_fR_,_bWE_),
- _bWG_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bWF_);
- else
- var _bWG_=_bWB_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fS_,_bWG_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fT_,[0],_bWz_,_bWy_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_fU_,_bWx_,_bWw_,_bWv_)}],
- _bWt_=caml_call4(Runtime_ocaml_Runtime[62],_fV_,_bWs_,_bWr_,_bWq_);
- return _bWt_}
- catch(_bWu_)
- {_bWu_ = caml_wrap_exception(_bWu_);
- if(_bWu_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_fD_];
- throw _bWu_}}
- var
- droit_ouvert_majoration=
- caml_call3
- (Runtime_ocaml_Runtime[28],_fW_,Runtime_ocaml_Runtime[10],_bPu_);
- function _bPv_(param)
- {try
- {var
- _bVR_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)},
- _bVS_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_fY_,1)},
- _bVT_=
- [0,
- function(param$0)
- {function _bVW_(param){throw Runtime_ocaml_Runtime[2]}
- function _bVX_(param){return 0}
- var
- _bVY_=
- [0,
- function(param$0)
- {function _bVZ_(param$0)
- {var
- _bWj_=caml_call1(Runtime_ocaml_Runtime[39],cst_12),
- _bWk_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$6),
- _bWl_=caml_call2(Runtime_ocaml_Runtime[89],_bWk_,_bWj_),
- _bWm_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$0),
- _bWn_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWm_),
- _bWo_=
- caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bWn_),
- _bWp_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bWo_,ressources_menage);
- return caml_call2(Runtime_ocaml_Runtime[65],_bWp_,_bWl_)}
- function _bV0_(param$0)
- {var
- _bWe_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3);
- if(_bWe_)
- var
- _bWf_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1),
- _bWg_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWf_),
- _bWh_=
- caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bWg_),
- _bWi_=
- caml_call2
- (Runtime_ocaml_Runtime[71],ressources_menage,_bWh_);
- else
- var _bWi_=_bWe_;
- return caml_call2(Runtime_ocaml_Runtime[29],_fZ_,_bWi_)}
- var
- _bV1_=
- [0,
- function(param$0)
- {function _bV2_(param$0)
- {var
- _bV9_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$2),
- _bV__=caml_call1(Runtime_ocaml_Runtime[39],cst_1$7),
- _bV$_=caml_call2(Runtime_ocaml_Runtime[89],_bV__,_bV9_),
- _bWa_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$3),
- _bWb_=caml_call2(Runtime_ocaml_Runtime[65],param,_bWa_),
- _bWc_=
- caml_call2
- (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bWb_),
- _bWd_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bWc_,ressources_menage);
- return caml_call2(Runtime_ocaml_Runtime[65],_bWd_,_bV$_)}
- function _bV3_(param$0)
- {var
- _bV4_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- if(_bV4_)
- var
- _bV5_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4),
- _bV6_=caml_call2(Runtime_ocaml_Runtime[65],param,_bV5_),
- _bV7_=
- caml_call2
- (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bV6_),
- _bV8_=
- caml_call2
- (Runtime_ocaml_Runtime[71],ressources_menage,_bV7_);
- else
- var _bV8_=_bV4_;
- return caml_call2(Runtime_ocaml_Runtime[29],_f0_,_bV8_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_f1_,[0],_bV3_,_bV2_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_f2_,_bV1_,_bV0_,_bVZ_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_f3_,_bVY_,_bVX_,_bVW_)}],
- _bVU_=caml_call4(Runtime_ocaml_Runtime[62],_f4_,_bVT_,_bVS_,_bVR_);
- return _bVU_}
- catch(_bVV_)
- {_bVV_ = caml_wrap_exception(_bVV_);
- if(_bVV_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_fX_];
- throw _bVV_}}
- var
- complement_degressif=
- caml_call3
- (Runtime_ocaml_Runtime[28],_f5_,Runtime_ocaml_Runtime[10],_bPv_);
- try
- {var
- _bPw_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bPx_=function(param){return 0},
- _bPy_=
- function(param)
- {function _bVN_(param)
- {var _bVQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_05059);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVQ_)}
- function _bVO_(param)
- {var
- _bVP_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_f7_,_bVP_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_f8_,[0],_bVO_,_bVN_)},
- _bPz_=
- function(param)
- {function _bVI_(param)
- {var _bVM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_10117);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVM_)}
- function _bVJ_(param)
- {var
- _bVK_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3),
- _bVL_=
- _bVK_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_i_d521_3)
- :_bVK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_f9_,_bVL_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_f__,[0],_bVJ_,_bVI_)},
- _bPA_=
- [0,
- function(param)
- {function _bVE_(param)
- {var _bVH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_20234);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVH_)}
- function _bVF_(param)
- {var
- _bVG_=
- caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_f$_,_bVG_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_ga_,[0],_bVF_,_bVE_)},
- _bPz_,
- _bPy_],
- _bPB_=caml_call4(Runtime_ocaml_Runtime[62],_gb_,_bPA_,_bPx_,_bPw_)}
- catch(_bVD_)
- {_bVD_ = caml_wrap_exception(_bVD_);
- if(_bVD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_f6_];
- throw _bVD_}
- var
- montant_verse_forfaitaire_par_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_gc_,Runtime_ocaml_Runtime[13],_bPB_);
- try
- {var
- _bPC_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bPD_=function(param){return 0},
- _bPE_=
- function(param)
- {function _bVs_(param)
- {var
- _bVv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$11),
- _bVw_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bVw_,_bVv_))
- {var
- _bVx_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12),
- _bVy_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bVz_=caml_call2(Runtime_ocaml_Runtime[76],_bVy_,_bVx_),
- _bVA_=caml_call1(Runtime_ocaml_Runtime[41],_bVz_),
- _bVB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025),
- _bVC_=
- caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVB_);
- return caml_call2(Runtime_ocaml_Runtime[65],_bVC_,_bVA_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)}
- function _bVt_(param)
- {var
- _bVu_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_ge_,_bVu_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_gf_,[0],_bVt_,_bVs_)},
- _bPF_=
- function(param)
- {function _bVg_(param)
- {var
- _bVk_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$13),
- _bVl_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bVl_,_bVk_))
- {var
- _bVm_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14),
- _bVn_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bVo_=caml_call2(Runtime_ocaml_Runtime[76],_bVn_,_bVm_),
- _bVp_=caml_call1(Runtime_ocaml_Runtime[41],_bVo_),
- _bVq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205),
- _bVr_=
- caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVq_);
- return caml_call2(Runtime_ocaml_Runtime[65],_bVr_,_bVp_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)}
- function _bVh_(param)
- {var
- _bVi_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3),
- _bVj_=
- _bVi_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_i_d521_3)
- :_bVi_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gg_,_bVj_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_gh_,[0],_bVh_,_bVg_)},
- _bPG_=
- [0,
- function(param)
- {function _bU7_(param)
- {var
- _bU__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$15),
- _bU$_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bU$_,_bU__))
- {var
- _bVa_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16),
- _bVb_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bVc_=caml_call2(Runtime_ocaml_Runtime[76],_bVb_,_bVa_),
- _bVd_=caml_call1(Runtime_ocaml_Runtime[41],_bVc_),
- _bVe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41),
- _bVf_=
- caml_call2(Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bVe_);
- return caml_call2(Runtime_ocaml_Runtime[65],_bVf_,_bVd_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)}
- function _bU8_(param)
- {var
- _bU9_=
- caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_gi_,_bU9_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_gj_,[0],_bU8_,_bU7_)},
- _bPF_,
- _bPE_],
- _bPH_=caml_call4(Runtime_ocaml_Runtime[62],_gk_,_bPG_,_bPD_,_bPC_)}
- catch(_bU6_)
- {_bU6_ = caml_wrap_exception(_bU6_);
- if(_bU6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_gd_];
- throw _bU6_}
- var
- montant_initial_base_troisieme$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_gl_,Runtime_ocaml_Runtime[13],_bPH_);
- try
- {var
- _bPI_=
- function(param)
- {function _bUI_(param){throw Runtime_ocaml_Runtime[2]}
- function _bUJ_(param){return 0}
- function _bUK_(param)
- {function _bU0_(param)
- {var
- _bU3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$8),
- _bU4_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bU4_,_bU3_))
- {var _bU5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bU5_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)}
- function _bU1_(param)
- {var
- _bU2_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_gn_,_bU2_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_go_,[0],_bU1_,_bU0_)}
- function _bUL_(param)
- {function _bUT_(param)
- {var
- _bUX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$9),
- _bUY_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUY_,_bUX_))
- {var _bUZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUZ_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)}
- function _bUU_(param)
- {var
- _bUV_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3),
- _bUW_=
- _bUV_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_i_d521_3)
- :_bUV_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gp_,_bUW_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gq_,[0],_bUU_,_bUT_)}
- var
- _bUM_=
- [0,
- function(param)
- {function _bUN_(param)
- {var
- _bUQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$10),
- _bUR_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUR_,_bUQ_))
- {var _bUS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUS_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)}
- function _bUO_(param)
- {var
- _bUP_=
- caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_d521_3);
- return caml_call2(Runtime_ocaml_Runtime[29],_gr_,_bUP_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gs_,[0],_bUO_,_bUN_)},
- _bUL_,
- _bUK_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gt_,_bUM_,_bUJ_,_bUI_)},
- _bPJ_=function(param){return 1},
- _bPK_=
- [0,
- function(param)
- {function _bSS_(param)
- {var
- _bUF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$11),
- _bUG_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUG_,_bUF_))
- {var _bUH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUH_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)}
- function _bST_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_gv_,caml_equal(residence,_gu_))}
- var
- _bSU_=
- [0,
- function(param)
- {function _bSV_(param){throw Runtime_ocaml_Runtime[2]}
- function _bSW_(param){return 0}
- function _bSX_(param)
- {function _bUv_(param)
- {var
- _bUC_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$12),
- _bUD_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUD_,_bUC_))
- {var _bUE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUE_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)}
- function _bUw_(param)
- {var _bUx_=caml_equal(residence,_gw_);
- if(_bUx_)
- {var
- _bUy_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bUz_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUy_);
- if(_bUz_)
- var
- _bUA_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _bUB_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUA_);
- else
- var _bUB_=_bUz_}
- else
- var _bUB_=_bUx_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gx_,_bUB_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gy_,[0],_bUw_,_bUv_)}
- function _bSY_(param)
- {function _bUl_(param)
- {var
- _bUs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$13),
- _bUt_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUt_,_bUs_))
- {var _bUu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUu_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)}
- function _bUm_(param)
- {var _bUn_=caml_equal(residence,_gz_);
- if(_bUn_)
- {var
- _bUo_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _bUp_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUo_);
- if(_bUp_)
- var
- _bUq_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _bUr_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUq_);
- else
- var _bUr_=_bUp_}
- else
- var _bUr_=_bUn_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gA_,_bUr_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gB_,[0],_bUm_,_bUl_)}
- function _bSZ_(param)
- {function _bUb_(param)
- {var
- _bUi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$14),
- _bUj_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bUj_,_bUi_))
- {var _bUk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUk_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)}
- function _bUc_(param)
- {var _bUd_=caml_equal(residence,_gC_);
- if(_bUd_)
- {var
- _bUe_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _bUf_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bUe_);
- if(_bUf_)
- var
- _bUg_=caml_call3(Runtime_ocaml_Runtime[56],2018,12,31),
- _bUh_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bUg_);
- else
- var _bUh_=_bUf_}
- else
- var _bUh_=_bUd_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gD_,_bUh_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gE_,[0],_bUc_,_bUb_)}
- function _bS0_(param)
- {function _bT3_(param)
- {var
- _bT__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$15),
- _bT$_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bT$_,_bT__))
- {var _bUa_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bUa_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)}
- function _bT4_(param)
- {var _bT5_=caml_equal(residence,_gF_);
- if(_bT5_)
- {var
- _bT6_=caml_call3(Runtime_ocaml_Runtime[56],2017,1,1),
- _bT7_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bT6_);
- if(_bT7_)
- var
- _bT8_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _bT9_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bT8_);
- else
- var _bT9_=_bT7_}
- else
- var _bT9_=_bT5_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gG_,_bT9_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gH_,[0],_bT4_,_bT3_)}
- function _bS1_(param)
- {function _bTT_(param)
- {var
- _bT0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$16),
- _bT1_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bT1_,_bT0_))
- {var _bT2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bT2_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)}
- function _bTU_(param)
- {var _bTV_=caml_equal(residence,_gI_);
- if(_bTV_)
- {var
- _bTW_=caml_call3(Runtime_ocaml_Runtime[56],2016,1,1),
- _bTX_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTW_);
- if(_bTX_)
- var
- _bTY_=caml_call3(Runtime_ocaml_Runtime[56],2016,12,31),
- _bTZ_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTY_);
- else
- var _bTZ_=_bTX_}
- else
- var _bTZ_=_bTV_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gJ_,_bTZ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gK_,[0],_bTU_,_bTT_)}
- function _bS2_(param)
- {function _bTJ_(param)
- {var
- _bTQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$17),
- _bTR_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bTR_,_bTQ_))
- {var _bTS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTS_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)}
- function _bTK_(param)
- {var _bTL_=caml_equal(residence,_gL_);
- if(_bTL_)
- {var
- _bTM_=caml_call3(Runtime_ocaml_Runtime[56],2015,1,1),
- _bTN_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTM_);
- if(_bTN_)
- var
- _bTO_=caml_call3(Runtime_ocaml_Runtime[56],2015,12,31),
- _bTP_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTO_);
- else
- var _bTP_=_bTN_}
- else
- var _bTP_=_bTL_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gM_,_bTP_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gN_,[0],_bTK_,_bTJ_)}
- function _bS3_(param)
- {function _bTz_(param)
- {var
- _bTG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$18),
- _bTH_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bTH_,_bTG_))
- {var _bTI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTI_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)}
- function _bTA_(param)
- {var _bTB_=caml_equal(residence,_gO_);
- if(_bTB_)
- {var
- _bTC_=caml_call3(Runtime_ocaml_Runtime[56],2014,1,1),
- _bTD_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTC_);
- if(_bTD_)
- var
- _bTE_=caml_call3(Runtime_ocaml_Runtime[56],2014,12,31),
- _bTF_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTE_);
- else
- var _bTF_=_bTD_}
- else
- var _bTF_=_bTB_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gP_,_bTF_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gQ_,[0],_bTA_,_bTz_)}
- function _bS4_(param)
- {function _bTp_(param)
- {var
- _bTw_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$19),
- _bTx_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bTx_,_bTw_))
- {var _bTy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTy_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)}
- function _bTq_(param)
- {var _bTr_=caml_equal(residence,_gR_);
- if(_bTr_)
- {var
- _bTs_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1),
- _bTt_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTs_);
- if(_bTt_)
- var
- _bTu_=caml_call3(Runtime_ocaml_Runtime[56],2013,12,31),
- _bTv_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTu_);
- else
- var _bTv_=_bTt_}
- else
- var _bTv_=_bTr_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gS_,_bTv_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gT_,[0],_bTq_,_bTp_)}
- function _bS5_(param)
- {function _bTf_(param)
- {var
- _bTm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$20),
- _bTn_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bTn_,_bTm_))
- {var _bTo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTo_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)}
- function _bTg_(param)
- {var _bTh_=caml_equal(residence,_gU_);
- if(_bTh_)
- {var
- _bTi_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1),
- _bTj_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bTi_);
- if(_bTj_)
- var
- _bTk_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bTl_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTk_);
- else
- var _bTl_=_bTj_}
- else
- var _bTl_=_bTh_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gV_,_bTl_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gW_,[0],_bTg_,_bTf_)}
- var
- _bS6_=
- [0,
- function(param)
- {function _bS7_(param)
- {var
- _bTc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$21),
- _bTd_=
- caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_bTd_,_bTc_))
- {var _bTe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bTe_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$57)}
- function _bS8_(param)
- {var _bS9_=caml_equal(residence,_gX_);
- if(_bS9_)
- {var
- _bS__=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1),
- _bS$_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bS__);
- if(_bS$_)
- var
- _bTa_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bTb_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bTa_);
- else
- var _bTb_=_bS$_}
- else
- var _bTb_=_bS9_;
- return caml_call2(Runtime_ocaml_Runtime[29],_gY_,_bTb_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_gZ_,[0],_bS8_,_bS7_)},
- _bS5_,
- _bS4_,
- _bS3_,
- _bS2_,
- _bS1_,
- _bS0_,
- _bSZ_,
- _bSY_,
- _bSX_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_g0_,_bS6_,_bSW_,_bSV_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_g1_,_bSU_,_bST_,_bSS_)}],
- _bPL_=caml_call4(Runtime_ocaml_Runtime[62],_g2_,_bPK_,_bPJ_,_bPI_)}
- catch(_bSR_)
- {_bSR_ = caml_wrap_exception(_bSR_);
- if(_bSR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_gm_];
- throw _bSR_}
- var
- montant_initial_base_deuxieme_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_g3_,Runtime_ocaml_Runtime[13],_bPL_);
- try
- {var
- _bPM_=
- function(param)
- {return caml_equal
- (nombre_total_enfants,
- caml_call1(Runtime_ocaml_Runtime[39],cst_0$58))
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0$59)
- :caml_call2
- (Runtime_ocaml_Runtime[89],
- nombre_moyen_enfants,
- nombre_total_enfants)},
- _bPN_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_g5_,1)},
- _bPO_=caml_call4(Runtime_ocaml_Runtime[62],_g6_,[0],_bPN_,_bPM_)}
- catch(_bSQ_)
- {_bSQ_ = caml_wrap_exception(_bSQ_);
- if(_bSQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_g4_];
- throw _bSQ_}
- var
- rapport_enfants_total_moyen=
- caml_call3
- (Runtime_ocaml_Runtime[28],_g7_,Runtime_ocaml_Runtime[15],_bPO_);
- function _bPP_(param)
- {try
- {var
- _bSd_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bSe_=function(param){return 0},
- _bSf_=
- function(param$0)
- {function _bSK_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$60)}
- function _bSL_(param$0)
- {var
- _bSM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_g9_,embed_enfant,param),
- _bSN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_g__,droit_ouvert_majoration),
- _bSM_),
- _bSO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _g$_,
- Runtime_ocaml_Runtime[12],
- _bSN_),
- _bSP_=1 - caml_call2(Runtime_ocaml_Runtime[27],_ha_,_bSO_);
- return caml_call2(Runtime_ocaml_Runtime[29],_hb_,_bSP_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hc_,[0],_bSL_,_bSK_)},
- _bSg_=
- function(param$0)
- {function _bSC_(param)
- {var _bSJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSJ_)}
- function _bSD_(param$0)
- {var
- _bSE_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- if(_bSE_)
- var
- _bSF_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hd_,embed_enfant,param),
- _bSG_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_he_,droit_ouvert_majoration),
- _bSF_),
- _bSH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hf_,
- Runtime_ocaml_Runtime[12],
- _bSG_),
- _bSI_=caml_call2(Runtime_ocaml_Runtime[27],_hg_,_bSH_);
- else
- var _bSI_=_bSE_;
- return caml_call2(Runtime_ocaml_Runtime[29],_hh_,_bSI_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hi_,[0],_bSD_,_bSC_)},
- _bSh_=
- function(param$0)
- {function _bSt_(param)
- {var _bSB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSB_)}
- function _bSu_(param$0)
- {var
- _bSv_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3),
- _bSw_=
- _bSv_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_i_d521_3)
- :_bSv_;
- if(_bSw_)
- var
- _bSx_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hj_,embed_enfant,param),
- _bSy_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_hk_,droit_ouvert_majoration),
- _bSx_),
- _bSz_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hl_,
- Runtime_ocaml_Runtime[12],
- _bSy_),
- _bSA_=caml_call2(Runtime_ocaml_Runtime[27],_hm_,_bSz_);
- else
- var _bSA_=_bSw_;
- return caml_call2(Runtime_ocaml_Runtime[29],_hn_,_bSA_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ho_,[0],_bSu_,_bSt_)},
- _bSi_=
- [0,
- function(param$0)
- {function _bSl_(param)
- {var _bSs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$1);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bSs_)}
- function _bSm_(param$0)
- {var
- _bSn_=
- caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage,
- plafond_i_d521_3);
- if(_bSn_)
- var
- _bSo_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hp_,embed_enfant,param),
- _bSp_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_hq_,droit_ouvert_majoration),
- _bSo_),
- _bSq_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hr_,
- Runtime_ocaml_Runtime[12],
- _bSp_),
- _bSr_=caml_call2(Runtime_ocaml_Runtime[27],_hs_,_bSq_);
- else
- var _bSr_=_bSn_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ht_,_bSr_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hu_,[0],_bSm_,_bSl_)},
- _bSh_,
- _bSg_,
- _bSf_],
- _bSj_=caml_call4(Runtime_ocaml_Runtime[62],_hv_,_bSi_,_bSe_,_bSd_);
- return _bSj_}
- catch(_bSk_)
- {_bSk_ = caml_wrap_exception(_bSk_);
- if(_bSk_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_g8_];
- throw _bSk_}}
- var
- montant_initial_metropole_majo=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hw_,Runtime_ocaml_Runtime[10],_bPP_);
- try
- {var
- _bPQ_=
- function(param)
- {var _bR7_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$61);
- function _bR8_(acc,enfant)
- {var
- _bR$_=
- caml_call3(Runtime_ocaml_Runtime[28],_hy_,embed_enfant,enfant),
- _bSa_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_hz_,droit_ouvert_forfaitaire),
- _bR$_),
- _bSb_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hA_,
- Runtime_ocaml_Runtime[12],
- _bSa_);
- if(caml_call2(Runtime_ocaml_Runtime[27],_hB_,_bSb_))
- {var _bSc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$22);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_bSc_)}
- return acc}
- var
- _bR9_=caml_call3(Stdlib_Array[17],_bR8_,_bR7_,enfants_a_charge),
- _bR__=caml_call1(Runtime_ocaml_Runtime[41],_bR9_);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- montant_verse_forfaitaire_par_,
- _bR__)},
- _bPR_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_hC_,1)},
- _bPS_=caml_call4(Runtime_ocaml_Runtime[62],_hD_,[0],_bPR_,_bPQ_)}
- catch(_bR6_)
- {_bR6_ = caml_wrap_exception(_bR6_);
- if(_bR6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_hx_];
- throw _bR6_}
- var
- montant_verse_forfaitaire=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hE_,Runtime_ocaml_Runtime[13],_bPS_);
- try
- {var
- _bPT_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[67],
- montant_initial_base_deuxieme_,
- montant_initial_base_troisieme$0)},
- _bPU_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_hG_,1)},
- _bPV_=
- [0,
- function(param)
- {function _bRU_(param){throw Runtime_ocaml_Runtime[2]}
- function _bRV_(param){return 0}
- function _bRW_(param)
- {function _bR2_(param)
- {var
- _bR4_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- montant_initial_base_premier_e,
- montant_initial_base_deuxieme_),
- _bR5_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- _bR4_,
- montant_initial_base_troisieme);
- return caml_call2
- (Runtime_ocaml_Runtime[67],
- _bR5_,
- montant_initial_base_quatrieme)}
- function _bR3_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_hI_,caml_equal(residence,_hH_))}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hJ_,[0],_bR3_,_bR2_)}
- var
- _bRX_=
- [0,
- function(param)
- {function _bRY_(param){return montant_initial_base_premier_e}
- function _bRZ_(param)
- {if(prestations_familiales_dot_reg)
- var
- _bR0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$23),
- _bR1_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bR0_);
- else
- var _bR1_=prestations_familiales_dot_reg;
- return caml_call2(Runtime_ocaml_Runtime[29],_hK_,_bR1_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hL_,[0],_bRZ_,_bRY_)},
- _bRW_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_hM_,_bRX_,_bRV_,_bRU_)}],
- _bPW_=caml_call4(Runtime_ocaml_Runtime[62],_hN_,_bPV_,_bPU_,_bPT_)}
- catch(_bRT_)
- {_bRT_ = caml_wrap_exception(_bRT_);
- if(_bRT_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_hF_];
- throw _bRT_}
- var
- montant_initial_base=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hO_,Runtime_ocaml_Runtime[13],_bPW_);
- function _bPX_(param)
- {try
- {var
- _bRj_=
- function(param$0)
- {var
- _bRQ_=
- caml_call3(Runtime_ocaml_Runtime[28],_hQ_,embed_enfant,param),
- _bRR_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _hR_,
- montant_initial_metropole_majo),
- _bRQ_),
- _bRS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hS_,
- Runtime_ocaml_Runtime[13],
- _bRR_);
- return caml_call2(Runtime_ocaml_Runtime[27],_hT_,_bRS_)},
- _bRk_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_hU_,1)},
- _bRl_=
- [0,
- function(param$0)
- {function _bRo_(param){throw Runtime_ocaml_Runtime[2]}
- function _bRp_(param){return 0}
- function _bRq_(param$0)
- {function _bRF_(param)
- {var _bRP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0567);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bRP_)}
- function _bRG_(param$0)
- {var
- _bRH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_hV_,embed_enfant,param),
- _bRI_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_hW_,droit_ouvert_majoration),
- _bRH_),
- _bRJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _hX_,
- Runtime_ocaml_Runtime[12],
- _bRI_),
- _bRK_=caml_call2(Runtime_ocaml_Runtime[27],_hY_,_bRJ_);
- if(_bRK_)
- if(prestations_familiales_dot_reg)
- {var
- _bRL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$24),
- _bRM_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bRL_);
- if(_bRM_)
- var
- _bRN_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$0),
- _bRO_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bRN_);
- else
- var _bRO_=_bRM_}
- else
- var _bRO_=prestations_familiales_dot_reg;
- else
- var _bRO_=_bRK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_hZ_,_bRO_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_h0_,[0],_bRG_,_bRF_)}
- var
- _bRr_=
- [0,
- function(param$0)
- {function _bRs_(param)
- {var _bRE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0369);
- return caml_call2
- (Runtime_ocaml_Runtime[65],bmaf_dot_montant,_bRE_)}
- function _bRt_(param$0)
- {var
- _bRu_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_h1_,embed_enfant,param),
- _bRv_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_h2_,droit_ouvert_majoration),
- _bRu_),
- _bRw_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _h3_,
- Runtime_ocaml_Runtime[12],
- _bRv_),
- _bRx_=caml_call2(Runtime_ocaml_Runtime[27],_h4_,_bRw_);
- if(_bRx_)
- if(prestations_familiales_dot_reg)
- {var
- _bRy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$25),
- _bRz_=
- caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],enfants_a_charge_droit_ouvert_),
- _bRy_);
- if(_bRz_)
- {var
- _bRA_=caml_call1(Runtime_ocaml_Runtime[46],cst_11),
- _bRB_=caml_call2(Runtime_ocaml_Runtime[81],param[5],_bRA_);
- if(_bRB_)
- var
- _bRC_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$1),
- _bRD_=caml_call2(Runtime_ocaml_Runtime[84],param[5],_bRC_);
- else
- var _bRD_=_bRB_}
- else
- var _bRD_=_bRz_}
- else
- var _bRD_=prestations_familiales_dot_reg;
- else
- var _bRD_=_bRx_;
- return caml_call2(Runtime_ocaml_Runtime[29],_h5_,_bRD_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_h6_,[0],_bRt_,_bRs_)},
- _bRq_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_h7_,_bRr_,_bRp_,_bRo_)}],
- _bRm_=caml_call4(Runtime_ocaml_Runtime[62],_h8_,_bRl_,_bRk_,_bRj_);
- return _bRm_}
- catch(_bRn_)
- {_bRn_ = caml_wrap_exception(_bRn_);
- if(_bRn_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_hP_];
- throw _bRn_}}
- var
- montant_initial_majoration=
- caml_call3
- (Runtime_ocaml_Runtime[28],_h9_,Runtime_ocaml_Runtime[10],_bPX_);
- try
- {var
- _bPY_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$62)},
- _bPZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h$_,1)},
- _bP0_=
- [0,
- function(param)
- {function _bQP_(param){throw Runtime_ocaml_Runtime[2]}
- function _bQQ_(param){return 0}
- var
- _bQR_=
- [0,
- function(param)
- {function _bQS_(param)
- {var
- _bRc_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$5),
- _bRd_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$26),
- _bRe_=caml_call2(Runtime_ocaml_Runtime[89],_bRd_,_bRc_),
- _bRf_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$6),
- _bRg_=
- caml_call2
- (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bRf_),
- _bRh_=
- caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bRg_),
- _bRi_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bRh_,ressources_menage);
- return caml_call2(Runtime_ocaml_Runtime[65],_bRi_,_bRe_)}
- function _bQT_(param)
- {var
- _bQ9_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_d521_3);
- if(_bQ9_)
- var
- _bQ__=caml_call1(Runtime_ocaml_Runtime[39],cst_12$7),
- _bQ$_=
- caml_call2
- (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQ__),
- _bRa_=
- caml_call2(Runtime_ocaml_Runtime[67],plafond_i_d521_3,_bQ$_),
- _bRb_=
- caml_call2
- (Runtime_ocaml_Runtime[71],ressources_menage,_bRa_);
- else
- var _bRb_=_bQ9_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ia_,_bRb_)}
- var
- _bQU_=
- [0,
- function(param)
- {function _bQV_(param)
- {var
- _bQ2_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$8),
- _bQ3_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$27),
- _bQ4_=caml_call2(Runtime_ocaml_Runtime[89],_bQ3_,_bQ2_),
- _bQ5_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$9),
- _bQ6_=
- caml_call2
- (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQ5_),
- _bQ7_=
- caml_call2
- (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bQ6_),
- _bQ8_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bQ7_,ressources_menage);
- return caml_call2(Runtime_ocaml_Runtime[65],_bQ8_,_bQ4_)}
- function _bQW_(param)
- {var
- _bQX_=
- caml_call2
- (Runtime_ocaml_Runtime[74],
- ressources_menage,
- plafond_i_i_d521_3);
- if(_bQX_)
- var
- _bQY_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$10),
- _bQZ_=
- caml_call2
- (Runtime_ocaml_Runtime[65],montant_verse_forfaitaire,_bQY_),
- _bQ0_=
- caml_call2
- (Runtime_ocaml_Runtime[67],plafond_i_i_d521_3,_bQZ_),
- _bQ1_=
- caml_call2
- (Runtime_ocaml_Runtime[71],ressources_menage,_bQ0_);
- else
- var _bQ1_=_bQX_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ib_,_bQ1_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ic_,[0],_bQW_,_bQV_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_id_,_bQU_,_bQT_,_bQS_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ie_,_bQR_,_bQQ_,_bQP_)}],
- _bP1_=caml_call4(Runtime_ocaml_Runtime[62],_if_,_bP0_,_bPZ_,_bPY_)}
- catch(_bQO_)
- {_bQO_ = caml_wrap_exception(_bQO_);
- if(_bQO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_h__];
- throw _bQO_}
- var
- montant_verse_complement_pour_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ig_,Runtime_ocaml_Runtime[13],_bP1_);
- try
- {var
- _bP2_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[65],
- montant_initial_base,
- rapport_enfants_total_moyen)},
- _bP3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ii_,1)},
- _bP4_=caml_call4(Runtime_ocaml_Runtime[62],_ij_,[0],_bP3_,_bP2_)}
- catch(_bQN_)
- {_bQN_ = caml_wrap_exception(_bQN_);
- if(_bQN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ih_];
- throw _bQN_}
- var
- montant_avec_garde_alternee_ba=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ik_,Runtime_ocaml_Runtime[13],_bP4_);
- function _bP5_(param)
- {try
- {var
- _bQB_=
- function(param$0)
- {var
- _bQF_=
- caml_call3(Runtime_ocaml_Runtime[28],_im_,embed_enfant,param),
- _bQG_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_in_,prise_en_compte),
- _bQF_),
- _bQH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_io_,embed_prise_en_compte,_bQG_),
- match=caml_call2(Runtime_ocaml_Runtime[27],_ip_,_bQH_);
- switch(match[0])
- {case 0:
- var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$28);
- break;
- case 1:
- var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$0);
- break;
- default:
- var _bQI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$63)}
- var
- _bQJ_=
- caml_call3(Runtime_ocaml_Runtime[28],_iq_,embed_enfant,param),
- _bQK_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_ir_,montant_initial_majoration),
- _bQJ_),
- _bQL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _is_,
- Runtime_ocaml_Runtime[13],
- _bQK_),
- _bQM_=caml_call2(Runtime_ocaml_Runtime[27],_it_,_bQL_);
- return caml_call2(Runtime_ocaml_Runtime[65],_bQM_,_bQI_)},
- _bQC_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_iu_,1)},
- _bQD_=caml_call4(Runtime_ocaml_Runtime[62],_iv_,[0],_bQC_,_bQB_);
- return _bQD_}
- catch(_bQE_)
- {_bQE_ = caml_wrap_exception(_bQE_);
- if(_bQE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_il_];
- throw _bQE_}}
- var
- montant_avec_garde_alternee_ma=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iw_,Runtime_ocaml_Runtime[10],_bP5_);
- try
- {var
- _bP6_=
- function(param)
- {return droit_ouvert_base
- ?montant_avec_garde_alternee_ba
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)},
- _bP7_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iy_,1)},
- _bP8_=caml_call4(Runtime_ocaml_Runtime[62],_iz_,[0],_bP7_,_bP6_)}
- catch(_bQA_)
- {_bQA_ = caml_wrap_exception(_bQA_);
- if(_bQA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ix_];
- throw _bQA_}
- var
- montant_verse_base=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iA_,Runtime_ocaml_Runtime[13],_bP8_);
- try
- {var
- _bP9_=
- function(param)
- {if(droit_ouvert_base)
- {var
- _bQu_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$65),
- _bQv_=
- function(acc,enfant)
- {var
- _bQw_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iC_,embed_enfant,enfant),
- _bQx_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _iD_,
- montant_avec_garde_alternee_ma),
- _bQw_),
- _bQy_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _iE_,
- Runtime_ocaml_Runtime[13],
- _bQx_),
- _bQz_=caml_call2(Runtime_ocaml_Runtime[27],_iF_,_bQy_);
- return caml_call2(Runtime_ocaml_Runtime[67],acc,_bQz_)};
- return caml_call3(Stdlib_Array[17],_bQv_,_bQu_,enfants_a_charge)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)},
- _bP__=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iG_,1)},
- _bP$_=caml_call4(Runtime_ocaml_Runtime[62],_iH_,[0],_bP__,_bP9_)}
- catch(_bQt_)
- {_bQt_ = caml_wrap_exception(_bQt_);
- if(_bQt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_iB_];
- throw _bQt_}
- var
- montant_verse_majoration=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iI_,Runtime_ocaml_Runtime[13],_bP$_);
- try
- {var
- _bQa_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[67],
- montant_verse_base,
- montant_verse_majoration)},
- _bQb_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iK_,1)},
- _bQc_=caml_call4(Runtime_ocaml_Runtime[62],_iL_,[0],_bQb_,_bQa_)}
- catch(_bQs_)
- {_bQs_ = caml_wrap_exception(_bQs_);
- if(_bQs_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_iJ_];
- throw _bQs_}
- var
- montant_base_complement_pour_b=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iM_,Runtime_ocaml_Runtime[13],_bQc_);
- try
- {var
- _bQd_=
- function(param)
- {if(droit_ouvert_complement)
- {var
- _bQp_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _iO_,
- Runtime_ocaml_Runtime[13],
- montant_base_complement_pour_b),
- _bQq_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_iP_,complement_degressif),
- _bQp_),
- _bQr_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _iQ_,
- Runtime_ocaml_Runtime[13],
- _bQq_);
- return caml_call2(Runtime_ocaml_Runtime[27],_iR_,_bQr_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$67)},
- _bQe_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iS_,1)},
- _bQf_=caml_call4(Runtime_ocaml_Runtime[62],_iT_,[0],_bQe_,_bQd_)}
- catch(_bQo_)
- {_bQo_ = caml_wrap_exception(_bQo_);
- if(_bQo_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_iN_];
- throw _bQo_}
- var
- montant_verse_complement_pour_$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iU_,Runtime_ocaml_Runtime[13],_bQf_);
- try
- {var
- _bQg_=
- function(param)
- {if(droit_ouvert_base)
- {var
- _bQl_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- montant_verse_base,
- montant_verse_majoration),
- _bQm_=
- caml_call2
- (Runtime_ocaml_Runtime[67],_bQl_,montant_verse_forfaitaire),
- _bQn_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- _bQm_,
- montant_verse_complement_pour_$0);
- return caml_call2
- (Runtime_ocaml_Runtime[67],
- _bQn_,
- montant_verse_complement_pour_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$68)},
- _bQh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iW_,1)},
- _bQi_=caml_call4(Runtime_ocaml_Runtime[62],_iX_,[0],_bQh_,_bQg_)}
- catch(_bQk_)
- {_bQk_ = caml_wrap_exception(_bQk_);
- if(_bQk_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_iV_];
- throw _bQk_}
- var
- montant_verse=
- caml_call3
- (Runtime_ocaml_Runtime[28],_iY_,Runtime_ocaml_Runtime[13],_bQi_);
- if(personne_charge_effective_perm)
- var personne_charge_effective_perm$1=personne_charge_effective_perm;
- else
- var
- _bQj_=1 - personne_charge_effective_perm,
- personne_charge_effective_perm$1=
- _bQj_?personne_charge_effective_perm$0:_bQj_;
- if(personne_charge_effective_perm$1)return [0,montant_verse];
- throw [0,Runtime_ocaml_Runtime[3],_iZ_]}
- function interface_allocations_familial(interface_allocations_familial)
- {var
- i_date_courante=interface_allocations_familial[1],
- i_enfants=interface_allocations_familial[2],
- i_ressources_menage=interface_allocations_familial[3],
- i_residence=interface_allocations_familial[4],
- i_personne_charge_effective_pe=interface_allocations_familial[5],
- i_personne_charge_effective_pe$0=interface_allocations_familial[6],
- i_avait_enfant_a_charge_avant_=interface_allocations_familial[7];
- try
- {var
- _bNq_=
- function(param)
- {function _bOa_(enfant)
- {var
- _bOb_=enfant[6],
- _bOc_=enfant[5],
- _bOd_=enfant[4],
- _bOe_=
- caml_call2
- (Runtime_ocaml_Runtime[96],i_date_courante,enfant[3]),
- _bOf_=caml_call3(Runtime_ocaml_Runtime[56],0,1,1),
- _bOg_=caml_call2(Runtime_ocaml_Runtime[95],_bOf_,_bOe_),
- _bOh_=caml_call1(Runtime_ocaml_Runtime[54],_bOg_),
- _bOi_=enfant[3],
- _bOj_=enfant[2],
- _bOk_=caml_call3(Runtime_ocaml_Runtime[59],3,0,0),
- _bOl_=caml_call2(Runtime_ocaml_Runtime[95],enfant[3],_bOk_);
- if(caml_call2(Runtime_ocaml_Runtime[98],_bOl_,i_date_courante))
- var _bOm_=_i1_;
- else
- var
- _bOn_=caml_call3(Runtime_ocaml_Runtime[59],16,0,0),
- _bOo_=caml_call2(Runtime_ocaml_Runtime[95],enfant[3],_bOn_),
- _bOm_=
- caml_call2(Runtime_ocaml_Runtime[98],_bOo_,i_date_courante)
- ?_i2_
- :_i3_;
- return [0,enfant[1],_bOm_,_bOj_,_bOi_,_bOh_,_bOd_,_bOc_,_bOb_]}
- return caml_call2(Stdlib_Array[15],_bOa_,i_enfants)},
- _bNr_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i4_,1)},
- _bNs_=caml_call4(Runtime_ocaml_Runtime[62],_i5_,[0],_bNr_,_bNq_)}
- catch(_bN$_)
- {_bN$_ = caml_wrap_exception(_bN$_);
- if(_bN$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_i0_];
- throw _bN$_}
- var
- _bNt_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant),
- enfants_a_charge=caml_call3(Runtime_ocaml_Runtime[28],_i6_,_bNt_,_bNs_);
- try
- {var
- _bNu_=function(param){return 0},
- _bNv_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i8_,1)},
- _bNw_=
- [0,
- function(param)
- {function _bN9_(param){return 1}
- function _bN__(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _i9_,
- i_personne_charge_effective_pe)}
- return caml_call4(Runtime_ocaml_Runtime[62],_i__,[0],_bN__,_bN9_)}],
- _bNx_=caml_call4(Runtime_ocaml_Runtime[62],_i$_,_bNw_,_bNv_,_bNu_),
- allocations_familiales_dot_per=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ja_,Runtime_ocaml_Runtime[12],_bNx_)}
- catch(_bN8_)
- {_bN8_ = caml_wrap_exception(_bN8_);
- if(_bN8_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_i7_];
- throw _bN8_}
- try
- {var
- _bNy_=function(param){return 0},
- _bNz_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jc_,1)},
- _bNA_=
- [0,
- function(param)
- {function _bN6_(param){return 1}
- function _bN7_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _jd_,
- i_personne_charge_effective_pe$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_je_,[0],_bN7_,_bN6_)}],
- _bNB_=caml_call4(Runtime_ocaml_Runtime[62],_jf_,_bNA_,_bNz_,_bNy_),
- allocations_familiales_dot_per$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_jg_,Runtime_ocaml_Runtime[12],_bNB_)}
- catch(_bN5_)
- {_bN5_ = caml_wrap_exception(_bN5_);
- if(_bN5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jb_];
- throw _bN5_}
- try
- {var
- _bNC_=function(param){return i_ressources_menage},
- _bND_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ji_,1)},
- _bNE_=caml_call4(Runtime_ocaml_Runtime[62],_jj_,[0],_bND_,_bNC_),
- allocations_familiales_dot_res=
- caml_call3
- (Runtime_ocaml_Runtime[28],_jk_,Runtime_ocaml_Runtime[13],_bNE_)}
- catch(_bN4_)
- {_bN4_ = caml_wrap_exception(_bN4_);
- if(_bN4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jh_];
- throw _bN4_}
- try
- {var
- _bNF_=function(param){return i_residence},
- _bNG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jm_,1)},
- _bNH_=caml_call4(Runtime_ocaml_Runtime[62],_jn_,[0],_bNG_,_bNF_),
- allocations_familiales_dot_res$0=
- caml_call3(Runtime_ocaml_Runtime[28],_jo_,embed_collectivite,_bNH_)}
- catch(_bN3_)
- {_bN3_ = caml_wrap_exception(_bN3_);
- if(_bN3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jl_];
- throw _bN3_}
- try
- {var
- _bNI_=function(param){return i_date_courante},
- _bNJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jq_,1)},
- _bNK_=caml_call4(Runtime_ocaml_Runtime[62],_jr_,[0],_bNJ_,_bNI_),
- allocations_familiales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_js_,Runtime_ocaml_Runtime[16],_bNK_)}
- catch(_bN2_)
- {_bN2_ = caml_wrap_exception(_bN2_);
- if(_bN2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jp_];
- throw _bN2_}
- try
- {var
- _bNL_=function(param){return enfants_a_charge},
- _bNM_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ju_,1)},
- _bNN_=caml_call4(Runtime_ocaml_Runtime[62],_jv_,[0],_bNM_,_bNL_),
- _bNO_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant),
- allocations_familiales_dot_enf=
- caml_call3(Runtime_ocaml_Runtime[28],_jw_,_bNO_,_bNN_)}
- catch(_bN1_)
- {_bN1_ = caml_wrap_exception(_bN1_);
- if(_bN1_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jt_];
- throw _bN1_}
- try
- {var
- _bNP_=function(param){return 0},
- _bNQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jy_,1)},
- _bNR_=
- [0,
- function(param)
- {function _bNZ_(param){return 1}
- function _bN0_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _jz_,
- i_avait_enfant_a_charge_avant_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_jA_,[0],_bN0_,_bNZ_)}],
- _bNS_=caml_call4(Runtime_ocaml_Runtime[62],_jB_,_bNR_,_bNQ_,_bNP_),
- allocations_familiales_dot_ava=
- caml_call3
- (Runtime_ocaml_Runtime[28],_jC_,Runtime_ocaml_Runtime[12],_bNS_)}
- catch(_bNY_)
- {_bNY_ = caml_wrap_exception(_bNY_);
- if(_bNY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jx_];
- throw _bNY_}
- var
- _bNT_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_jD_,allocations_familiales),
- [0,
- allocations_familiales_dot_per,
- allocations_familiales_dot_per$0,
- allocations_familiales_dot_res,
- allocations_familiales_dot_res$0,
- allocations_familiales_dot_dat,
- allocations_familiales_dot_enf,
- allocations_familiales_dot_ava]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_jE_,_bNT_),
- allocations_familiales_dot_mon=result[1];
- try
- {var
- _bNU_=function(param){return allocations_familiales_dot_mon},
- _bNV_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jG_,1)},
- _bNW_=caml_call4(Runtime_ocaml_Runtime[62],_jH_,[0],_bNV_,_bNU_)}
- catch(_bNX_)
- {_bNX_ = caml_wrap_exception(_bNX_);
- if(_bNX_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_jF_];
- throw _bNX_}
- var
- i_montant_verse=
- caml_call3
- (Runtime_ocaml_Runtime[28],_jI_,Runtime_ocaml_Runtime[13],_bNW_);
- return [0,i_montant_verse]}
- var
- Law_source_Allocations_familia=
- [0,
- PriseEnCharge,
- embed_prise_en_charge,
- SituationObligationScolaire,
- embed_situation_obligation_sco,
- PriseEnCompte,
- embed_prise_en_compte,
- VersementAllocations,
- embed_versement_allocations,
- ElementPrestationsFamiliales,
- embed_element_prestations_fami,
- Collectivite,
- embed_collectivite,
- EnfantEntree,
- embed_enfant_entree,
- Enfant,
- embed_enfant,
- PrestationsFamilialesOut,
- embed_prestations_familiales_o,
- PrestationsFamilialesIn,
- embed_prestations_familiales_i,
- AllocationFamilialesAvril2008O,
- embed_allocation_familiales_av,
- AllocationFamilialesAvril2008I,
- embed_allocation_familiales_av$0,
- EnfantLePlusAgeOut,
- embed_enfant_le_plus_age_out,
- EnfantLePlusAgeIn,
- embed_enfant_le_plus_age_in,
- AllocationsFamilialesOut,
- embed_allocations_familiales_o,
- AllocationsFamilialesIn,
- embed_allocations_familiales_i,
- SmicOut,
- embed_smic_out,
- SmicIn,
- embed_smic_in,
- BaseMensuelleAllocationsFamili,
- embed_base_mensuelle_allocatio,
- BaseMensuelleAllocationsFamili$0,
- embed_base_mensuelle_allocatio$0,
- InterfaceAllocationsFamiliales,
- embed_interface_allocations_fa,
- InterfaceAllocationsFamiliales$0,
- embed_interface_allocations_fa$0,
- allocation_familiales_avril200,
- enfant_le_plus_age,
- smic,
- base_mensuelle_allocations_fam,
- prestations_familiales,
- allocations_familiales,
- interface_allocations_familial];
- caml_register_global
- (8852,
- Law_source_Allocations_familia,
- "Law_source__Allocations_familiales");
- function prise_en_charge_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"GardeAlterneePartageAllocations","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"EffectiveEtPermanente","payload":arg$1};
- case 3:
- var arg$2=param[1];
- return {"kind":"ServicesSociauxAllocationVerseeALaFamille",
- "payload":arg$2};
- default:
- var arg$3=param[1];
- return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux",
- "payload":arg$3}}}
- function prise_en_charge_of_jsoo(prise_en_charge)
- {var cons=caml_string_of_jsstring(prise_en_charge.kind);
- if(caml_string_notequal(cons,cst_EffectiveEtPermanente$0))
- {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn))
- {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca))
- {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1))
- {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2))
- {var _bNp_=caml_call2(Stdlib_Printf[4],_jJ_,cons);
- return caml_call1(Stdlib[2],_bNp_)}
- return _jK_}
- return _jL_}
- return _jM_}
- return _jN_}
- return _jO_}
- function situation_obligation_scolaire_(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Avant","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0};
- default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}}
- function situation_obligation_scolaire_$0(situation_obligation_scolaire)
- {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind);
- if(caml_string_notequal(cons,cst_Apres))
- {if(caml_string_notequal(cons,cst_Avant$0))
- {if(caml_string_notequal(cons,cst_Pendant$0))
- {var _bNo_=caml_call2(Stdlib_Printf[4],_jP_,cons);
- return caml_call1(Stdlib[2],_bNo_)}
- return _jQ_}
- return _jR_}
- return _jS_}
- function prise_en_compte_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Complete","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Partagee","payload":arg$0};
- default:var arg$1=param[1];return {"kind":"Zero","payload":arg$1}}}
- function prise_en_compte_of_jsoo(prise_en_compte)
- {var cons=caml_string_of_jsstring(prise_en_compte.kind);
- if(caml_string_notequal(cons,cst_Complete))
- {if(caml_string_notequal(cons,cst_Partagee))
- {if(caml_string_notequal(cons,cst_Zero))
- {var _bNn_=caml_call2(Stdlib_Printf[4],_jT_,cons);
- return caml_call1(Stdlib[2],_bNn_)}
- return _jU_}
- return _jV_}
- return _jW_}
- function versement_allocations_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"Normal","payload":arg}}
- var arg$0=param[1];
- return {"kind":"AllocationVerseeAuxServicesSociaux","payload":arg$0}}
- function versement_allocations_of_jsoo(versement_allocations)
- {var cons=caml_string_of_jsstring(versement_allocations.kind);
- if(caml_string_notequal(cons,cst_AllocationVerseeAuxService))
- {if(caml_string_notequal(cons,cst_Normal$0))
- {var _bNm_=caml_call2(Stdlib_Printf[4],_jX_,cons);
- return caml_call1(Stdlib[2],_bNm_)}
- return _jY_}
- return _jZ_}
- function element_prestations_familiales(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"PrestationAccueilJeuneEnfant","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"AllocationsFamiliales","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"ComplementFamilial","payload":arg$1};
- case 3:
- var arg$2=param[1];
- return {"kind":"AllocationLogement","payload":arg$2};
- case 4:
- var arg$3=param[1];
- return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3};
- case 5:
- var arg$4=param[1];
- return {"kind":"AllocationSoutienFamilial","payload":arg$4};
- case 6:
- var arg$5=param[1];
- return {"kind":"AllocationRentreeScolaire","payload":arg$5};
- default:
- var arg$6=param[1];
- return {"kind":"AllocationJournalierePresenceParentale",
- "payload":arg$6}}}
- function element_prestations_familiales$0(element_prestations_familiales)
- {var cons=caml_string_of_jsstring(element_prestations_familiales.kind);
- if(caml_string_notequal(cons,cst_AllocationEducationEnfantH))
- {if(caml_string_notequal(cons,cst_AllocationJournalierePrese))
- {if(caml_string_notequal(cons,cst_AllocationLogement$0))
- {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire))
- {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$0))
- {if(caml_string_notequal(cons,cst_AllocationsFamiliales$0))
- {if(caml_string_notequal(cons,cst_ComplementFamilial))
- {if
- (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0))
- {var _bNl_=caml_call2(Stdlib_Printf[4],_j0_,cons);
- return caml_call1(Stdlib[2],_bNl_)}
- return _j1_}
- return _j2_}
- return _j3_}
- return _j4_}
- return _j5_}
- return _j6_}
- return _j7_}
- return _j8_}
- function collectivite_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0};
- case 2:
- var arg$1=param[1];return {"kind":"Martinique","payload":arg$1};
- case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2};
- case 4:
- var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3};
- case 5:
- var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4};
- case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5};
- case 7:
- var arg$6=param[1];
- return {"kind":"SaintPierreEtMiquelon","payload":arg$6};
- default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}}
- function collectivite_of_jsoo(collectivite)
- {var cons=caml_string_of_jsstring(collectivite.kind);
- if(caml_string_notequal(cons,cst_Guadeloupe$0))
- {if(caml_string_notequal(cons,cst_Guyane$0))
- {if(caml_string_notequal(cons,cst_LaReunion))
- {if(caml_string_notequal(cons,cst_Martinique$0))
- {if(caml_string_notequal(cons,cst_Mayotte$0))
- {if(caml_string_notequal(cons,cst_Metropole))
- {if(caml_string_notequal(cons,cst_SaintBarthelemy))
- {if(caml_string_notequal(cons,cst_SaintMartin$0))
- {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0))
- {var _bNk_=caml_call2(Stdlib_Printf[4],_j9_,cons);
- return caml_call1(Stdlib[2],_bNk_)}
- return _j__}
- return _j$_}
- return _ka_}
- return _kb_}
- return _kc_}
- return _kd_}
- return _ke_}
- return _kf_}
- return _kg_}
- function enfant_entree_to_jsoo(enfant_entree)
- {var
- t71=! ! enfant_entree[6],
- t70=! ! enfant_entree[5],
- t69=prise_en_charge_to_jsoo(enfant_entree[4]),
- t68=caml_call1(Runtime_jsoo_Runtime[5],enfant_entree[3]),
- t67=caml_call1(Runtime_ocaml_Runtime[35],enfant_entree[2]),
- t66=caml_call1(Runtime_ocaml_Runtime[48],enfant_entree[1]);
- return {"dIdentifiant":t66,
- "dRemunerationMensuelle":t67,
- "dDateDeNaissance":t68,
- "dPriseEnCharge":t69,
- "dADejaOuvertDroitAuxAllocationsFamiliales":t70,
- "dBeneficieTitrePersonnelAidePersonnelleLogement":t71}}
- function enfant_entree_of_jsoo(enfant_entree)
- {var
- _bNe_=enfant_entree.dBeneficieTitrePersonnelAidePersonnelleLogement | 0,
- _bNf_=enfant_entree.dADejaOuvertDroitAuxAllocationsFamiliales | 0,
- _bNg_=prise_en_charge_of_jsoo(enfant_entree.dPriseEnCharge),
- _bNh_=
- caml_call1(Runtime_jsoo_Runtime[4],enfant_entree.dDateDeNaissance),
- _bNi_=
- caml_call1
- (Runtime_ocaml_Runtime[42],enfant_entree.dRemunerationMensuelle),
- _bNj_=caml_call1(Runtime_ocaml_Runtime[33],_bNi_);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[49],enfant_entree.dIdentifiant),
- _bNj_,
- _bNh_,
- _bNg_,
- _bNf_,
- _bNe_]}
- function enfant_to_jsoo(enfant)
- {var
- t85=! ! enfant[8],
- t84=! ! enfant[7],
- t83=prise_en_charge_to_jsoo(enfant[6]),
- t82=caml_call1(Runtime_ocaml_Runtime[48],enfant[5]),
- t81=caml_call1(Runtime_jsoo_Runtime[5],enfant[4]),
- t80=caml_call1(Runtime_ocaml_Runtime[35],enfant[3]),
- t79=situation_obligation_scolaire_(enfant[2]),
- t78=caml_call1(Runtime_ocaml_Runtime[48],enfant[1]);
- return {"identifiant":t78,
- "obligationScolaire":t79,
- "remunerationMensuelle":t80,
- "dateDeNaissance":t81,
- "age":t82,
- "priseEnCharge":t83,
- "aDejaOuvertDroitAuxAllocationsFamiliales":t84,
- "beneficieTitrePersonnelAidePersonnelleLogement":t85}}
- function enfant_of_jsoo(enfant)
- {var
- _bM8_=enfant.beneficieTitrePersonnelAidePersonnelleLogement | 0,
- _bM9_=enfant.aDejaOuvertDroitAuxAllocationsFamiliales | 0,
- _bM__=prise_en_charge_of_jsoo(enfant.priseEnCharge),
- _bM$_=caml_call1(Runtime_ocaml_Runtime[49],enfant.age),
- _bNa_=caml_call1(Runtime_jsoo_Runtime[4],enfant.dateDeNaissance),
- _bNb_=
- caml_call1(Runtime_ocaml_Runtime[42],enfant.remunerationMensuelle),
- _bNc_=caml_call1(Runtime_ocaml_Runtime[33],_bNb_),
- _bNd_=situation_obligation_scolaire_$0(enfant.obligationScolaire);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[49],enfant.identifiant),
- _bNd_,
- _bNc_,
- _bNa_,
- _bM$_,
- _bM__,
- _bM9_,
- _bM8_]}
- function prestations_familiales_out_to_(prestations_familiales_out)
- {var
- t97=! ! prestations_familiales_out[4],
- t96=caml_call1(Runtime_ocaml_Runtime[48],prestations_familiales_out[3]);
- function t95(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var _bM7_=enfant_of_jsoo(input);
- return ! ! caml_call1(prestations_familiales_out[2],_bM7_)})}
- function t94(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var _bM6_=enfant_of_jsoo(input);
- return ! ! caml_call1(prestations_familiales_out[1],_bM6_)})}
- return {"droitOuvertOut":caml_js_wrap_meth_callback(t94),
- "conditionsHorsAgeOut":caml_js_wrap_meth_callback(t95),
- "ageL51232Out":t96,
- "regimeOutreMerL7511Out":t97}}
- function prestations_familiales_out_of_(prestations_familiales_out)
- {var
- _bM3_=prestations_familiales_out.regimeOutreMerL7511Out | 0,
- _bM4_=
- caml_call1
- (Runtime_ocaml_Runtime[49],prestations_familiales_out.ageL51232Out),
- _bM5_=caml_call1(Stdlib[2],cst_The_function_conditions_ho);
- return [0,
- caml_call1(Stdlib[2],cst_The_function_droit_ouvert_),
- _bM5_,
- _bM4_,
- _bM3_]}
- function prestations_familiales_in_to_j(prestations_familiales_in)
- {var
- t102=collectivite_to_jsoo(prestations_familiales_in[3]),
- t101=element_prestations_familiales(prestations_familiales_in[2]),
- t100=caml_call1(Runtime_jsoo_Runtime[5],prestations_familiales_in[1]);
- return {"dateCouranteIn":t100,
- "prestationCouranteIn":t101,
- "residenceIn":t102}}
- function prestations_familiales_in_of_j(prestations_familiales_in)
- {var
- _bM1_=collectivite_of_jsoo(prestations_familiales_in.residenceIn),
- _bM2_=
- element_prestations_familiales$0
- (prestations_familiales_in.prestationCouranteIn);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- prestations_familiales_in.dateCouranteIn),
- _bM2_,
- _bM1_]}
- function allocation_familiales_avril200$0(allocation_familiales_avril200)
- {var
- t106=
- caml_call1
- (Runtime_ocaml_Runtime[48],allocation_familiales_avril200[1]);
- return {"ageMinimumAlinea1L5213Out":t106}}
- function allocation_familiales_avril200$1(allocation_familiales_avril200)
- {return [0,
- caml_call1
- (Runtime_ocaml_Runtime[49],
- allocation_familiales_avril200.ageMinimumAlinea1L5213Out)]}
- function allocation_familiales_avril200$2(param){return {}}
- function allocation_familiales_avril200$3(param){return 0}
- function enfant_le_plus_age_out_to_jsoo(enfant_le_plus_age_out)
- {var t108=enfant_to_jsoo(enfant_le_plus_age_out[1]);
- return {"lePlusAgeOut":t108}}
- function enfant_le_plus_age_out_of_jsoo(enfant_le_plus_age_out)
- {return [0,enfant_of_jsoo(enfant_le_plus_age_out.lePlusAgeOut)]}
- function enfant_le_plus_age_in_to_jsoo(enfant_le_plus_age_in)
- {var _bMZ_=enfant_le_plus_age_in[1];
- function _bM0_(x){return enfant_to_jsoo(x)}
- var t110=caml_js_from_array(caml_call2(Stdlib_Array[15],_bM0_,_bMZ_));
- return {"enfantsIn":t110}}
- function enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)
- {var _bMX_=caml_js_to_array(enfant_le_plus_age_in.enfantsIn);
- function _bMY_(x){return enfant_of_jsoo(x)}
- return [0,caml_call1(caml_call1(Stdlib_Array[15],_bMY_),_bMX_)]}
- function allocations_familiales_out_to_(allocations_familiales_out)
- {var
- t112=
- caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_out[1]);
- return {"montantVerseOut":t112}}
- function allocations_familiales_out_of_(allocations_familiales_out)
- {var
- _bMW_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- allocations_familiales_out.montantVerseOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMW_)]}
- function allocations_familiales_in_to_j(allocations_familiales_in)
- {var
- t120=! ! allocations_familiales_in[7],
- _bMU_=allocations_familiales_in[6];
- function _bMV_(x){return enfant_to_jsoo(x)}
- var
- t119=caml_js_from_array(caml_call2(Stdlib_Array[15],_bMV_,_bMU_)),
- t118=caml_call1(Runtime_jsoo_Runtime[5],allocations_familiales_in[5]),
- t117=collectivite_to_jsoo(allocations_familiales_in[4]),
- t116=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_in[3]),
- t115=! ! allocations_familiales_in[2],
- t114=! ! allocations_familiales_in[1];
- return {"personneChargeEffectivePermanenteEstParentIn":t114,
- "personneChargeEffectivePermanenteRemplitTitreIIn":t115,
- "ressourcesMenageIn":t116,
- "residenceIn":t117,
- "dateCouranteIn":t118,
- "enfantsAChargeIn":t119,
- "avaitEnfantAChargeAvant1erJanvier2012In":t120}}
- function allocations_familiales_in_of_j(allocations_familiales_in)
- {var
- _bMM_=
- allocations_familiales_in.avaitEnfantAChargeAvant1erJanvier2012In
- |
- 0,
- _bMN_=caml_js_to_array(allocations_familiales_in.enfantsAChargeIn);
- function _bMO_(x){return enfant_of_jsoo(x)}
- var
- _bMP_=caml_call1(caml_call1(Stdlib_Array[15],_bMO_),_bMN_),
- _bMQ_=
- caml_call1
- (Runtime_jsoo_Runtime[4],allocations_familiales_in.dateCouranteIn),
- _bMR_=collectivite_of_jsoo(allocations_familiales_in.residenceIn),
- _bMS_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- allocations_familiales_in.ressourcesMenageIn),
- _bMT_=caml_call1(Runtime_ocaml_Runtime[33],_bMS_);
- return [0,
- allocations_familiales_in.personneChargeEffectivePermanenteEstParentIn
- |
- 0,
- allocations_familiales_in.personneChargeEffectivePermanenteRemplitTitreIIn
- |
- 0,
- _bMT_,
- _bMR_,
- _bMQ_,
- _bMP_,
- _bMM_]}
- function smic_out_to_jsoo(smic_out)
- {var t128=caml_call1(Runtime_ocaml_Runtime[35],smic_out[1]);
- return {"brutHoraireOut":t128}}
- function smic_out_of_jsoo(smic_out)
- {var _bML_=caml_call1(Runtime_ocaml_Runtime[42],smic_out.brutHoraireOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_bML_)]}
- function smic_in_to_jsoo(smic_in)
- {var
- t131=collectivite_to_jsoo(smic_in[2]),
- t130=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]);
- return {"dateCouranteIn":t130,"residenceIn":t131}}
- function smic_in_of_jsoo(smic_in)
- {var _bMK_=collectivite_of_jsoo(smic_in.residenceIn);
- return [0,
- caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn),
- _bMK_]}
- function base_mensuelle_allocations_fam$0(base_mensuelle_allocations_fam)
- {var
- t134=
- caml_call1
- (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]);
- return {"montantOut":t134}}
- function base_mensuelle_allocations_fam$1(base_mensuelle_allocations_fam)
- {var
- _bMJ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montantOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMJ_)]}
- function base_mensuelle_allocations_fam$2(base_mensuelle_allocations_fam)
- {var
- t136=
- caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]);
- return {"dateCouranteIn":t136}}
- function base_mensuelle_allocations_fam$3(base_mensuelle_allocations_fam)
- {return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- base_mensuelle_allocations_fam.dateCouranteIn)]}
- function interface_allocations_familial$0(interface_allocations_familial)
- {var
- t138=
- caml_call1
- (Runtime_ocaml_Runtime[35],interface_allocations_familial[1]);
- return {"iMontantVerseOut":t138}}
- function interface_allocations_familial$1(interface_allocations_familial)
- {var
- _bMI_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- interface_allocations_familial.iMontantVerseOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_bMI_)]}
- function interface_allocations_familial$2(interface_allocations_familial)
- {var
- t146=! ! interface_allocations_familial[7],
- t145=! ! interface_allocations_familial[6],
- t144=! ! interface_allocations_familial[5],
- t143=collectivite_to_jsoo(interface_allocations_familial[4]),
- t142=
- caml_call1
- (Runtime_ocaml_Runtime[35],interface_allocations_familial[3]),
- _bMG_=interface_allocations_familial[2];
- function _bMH_(x){return enfant_entree_to_jsoo(x)}
- var
- t141=caml_js_from_array(caml_call2(Stdlib_Array[15],_bMH_,_bMG_)),
- t140=
- caml_call1(Runtime_jsoo_Runtime[5],interface_allocations_familial[1]);
- return {"iDateCouranteIn":t140,
- "iEnfantsIn":t141,
- "iRessourcesMenageIn":t142,
- "iResidenceIn":t143,
- "iPersonneChargeEffectivePermanenteEstParentIn":t144,
- "iPersonneChargeEffectivePermanenteRemplitTitreIIn":t145,
- "iAvaitEnfantAChargeAvant1erJanvier2012In":t146}}
- function interface_allocations_familial$3(interface_allocations_familial)
- {var
- _bMx_=
- interface_allocations_familial.iAvaitEnfantAChargeAvant1erJanvier2012In
- |
- 0,
- _bMy_=
- interface_allocations_familial.iPersonneChargeEffectivePermanenteRemplitTitreIIn
- |
- 0,
- _bMz_=
- interface_allocations_familial.iPersonneChargeEffectivePermanenteEstParentIn
- |
- 0,
- _bMA_=collectivite_of_jsoo(interface_allocations_familial.iResidenceIn),
- _bMB_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- interface_allocations_familial.iRessourcesMenageIn),
- _bMC_=caml_call1(Runtime_ocaml_Runtime[33],_bMB_),
- _bMD_=caml_js_to_array(interface_allocations_familial.iEnfantsIn);
- function _bME_(x){return enfant_entree_of_jsoo(x)}
- var _bMF_=caml_call1(caml_call1(Stdlib_Array[15],_bME_),_bMD_);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- interface_allocations_familial.iDateCouranteIn),
- _bMF_,
- _bMC_,
- _bMA_,
- _bMz_,
- _bMy_,
- _bMx_]}
- function allocation_familiales_avril200$4
- (allocation_familiales_avril200$1)
- {return allocation_familiales_avril200$0
- (allocation_familiales_avril200(0))}
- function enfant_le_plus_age$0(enfant_le_plus_age_in)
- {return enfant_le_plus_age_out_to_jsoo
- (enfant_le_plus_age
- (enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)))}
- function smic$0(smic_in)
- {return smic_out_to_jsoo(smic(smic_in_of_jsoo(smic_in)))}
- function base_mensuelle_allocations_fam$4
- (base_mensuelle_allocations_fam$1)
- {return base_mensuelle_allocations_fam$0
- (base_mensuelle_allocations_fam
- (base_mensuelle_allocations_fam$3
- (base_mensuelle_allocations_fam$1)))}
- function prestations_familiales$0(prestations_familiales_in)
- {return prestations_familiales_out_to_
- (prestations_familiales
- (prestations_familiales_in_of_j(prestations_familiales_in)))}
- function allocations_familiales$0(allocations_familiales_in)
- {return allocations_familiales_out_to_
- (allocations_familiales
- (allocations_familiales_in_of_j(allocations_familiales_in)))}
- function interface_allocations_familial$4
- (interface_allocations_familial$1)
- {return interface_allocations_familial$0
- (interface_allocations_familial
- (interface_allocations_familial$3
- (interface_allocations_familial$1)))}
- function t160(param)
- {return caml_js_wrap_callback(interface_allocations_familial$4)}
- function t159(param)
- {return caml_js_wrap_callback(allocations_familiales$0)}
- function t158(param)
- {return caml_js_wrap_callback(prestations_familiales$0)}
- function t157(param)
- {return caml_js_wrap_callback(base_mensuelle_allocations_fam$4)}
- function t156(param){return caml_js_wrap_callback(smic$0)}
- function t155(param){return caml_js_wrap_callback(enfant_le_plus_age$0)}
- function t154(param)
- {return caml_js_wrap_callback(allocation_familiales_avril200$4)}
- caml_call2
- (Js_of_ocaml_Js[46],
- cst_AllocationsFamilialesLib,
- {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t154),
- "enfantLePlusAge":caml_js_wrap_meth_callback(t155),
- "smic":caml_js_wrap_meth_callback(t156),
- "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t157),
- "prestationsFamiliales":caml_js_wrap_meth_callback(t158),
- "allocationsFamiliales":caml_js_wrap_meth_callback(t159),
- "interfaceAllocationsFamiliales":caml_js_wrap_meth_callback(t160)});
- var
- Law_source_Allocations_familia$0=
- [0,
- prise_en_charge_to_jsoo,
- prise_en_charge_of_jsoo,
- situation_obligation_scolaire_,
- situation_obligation_scolaire_$0,
- prise_en_compte_to_jsoo,
- prise_en_compte_of_jsoo,
- versement_allocations_to_jsoo,
- versement_allocations_of_jsoo,
- element_prestations_familiales,
- element_prestations_familiales$0,
- collectivite_to_jsoo,
- collectivite_of_jsoo,
- enfant_entree_to_jsoo,
- enfant_entree_of_jsoo,
- enfant_to_jsoo,
- enfant_of_jsoo,
- prestations_familiales_out_to_,
- prestations_familiales_out_of_,
- prestations_familiales_in_to_j,
- prestations_familiales_in_of_j,
- allocation_familiales_avril200$0,
- allocation_familiales_avril200$1,
- allocation_familiales_avril200$2,
- allocation_familiales_avril200$3,
- enfant_le_plus_age_out_to_jsoo,
- enfant_le_plus_age_out_of_jsoo,
- enfant_le_plus_age_in_to_jsoo,
- enfant_le_plus_age_in_of_jsoo,
- allocations_familiales_out_to_,
- allocations_familiales_out_of_,
- allocations_familiales_in_to_j,
- allocations_familiales_in_of_j,
- smic_out_to_jsoo,
- smic_out_of_jsoo,
- smic_in_to_jsoo,
- smic_in_of_jsoo,
- base_mensuelle_allocations_fam$0,
- base_mensuelle_allocations_fam$1,
- base_mensuelle_allocations_fam$2,
- base_mensuelle_allocations_fam$3,
- interface_allocations_familial$0,
- interface_allocations_familial$1,
- interface_allocations_familial$2,
- interface_allocations_familial$3,
- allocation_familiales_avril200$4,
- enfant_le_plus_age$0,
- smic$0,
- base_mensuelle_allocations_fam$4,
- prestations_familiales$0,
- allocations_familiales$0,
- interface_allocations_familial$4];
- caml_register_global
- (8858,
- Law_source_Allocations_familia$0,
- "Law_source__Allocations_familiales_api_web");
- var TypeBailleur=[0];
- function embed_type_bailleur(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMw_=[0,cst_BailleurSocial,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMw_=[0,cst_BailleurPriv,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kh_,_bMw_]}
- var TypePret=[0];
- function embed_type_pret(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMv_=[0,cst_D331_32,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMv_=[0,cst_D331_63_64,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bMv_=[0,cst_D331_59_8,caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bMv_=[0,cst_D331_76_1,caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- default:
- var
- x$4=x[1],
- _bMv_=[0,cst_Autre,caml_call1(Runtime_ocaml_Runtime[11],x$4)]}
- return [6,_ki_,_bMv_]}
- var TitulairePret=[0];
- function embed_titulaire_pret(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMu_=[0,cst_Demandeur,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMu_=
- [0,
- cst_VendeurQuandDemandeurACont,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kj_,_bMu_]}
- var TypeTravauxLogementD83215=[0];
- function embed_type_travaux_logement_d8(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMt_=
- [0,
- cst_TravauxPourAcquisitionD832,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMt_=
- [0,
- cst_TravauxSurLogementD_j_Acqu,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMt_=[0,cst_PasDeTravaux,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kk_,_bMt_]}
- var TypeTravauxLogementR8425=[0];
- function embed_type_travaux_logement_r8(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMs_=
- [0,
- cst_ObjectifD_cenceLogement,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMs_=
- [0,
- cst_Pr_vuDansListeR321_15,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bMs_=
- [0,
- cst_AgrandirOuRendreHabitableD,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- default:
- var
- x$3=x[1],
- _bMs_=
- [0,cst_PasDeTravaux$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]}
- return [6,_kl_,_bMs_]}
- var AmelioreParOccupant=[0];
- function embed_ameliore_par_occupant(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMr_=[0,cst_Oui,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMr_=[0,cst_Non,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_km_,_bMr_]}
- var LimiteTranche=[0];
- function embed_limite_tranche(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMq_=[0,cst_Revenu,caml_call1(Runtime_ocaml_Runtime[13],x$0)];
- else
- var
- x$1=x[1],
- _bMq_=[0,cst_Infini,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kn_,_bMq_]}
- var LimiteTrancheDecimal=[0];
- function embed_limite_tranche_decimal(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMp_=[0,cst_Revenu$0,caml_call1(Runtime_ocaml_Runtime[15],x$0)];
- else
- var
- x$1=x[1],
- _bMp_=[0,cst_Infini$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_ko_,_bMp_]}
- var PrestationRecue=[0];
- function embed_prestation_recue(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMo_=
- [0,
- cst_AllocationsFamiliales$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMo_=
- [0,
- cst_Compl_mentFamilial$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bMo_=
- [0,
- cst_AllocationJeuneEnfant,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bMo_=
- [0,
- cst_AllocationSoutienFamilial$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _bMo_=
- [0,
- cst_AllocationSoutienEnfantHan,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- default:
- var
- x$5=x[1],
- _bMo_=
- [0,
- cst_AllocationAdulteHandicap,
- caml_call1(Runtime_ocaml_Runtime[11],x$5)]}
- return [6,_kp_,_bMo_]}
- var TypeContratTravail=[0];
- function embed_type_contrat_travail(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMn_=[0,cst_CDI,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMn_=[0,cst_Autres,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kq_,_bMn_]}
- var ParentOuAutre=[0];
- function embed_parent_ou_autre(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMm_=
- [0,
- cst_DemandeurOuConjointOuParen,
- caml_call1(Runtime_ocaml_Runtime[15],x$0)];
- else
- var
- x$1=x[1],
- _bMm_=[0,cst_Autre$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kr_,_bMm_]}
- var SituationGardeAlternee=[0];
- function embed_situation_garde_alternee(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMl_=
- [0,cst_PasDeGardeAltern_e,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMl_=
- [0,
- cst_GardeAltern_eCoefficientPr,
- caml_call1(Runtime_ocaml_Runtime[15],x$1)];
- return [6,_ks_,_bMl_]}
- var Parente=[0];
- function embed_parente(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMk_=[0,cst_Ascendant,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMk_=[0,cst_Descendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMk_=
- [0,
- cst_Collat_ralDeuxi_meTroisi_m,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kt_,_bMk_]}
- var DateDeNaissanceOuMoisDeGrosses=[0];
- function embed_date_de_naissance_ou_moi(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMj_=
- [0,cst_DateDeNaissance,caml_call1(Runtime_ocaml_Runtime[16],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMj_=
- [0,
- cst_AvantPremierJourMoisCivilT,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMj_=
- [0,
- cst_Apr_sPremierJourMoisCivilT,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_ku_,_bMj_]}
- var Nationalite=[0];
- function embed_nationalite(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMi_=[0,cst_Fran_aise,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMi_=[0,cst_trang_re,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kv_,_bMi_]}
- var ZoneDHabitation=[0];
- function embed_zone_d_habitation(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMh_=[0,cst_Zone1,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMh_=[0,cst_Zone2,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMh_=[0,cst_Zone3,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kw_,_bMh_]}
- var CategorieCalculAPL=[0];
- function embed_categorie_calcul_a_p_l(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMg_=[0,cst_Location,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMg_=
- [0,cst_AccessionPropri_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMg_=
- [0,cst_LogementFoyer,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kx_,_bMg_]}
- var PaiementLogementDistinctProfes=[0];
- function embed_paiement_logement_distin(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMf_=
- [0,
- cst_OuiAvecLoyerOuCharges,
- caml_call1(Runtime_ocaml_Runtime[13],x$0)];
- else
- var
- x$1=x[1],
- _bMf_=[0,cst_Non$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_ky_,_bMf_]}
- var VersementA=[0];
- function embed_versement_a(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMe_=[0,cst_Bailleur,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMe_=[0,cst_B_n_ficiaire,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMe_=
- [0,
- cst_tablissementHabilit,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kz_,_bMe_]}
- var DepenseLogement=[0];
- function embed_depense_logement(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMd_=
- [0,
- cst_TotalAnnuel_ch_ances,
- caml_call1(Runtime_ocaml_Runtime[13],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMd_=[0,cst_Mensualit,caml_call1(Runtime_ocaml_Runtime[13],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMd_=[0,cst_Loyer,caml_call1(Runtime_ocaml_Runtime[13],x$2)]}
- return [6,_kA_,_bMd_]}
- var ModeOccupationImpaye=[0];
- function embed_mode_occupation_impaye(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bMc_=[0,cst_Impay_Loyer,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bMc_=[0,cst_Impay_Pr_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kB_,_bMc_]}
- var EligibiliteAllocationLogement=[0];
- function embed_eligibilite_allocation_l(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMb_=[0,cst_Pas_ligible,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMb_=
- [0,
- cst_AllocationLogementFamilial,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMb_=
- [0,
- cst_AllocationLogementSociale,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kC_,_bMb_]}
- var TypeAidesPersonnelleLogement=[0];
- function embed_type_aides_personnelle_l(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bMa_=
- [0,
- cst_AidePersonnalis_eLogement,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bMa_=
- [0,
- cst_AllocationLogementFamilial$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bMa_=
- [0,
- cst_AllocationLogementSociale$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kD_,_bMa_]}
- var SituationFamiliale=[0];
- function embed_situation_familiale(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL$_=[0,cst_C_libataire,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL$_=[0,cst_Mari_s,caml_call1(Runtime_ocaml_Runtime[16],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL$_=[0,cst_Pacs_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bL$_=[0,cst_Concubins,caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _bL$_=
- [0,
- cst_C_libataireS_par_DeFait,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- default:
- var
- x$5=x[1],
- _bL$_=
- [0,
- cst_ConcubinageDontS_par_DeFai,
- caml_call1(Runtime_ocaml_Runtime[11],x$5)]}
- return [6,_kE_,_bL$_]}
- var PriseEnCharge$0=[0];
- function embed_prise_en_charge$0(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL__=
- [0,
- cst_EffectiveEtPermanente$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL__=
- [0,
- cst_R_sidenceAltern_eAllocatai,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bL__=
- [0,
- cst_R_sidenceAltern_eAllocatio,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kF_,_bL__]}
- var TypeLogementFoyer=[0];
- function embed_type_logement_foyer(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL9_=
- [0,
- cst_LogementPersonnes_g_esOuHa,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL9_=
- [0,cst_R_sidenceSociale,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL9_=
- [0,
- cst_FoyerJeunesTrvailleursOuMi,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- default:
- var
- x$3=x[1],
- _bL9_=[0,cst_Autre$1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]}
- return [6,_kG_,_bL9_]}
- var CategorieEquivalenceLoyerAlloc=[0];
- function embed_categorie_equivalence_lo(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL8_=
- [0,
- cst_tudiantLog_EnChambre,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL8_=
- [0,
- cst_tudiantLog_EnChambreR_habi,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL8_=
- [0,
- cst_Personnes_g_esSelon3DeD842,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- default:
- var
- x$3=x[1],
- _bL8_=
- [0,cst_AutresPersonnes,caml_call1(Runtime_ocaml_Runtime[11],x$3)]}
- return [6,_kH_,_bL8_]}
- var SituationFamilialeCalculAPL=[0];
- function embed_situation_familiale_calc(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bL7_=[0,cst_PersonneSeule,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bL7_=[0,cst_Couple,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_kI_,_bL7_]}
- var Collectivite$0=[0];
- function embed_collectivite$0(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL6_=[0,cst_Guadeloupe$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL6_=[0,cst_Guyane$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL6_=[0,cst_Martinique$1,caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bL6_=[0,cst_LaR_union$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _bL6_=
- [0,cst_SaintBarth_lemy$0,caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- case 5:
- var
- x$5=x[1],
- _bL6_=
- [0,cst_SaintMartin$1,caml_call1(Runtime_ocaml_Runtime[11],x$5)];
- break;
- case 6:
- var
- x$6=x[1],
- _bL6_=[0,cst_M_tropole$0,caml_call1(Runtime_ocaml_Runtime[11],x$6)];
- break;
- case 7:
- var
- x$7=x[1],
- _bL6_=
- [0,
- cst_SaintPierreEtMiquelon$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$7)];
- break;
- default:
- var
- x$8=x[1],
- _bL6_=[0,cst_Mayotte$1,caml_call1(Runtime_ocaml_Runtime[11],x$8)]}
- return [6,_kJ_,_bL6_]}
- var PriseEnChargeEnfant=[0];
- function embed_prise_en_charge_enfant(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL5_=
- [0,
- cst_GardeAltern_ePartageAlloca$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL5_=
- [0,
- cst_GardeAltern_eAllocataireUn$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL5_=
- [0,
- cst_EffectiveEtPermanente$2,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bL5_=
- [0,
- cst_ServicesSociauxAllocationV$3,
- caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- default:
- var
- x$4=x[1],
- _bL5_=
- [0,
- cst_ServicesSociauxAllocationV$4,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)]}
- return [6,_kK_,_bL5_]}
- var SituationObligationScolaire$0=[0];
- function embed_situation_obligation_sco$0(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL4_=[0,cst_Avant$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL4_=[0,cst_Pendant$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bL4_=[0,cst_Apr_s$0,caml_call1(Runtime_ocaml_Runtime[11],x$2)]}
- return [6,_kL_,_bL4_]}
- var ElementPrestationsFamiliales$0=[0];
- function embed_element_prestations_fami$0(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bL3_=
- [0,
- cst_PrestationAccueilJeuneEnfa$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bL3_=
- [0,
- cst_AllocationsFamiliales$2,
- caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bL3_=
- [0,
- cst_Compl_mentFamilial$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$2)];
- break;
- case 3:
- var
- x$3=x[1],
- _bL3_=
- [0,
- cst_AllocationLogement$1,
- caml_call1(Runtime_ocaml_Runtime[11],x$3)];
- break;
- case 4:
- var
- x$4=x[1],
- _bL3_=
- [0,
- cst_Allocation_ducationEnfantH$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$4)];
- break;
- case 5:
- var
- x$5=x[1],
- _bL3_=
- [0,
- cst_AllocationSoutienFamilial$2,
- caml_call1(Runtime_ocaml_Runtime[11],x$5)];
- break;
- case 6:
- var
- x$6=x[1],
- _bL3_=
- [0,
- cst_AllocationRentr_eScolaire$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$6)];
- break;
- default:
- var
- x$7=x[1],
- _bL3_=
- [0,
- cst_AllocationJournali_rePrese$0,
- caml_call1(Runtime_ocaml_Runtime[11],x$7)]}
- return [6,_kM_,_bL3_]}
- var PersonneSousLocation=[0];
- function embed_personne_sous_location(x)
- {var
- _bL2_=
- [0,
- [0,
- cst_conforme_article_l442_1,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- 0];
- return [7,
- _kN_,
- [0,
- [0,
- cst_age_personne_sous_location,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _bL2_]]}
- var Patrimoine=[0];
- function embed_patrimoine(x)
- {var
- _bL1_=
- [0,
- [0,
- cst_ne_produisant_pas_revenu_p,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- 0];
- return [7,
- _kO_,
- [0,
- [0,
- cst_produisant_revenu_p_riode_,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bL1_]]}
- var PersonneVivantHabituellementAu=[0];
- function embed_personne_vivant_habituel(x)
- {var
- _bL0_=
- [0,[0,cst_ressources,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0];
- return [7,
- _kP_,
- [0,
- [0,
- cst_dur_e_r_sidence_durant_p_r,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bL0_]]}
- var InfosChangementLogementD8424=[0];
- function embed_infos_changement_logemen(x)
- {var
- _bLZ_=
- [0,
- [0,
- cst_ancienne_allocation_logeme,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- 0];
- return [7,
- _kQ_,
- [0,
- [0,
- cst_ancien_loyer_principal,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bLZ_]]}
- var Bailleur=[0];
- function embed_bailleur(x)
- {var
- _bLV_=
- [0,
- [0,
- cst_acquisition_aides_tat_pr_t,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- 0],
- _bLW_=
- [0,
- [0,
- cst_construit_am_lior_conditio,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- _bLV_],
- _bLX_=
- [0,
- [0,
- cst_respecte_convention_titre_,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bLW_],
- _bLY_=
- [0,
- [0,
- cst_respecte_convention_titre_$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bLX_];
- return [7,
- _kR_,
- [0,[0,cst_type_bailleur,embed_type_bailleur(x[1])],_bLY_]]}
- var Pret=[0];
- function embed_pret(x)
- {var
- _bLT_=[0,[0,cst_titulaire_pr_t,embed_titulaire_pret(x[3])],0],
- _bLU_=
- [0,
- [0,cst_date_signature,caml_call1(Runtime_ocaml_Runtime[16],x[2])],
- _bLT_];
- return [7,_kS_,[0,[0,cst_type_pr_t,embed_type_pret(x[1])],_bLU_]]}
- var NeufOuAncien=[0];
- function embed_neuf_ou_ancien(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bLS_=[0,cst_Neuf,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var x$1=x[1],_bLS_=[0,cst_Ancien,embed_ameliore_par_occupant(x$1)];
- return [6,_kT_,_bLS_]}
- var TrancheRevenu=[0];
- function embed_tranche_revenu(x)
- {var
- _bLQ_=[0,[0,cst_taux,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0],
- _bLR_=[0,[0,cst_bas,caml_call1(Runtime_ocaml_Runtime[13],x[2])],_bLQ_];
- return [7,_kU_,[0,[0,cst_haut,embed_limite_tranche(x[1])],_bLR_]]}
- var TrancheRevenuDecimal=[0];
- function embed_tranche_revenu_decimal(x)
- {var
- _bLO_=[0,[0,cst_taux$0,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0],
- _bLP_=
- [0,[0,cst_bas$0,caml_call1(Runtime_ocaml_Runtime[15],x[2])],_bLO_];
- return [7,
- _kV_,
- [0,[0,cst_haut$0,embed_limite_tranche_decimal(x[1])],_bLP_]]}
- var AutrePersonneACharge=[0];
- function embed_autre_personne_a_charge(x)
- {var
- _bLI_=
- [0,
- [0,
- cst_titulaire_allocation_perso,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- 0],
- _bLJ_=
- [0,
- [0,
- cst_b_n_ficiaire_l161_19_l351_,
- caml_call1(Runtime_ocaml_Runtime[12],x[6])],
- _bLI_],
- _bLK_=
- [0,
- [0,
- cst_incapacit_80_pourcent_ou_r,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- _bLJ_],
- _bLL_=[0,[0,cst_parent,embed_parente(x[4])],_bLK_],
- _bLM_=
- [0,
- [0,
- cst_ascendant_descendant_colla,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bLL_],
- _bLN_=
- [0,
- [0,cst_ressources$0,caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bLM_];
- return [7,
- _kW_,
- [0,
- [0,
- cst_date_naissance,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bLN_]]}
- var DateNaissanceTroisiemeOuDernie=[0];
- function embed_date_naissance_troisieme(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bLH_=
- [0,cst_MoinsDeTroisEnfants,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var
- x$1=x[1],
- _bLH_=[0,cst_PlusDeTroisEnfants,embed_date_de_naissance_ou_moi(x$1)];
- return [6,_kX_,_bLH_]}
- var InformationsCalculAPLLogementF=[0];
- function embed_informations_calcul_a_p_(x)
- {var
- _bLG_=
- [0,
- [0,
- cst_cat_gorie_quivalence_loyer,
- embed_categorie_equivalence_lo(x[2])],
- 0];
- return [7,
- _kY_,
- [0,
- [0,cst_redevance,caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bLG_]]}
- var EnfantPrestationsFamiliales=[0];
- function embed_enfant_prestations_famil(x)
- {var
- _bLz_=
- [0,
- [0,
- cst_b_n_ficie_titre_personnel_$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- 0],
- _bLA_=
- [0,
- [0,
- cst_a_d_j_ouvert_droit_aux_all$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bLz_],
- _bLB_=
- [0,[0,cst_prise_en_charge$0,embed_prise_en_charge_enfant(x[6])],_bLA_],
- _bLC_=[0,[0,cst_ge$0,caml_call1(Runtime_ocaml_Runtime[14],x[5])],_bLB_],
- _bLD_=
- [0,
- [0,
- cst_date_de_naissance$0,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bLC_],
- _bLE_=
- [0,
- [0,
- cst_r_muneration_mensuelle$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bLD_],
- _bLF_=
- [0,
- [0,cst_obligation_scolaire$0,embed_situation_obligation_sco$0(x[2])],
- _bLE_];
- return [7,
- _kZ_,
- [0,
- [0,
- cst_identifiant$0,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _bLF_]]}
- var EnfantACharge=[0];
- function embed_enfant_a_charge(x)
- {var
- _bLr_=
- [0,
- [0,cst_situation_garde_altern_e,embed_situation_garde_alternee(x[9])],
- 0],
- _bLs_=[0,[0,cst_ge$1,caml_call1(Runtime_ocaml_Runtime[14],x[8])],_bLr_],
- _bLt_=[0,[0,cst_prise_en_charge$1,embed_prise_en_charge$0(x[7])],_bLs_],
- _bLu_=
- [0,
- [0,cst_obligation_scolaire$1,embed_situation_obligation_sco$0(x[6])],
- _bLt_],
- _bLv_=
- [0,
- [0,
- cst_r_muneration_mensuelle$1,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- _bLu_],
- _bLw_=
- [0,
- [0,
- cst_date_de_naissance$1,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bLv_],
- _bLx_=
- [0,
- [0,
- cst_a_d_j_ouvert_droit_aux_all$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bLw_],
- _bLy_=
- [0,
- [0,
- cst_b_n_ficie_titre_personnel_$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bLx_];
- return [7,
- _k0_,
- [0,
- [0,
- cst_identifiant$1,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _bLy_]]}
- var LoueOuSousLoueADesTiers=[0];
- function embed_loue_ou_sous_loue_a_des_(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bLq_=[0,cst_Non$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)];
- else
- var x$1=x[1],_bLq_=[0,cst_Oui$0,embed_personne_sous_location(x$1)];
- return [6,_k1_,_bLq_]}
- var Demandeur=[0];
- function embed_demandeur(x)
- {var
- _bLk_=
- [0,
- [0,
- cst_personne_h_berg_e_centre_s,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- 0],
- _bLl_=[0,[0,cst_patrimoine,embed_patrimoine(x[6])],_bLk_],
- _bLm_=[0,[0,cst_nationalit,embed_nationalite(x[5])],_bLl_],
- _bLn_=
- [0,[0,cst_contrat_de_travail,embed_type_contrat_travail(x[4])],_bLm_],
- _bLo_=
- [0,
- [0,cst_date_naissance$0,caml_call1(Runtime_ocaml_Runtime[16],x[3])],
- _bLn_],
- _bLp_=
- [0,
- [0,cst_age_demandeur,caml_call1(Runtime_ocaml_Runtime[14],x[2])],
- _bLo_];
- return [7,
- _k2_,
- [0,
- [0,
- cst_satisfait_conditions_l512_,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bLp_]]}
- var ChangementLogementD8424=[0];
- function embed_changement_logement_d842(x)
- {if(0 === x[0])
- var
- x$0=x[1],
- _bLj_=[0,cst_Changement,embed_infos_changement_logemen(x$0)];
- else
- var
- x$1=x[1],
- _bLj_=
- [0,cst_PasDeChangement,caml_call1(Runtime_ocaml_Runtime[11],x$1)];
- return [6,_k3_,_bLj_]}
- var Location=[0];
- function embed_location(x)
- {return [7,_k4_,[0,[0,cst_bailleur,embed_bailleur(x[1])],0]]}
- var Proprietaire=[0];
- function embed_proprietaire(x)
- {return [7,_k5_,[0,[0,cst_pr_t,embed_pret(x[1])],0]]}
- var InformationsCalculAPLAccession=[0];
- function embed_informations_calcul_a_p_$0(x)
- {var
- _bK$_=[0,[0,cst_anciennet_logement,embed_neuf_ou_ancien(x[11])],0],
- _bLa_=[0,[0,cst_type_pr_t$0,embed_type_pret(x[10])],_bK$_],
- _bLb_=
- [0,
- [0,
- cst_situation_r822_11_13_17,
- caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bLa_],
- _bLc_=
- [0,
- [0,cst_copropri_t,caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- _bLb_],
- _bLd_=
- [0,
- [0,
- cst_local_habit_premi_re_fois_,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bLc_],
- _bLe_=
- [0,
- [0,
- cst_type_travaux_logement_r842,
- embed_type_travaux_logement_r8(x[6])],
- _bLd_],
- _bLf_=
- [0,
- [0,
- cst_type_travaux_logement_d832,
- embed_type_travaux_logement_d8(x[5])],
- _bLe_],
- _bLg_=
- [0,
- [0,
- cst_date_entr_e_logement,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bLf_],
- _bLh_=
- [0,
- [0,
- cst_date_signature_pr_t,
- caml_call1(Runtime_ocaml_Runtime[16],x[3])],
- _bLg_],
- _bLi_=
- [0,
- [0,
- cst_charges_mensuelles_pr_t,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bLh_];
- return [7,
- _k6_,
- [0,
- [0,
- cst_mensualit_principale,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bLi_]]}
- var PersonneACharge=[0];
- function embed_personne_a_charge(x)
- {if(0 === x[0])
- var x$0=x[1],_bK__=[0,cst_Enfant_Charge,embed_enfant_a_charge(x$0)];
- else
- var
- x$1=x[1],
- _bK__=[0,cst_AutrePersonne_Charge,embed_autre_personne_a_charge(x$1)];
- return [6,_k7_,_bK__]}
- var InformationsCalculAPLLocatif=[0];
- function embed_informations_calcul_a_p_$1(x)
- {var
- _bK3_=
- [0,
- [0,
- cst_changement_logement_d842_4,
- embed_changement_logement_d842(x[8])],
- 0],
- _bK4_=
- [0,
- [0,
- cst_logement_meubl_d842_2,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bK3_],
- _bK5_=
- [0,
- [0,
- cst_r_duction_loyer_solidarit,
- caml_call1(Runtime_ocaml_Runtime[13],x[6])],
- _bK4_],
- _bK6_=
- [0,
- [0,
- cst_g_es_ou_handicap_adultes_h,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- _bK5_],
- _bK7_=
- [0,
- [0,cst_colocation,caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- _bK6_],
- _bK8_=
- [0,
- [0,
- cst_logement_est_chambre,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bK7_],
- _bK9_=
- [0,
- [0,
- cst_b_n_ficiaire_aide_adulte_o,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bK8_];
- return [7,
- _k8_,
- [0,
- [0,
- cst_loyer_principal,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bK9_]]}
- var LogementFoyer=[0];
- function embed_logement_foyer(x)
- {var
- _bKZ_=
- [0,
- [0,
- cst_construit_application_loi_,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- 0],
- _bK0_=
- [0,
- [0,
- cst_remplit_conditions_r832_21,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- _bKZ_],
- _bK1_=[0,[0,cst_location,embed_location(x[3])],_bK0_],
- _bK2_=
- [0,
- [0,
- cst_date_conventionnement,
- caml_call1(Runtime_ocaml_Runtime[16],x[2])],
- _bK1_];
- return [7,_k9_,[0,[0,cst_type,embed_type_logement_foyer(x[1])],_bK2_]]}
- var InformationsCalculAPL=[0];
- function embed_informations_calcul_a_p_$2(x)
- {switch(x[0])
- {case 0:
- var
- x$0=x[1],
- _bKY_=[0,cst_InfosLocatif,embed_informations_calcul_a_p_$1(x$0)];
- break;
- case 1:
- var
- x$1=x[1],
- _bKY_=[0,cst_InfosLogementFoyer,embed_informations_calcul_a_p_(x$1)];
- break;
- default:
- var
- x$2=x[1],
- _bKY_=
- [0,
- cst_InfosAccessionPropri_t,
- embed_informations_calcul_a_p_$0(x$2)]}
- return [6,_k__,_bKY_]}
- var ModeOccupation=[0];
- function embed_mode_occupation(x)
- {switch(x[0])
- {case 0:var x$0=x[1],_bKX_=[0,cst_Locataire,embed_location(x$0)];break;
- case 1:
- var
- x$1=x[1],
- _bKX_=[0,cst_R_sidentLogementFoyer,embed_logement_foyer(x$1)];
- break;
- case 2:
- var
- x$2=x[1],
- _bKX_=[0,cst_AccessionPropri_t_LocalUsa,embed_proprietaire(x$2)];
- break;
- case 3:
- var x$3=x[1],_bKX_=[0,cst_SousLocataire,embed_location(x$3)];break;
- default:
- var x$4=x[1],_bKX_=[0,cst_LocationAccession,embed_proprietaire(x$4)]}
- return [6,_k$_,_bKX_]}
- var Logement=[0];
- function embed_logement(x)
- {var
- _bKN_=[0,[0,cst_zone,embed_zone_d_habitation(x[11])],0],
- _bKO_=
- [0,
- [0,
- cst_situ_commune_d_s_quilibre_,
- caml_call1(Runtime_ocaml_Runtime[12],x[10])],
- _bKN_],
- _bKP_=
- [0,
- [0,cst_est_ancien_l831_2,caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bKO_],
- _bKQ_=
- [0,
- [0,cst_surface_m_carr_s,caml_call1(Runtime_ocaml_Runtime[14],x[8])],
- _bKP_],
- _bKR_=
- [0,
- [0,
- cst_logement_decent_l89_462,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bKQ_],
- _bKS_=[0,[0,cst_usufruit,embed_parent_ou_autre(x[6])],_bKR_],
- _bKT_=
- [0,
- [0,
- cst_lou_ou_sous_lou_des_tiers,
- embed_loue_ou_sous_loue_a_des_(x[5])],
- _bKS_],
- _bKU_=[0,[0,cst_propri_taire,embed_parent_ou_autre(x[4])],_bKT_],
- _bKV_=[0,[0,cst_mode_occupation,embed_mode_occupation(x[3])],_bKU_],
- _bKW_=
- [0,
- [0,
- cst_est_ehpad_ou_maison_autono,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bKV_];
- return [7,
- _la_,
- [0,
- [0,
- cst_r_sidence_principale,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bKW_]]}
- var Menage=[0];
- function embed_menage(x)
- {var
- _bKF_=
- [0,
- [0,
- cst_date_naissance_troisi_me_e,
- embed_date_naissance_troisieme(x[9])],
- 0],
- _bKG_=
- [0,
- [0,
- cst_enfant_na_tre_apr_s_quatri,
- caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- _bKF_],
- _bKH_=
- [0,
- [0,
- cst_nombre_enfants_na_tre_apr_,
- caml_call1(Runtime_ocaml_Runtime[14],x[7])],
- _bKG_],
- _bKI_=
- [0,
- [0,
- cst_condition_rattach_foyer_fi,
- caml_call1(Runtime_ocaml_Runtime[12],x[6])],
- _bKH_],
- _bKJ_=
- [0,[0,cst_situation_familiale,embed_situation_familiale(x[5])],_bKI_],
- _bKK_=
- [0,
- [0,
- cst_nombre_autres_occupants_lo,
- caml_call1(Runtime_ocaml_Runtime[14],x[4])],
- _bKJ_],
- _bKL_=
- [0,
- [0,
- cst_personnes_charge,
- caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[3])],
- _bKK_],
- _bKM_=[0,[0,cst_logement,embed_logement(x[2])],_bKL_];
- return [7,
- _lb_,
- [0,
- [0,
- cst_prestations_re_ues,
- caml_call2
- (Runtime_ocaml_Runtime[18],embed_prestation_recue,x[1])],
- _bKM_]]}
- var EligibiliteAidesPersonnelleLog=[0];
- function embed_eligibilite_aides_person(x)
- {var
- _bKB_=
- [0,
- [0,
- cst_condition_2_r823_4_out,
- caml_call1(Runtime_ocaml_Runtime[10],x[5])],
- 0],
- _bKC_=
- [0,
- [0,
- cst_coefficents_enfants_garde_,
- caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])],
- _bKB_],
- _bKD_=
- [0,
- [0,
- cst_nombre_personnes_charge_pr,
- caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _bKC_],
- _bKE_=
- [0,
- [0,cst_ligibilit_out,caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bKD_];
- return [7,
- _lc_,
- [0,
- [0,
- cst_date_courante_out,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bKE_]]}
- var EligibiliteAidesPersonnelleLog$0=[0];
- function embed_eligibilite_aides_person$0(x)
- {var
- _bKx_=
- [0,
- [0,
- cst_condition_logement_surface,
- caml_call1(Runtime_ocaml_Runtime[10],x[5])],
- 0],
- _bKy_=
- [0,
- [0,
- cst_condition_logement_r_siden,
- caml_call1(Runtime_ocaml_Runtime[10],x[4])],
- _bKx_],
- _bKz_=
- [0,
- [0,cst_date_courante_in$3,caml_call1(Runtime_ocaml_Runtime[16],x[3])],
- _bKy_],
- _bKA_=[0,[0,cst_demandeur_in,embed_demandeur(x[2])],_bKz_];
- return [7,_ld_,[0,[0,cst_m_nage_in,embed_menage(x[1])],_bKA_]]}
- var EligibiliteAidePersonnaliseeLo=[0];
- function embed_eligibilite_aide_personn(x)
- {var
- _bKu_=
- [0,
- [0,
- cst_coefficents_enfants_garde_$0,
- caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])],
- 0],
- _bKv_=
- [0,
- [0,
- cst_nombre_personnes_charge_pr$0,
- caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _bKu_],
- _bKw_=
- [0,
- [0,cst_ligibilit_out$0,caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bKv_];
- return [7,
- _le_,
- [0,
- [0,
- cst_date_courante_out$0,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bKw_]]}
- var EligibiliteAidePersonnaliseeLo$0=[0];
- function embed_eligibilite_aide_personn$0(x)
- {var
- _bKs_=
- [0,
- [0,cst_date_courante_in$4,caml_call1(Runtime_ocaml_Runtime[16],x[3])],
- 0],
- _bKt_=[0,[0,cst_demandeur_in$0,embed_demandeur(x[2])],_bKs_];
- return [7,_lf_,[0,[0,cst_m_nage_in$0,embed_menage(x[1])],_bKt_]]}
- var EligibiliteAllocationLogementO=[0];
- function embed_eligibilite_allocation_l$0(x)
- {var
- _bKq_=
- [0,
- [0,
- cst_coefficents_enfants_garde_$1,
- caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[3])],
- 0],
- _bKr_=
- [0,
- [0,
- cst_nombre_personnes_charge_pr$1,
- caml_call1(Runtime_ocaml_Runtime[14],x[2])],
- _bKq_];
- return [7,
- _lg_,
- [0,
- [0,
- cst_ligibilit_avec_condition_l,
- embed_eligibilite_allocation_l(x[1])],
- _bKr_]]}
- var EligibiliteAllocationLogementI=[0];
- function embed_eligibilite_allocation_l$1(x)
- {var
- _bKm_=
- [0,
- [0,cst_informations_calcul_in,embed_informations_calcul_a_p_$2(x[5])],
- 0],
- _bKn_=
- [0,
- [0,
- cst_b_n_ficie_aide_personnalis,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- _bKm_],
- _bKo_=[0,[0,cst_demandeur_in$1,embed_demandeur(x[3])],_bKn_],
- _bKp_=[0,[0,cst_m_nage_in$1,embed_menage(x[2])],_bKo_];
- return [7,
- _lh_,
- [0,
- [0,
- cst_date_courante_in$5,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bKp_]]}
- var EligibilitePrimeDeDemenagement=[0];
- function embed_eligibilite_prime_de_dem(x)
- {return [7,
- _li_,
- [0,
- [0,
- cst_montant_prime_d_m_nagement,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var EligibilitePrimeDeDemenagement$0=[0];
- function embed_eligibilite_prime_de_dem$0(x)
- {var
- _bKi_=
- [0,
- [0,
- cst_d_penses_justifi_es_r_elle,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- 0],
- _bKj_=
- [0,
- [0,cst_date_courante_in$6,caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bKi_],
- _bKk_=[0,[0,cst_demandeur_in$2,embed_demandeur(x[3])],_bKj_],
- _bKl_=[0,[0,cst_m_nage_in$2,embed_menage(x[2])],_bKk_];
- return [7,
- _lj_,
- [0,
- [0,
- cst_date_emm_nagement_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bKl_]]}
- var RessourcesAidesPersonnelleLoge=[0];
- function embed_ressources_aides_personn(x)
- {return [7,
- _lk_,
- [0,
- [0,
- cst_ressources_prises_en_compt,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var RessourcesAidesPersonnelleLoge$0=[0];
- function embed_ressources_aides_personn$0(x)
- {var
- _bJ8_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie,
- caml_call1(Runtime_ocaml_Runtime[13],x[13])],
- 0],
- _bJ9_=
- [0,
- [0,
- cst_paiement_logement_distinct,
- embed_paiement_logement_distin(x[12])],
- _bJ8_],
- _bJ__=
- [0,
- [0,
- cst_date_demande_ou_reexamen_d,
- caml_call1(Runtime_ocaml_Runtime[16],x[11])],
- _bJ9_],
- _bJ$_=
- [0,
- [0,
- cst_demandeur_poursuit_des_tud,
- caml_call1(Runtime_ocaml_Runtime[12],x[10])],
- _bJ__],
- _bKa_=
- [0,
- [0,
- cst_condition_ge_bourse_enseig,
- caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bJ$_],
- _bKb_=[0,[0,cst_mode_occupation_in,embed_mode_occupation(x[8])],_bKa_],
- _bKc_=
- [0,
- [0,cst_situation_familiale_in,embed_situation_familiale(x[7])],
- _bKb_],
- _bKd_=
- [0,
- [0,
- cst_personnes_charge_in,
- caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[6])],
- _bKc_],
- _bKe_=
- [0,
- [0,
- cst_conjoint_exerce_activit_r_,
- caml_call1(Runtime_ocaml_Runtime[12],x[5])],
- _bKd_],
- _bKf_=
- [0,
- [0,
- cst_demandeur_exerce_activit_r,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- _bKe_],
- _bKg_=
- [0,
- [0,
- cst_personnes_vivant_habituell,
- caml_call2
- (Runtime_ocaml_Runtime[18],embed_personne_vivant_habituel,x[3])],
- _bKf_],
- _bKh_=
- [0,
- [0,
- cst_ressources_conjoint_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bKg_];
- return [7,
- _ll_,
- [0,
- [0,
- cst_ressources_demandeur_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bKh_]]}
- var ContributionsSocialesAidesPers=[0];
- function embed_contributions_sociales_a(x)
- {return [7,
- _lm_,
- [0,
- [0,
- cst_montant_out$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[1])],
- 0]]}
- var ContributionsSocialesAidesPers$0=[0];
- function embed_contributions_sociales_a$0(x)
- {return [7,
- _ln_,
- [0,
- [0,
- cst_date_courante_in$7,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- 0]]}
- var CalculAidePersonnaliseeLogemen=[0];
- function embed_calcul_aide_personnalise(x)
- {var
- _bJ2_=
- [0,
- [0,
- cst_traitement_aide_finale_mon,
- caml_call1(Runtime_ocaml_Runtime[10],x[7])],
- 0],
- _bJ3_=
- [0,
- [0,
- cst_aide_finale_formule_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[6])],
- _bJ2_],
- _bJ4_=
- [0,
- [0,
- cst_participation_personnelle_,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- _bJ3_],
- _bJ5_=
- [0,
- [0,
- cst_taux_composition_familiale,
- caml_call1(Runtime_ocaml_Runtime[15],x[4])],
- _bJ4_],
- _bJ6_=
- [0,
- [0,
- cst_participation_minimale_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bJ5_],
- _bJ7_=
- [0,
- [0,
- cst_plafond_loyer_d823_16_2_ou,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJ6_];
- return [7,
- _lo_,
- [0,
- [0,
- cst_montant_forfaitaire_charge,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJ7_]]}
- var CalculAidePersonnaliseeLogemen$0=[0];
- function embed_calcul_aide_personnalise$0(x)
- {var
- _bJR_=
- [0,
- [0,
- cst_r_duction_loyer_solidarit_,
- caml_call1(Runtime_ocaml_Runtime[13],x[12])],
- 0],
- _bJS_=
- [0,
- [0,cst_colocation_in,caml_call1(Runtime_ocaml_Runtime[12],x[11])],
- _bJR_],
- _bJT_=
- [0,[0,cst_type_aide_in,embed_type_aides_personnelle_l(x[10])],_bJS_],
- _bJU_=
- [0,
- [0,
- cst_g_es_ou_handicap_adultes_h$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bJT_],
- _bJV_=
- [0,
- [0,
- cst_logement_est_chambre_in,
- caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- _bJU_],
- _bJW_=[0,[0,cst_zone_in,embed_zone_d_habitation(x[7])],_bJV_],
- _bJX_=
- [0,
- [0,
- cst_situation_familiale_calcul,
- embed_situation_familiale_calc(x[6])],
- _bJW_],
- _bJY_=
- [0,
- [0,
- cst_nombre_personnes_charge_in,
- caml_call1(Runtime_ocaml_Runtime[14],x[5])],
- _bJX_],
- _bJZ_=
- [0,
- [0,cst_date_courante_in$8,caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bJY_],
- _bJ0_=
- [0,
- [0,
- cst_b_n_ficiaire_aide_adulte_o$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bJZ_],
- _bJ1_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJ0_];
- return [7,
- _lp_,
- [0,
- [0,
- cst_loyer_principal_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJ1_]]}
- var CalculEquivalenceLoyerMinimale=[0];
- function embed_calcul_equivalence_loyer(x)
- {return [7,
- _lq_,
- [0,
- [0,
- cst_montant_out$1,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var CalculEquivalenceLoyerMinimale$0=[0];
- function embed_calcul_equivalence_loyer$0(x)
- {var
- _bJP_=
- [0,
- [0,
- cst_n_nombre_parts_d832_25_in,
- caml_call1(Runtime_ocaml_Runtime[15],x[3])],
- 0],
- _bJQ_=
- [0,
- [0,
- cst_condition_2_du_832_25_in,
- caml_call1(Runtime_ocaml_Runtime[12],x[2])],
- _bJP_];
- return [7,
- _lr_,
- [0,
- [0,
- cst_ressources_m_nage_arrondie$1,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJQ_]]}
- var CalculNombrePartLogementFoyerO=[0];
- function embed_calcul_nombre_part_logem(x)
- {return [7,
- _ls_,
- [0,
- [0,
- cst_n_nombre_parts_d832_25_out,
- caml_call1(Runtime_ocaml_Runtime[15],x[1])],
- 0]]}
- var CalculNombrePartLogementFoyerI=[0];
- function embed_calcul_nombre_part_logem$0(x)
- {var
- _bJN_=
- [0,
- [0,
- cst_situation_familiale_calcul$0,
- embed_situation_familiale_calc(x[3])],
- 0],
- _bJO_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$0,
- caml_call1(Runtime_ocaml_Runtime[14],x[2])],
- _bJN_];
- return [7,
- _lt_,
- [0,
- [0,
- cst_condition_2_du_832_25_in$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bJO_]]}
- var CalculAidePersonnaliseeLogemen$1=[0];
- function embed_calcul_aide_personnalise$1(x)
- {var
- _bJF_=
- [0,
- [0,
- cst_traitement_aide_finale_mon$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[9])],
- 0],
- _bJG_=
- [0,
- [0,
- cst_aide_finale_formule_out$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[8])],
- _bJF_],
- _bJH_=
- [0,
- [0,
- cst_coefficient_prise_en_charg,
- caml_call1(Runtime_ocaml_Runtime[15],x[7])],
- _bJG_],
- _bJI_=
- [0,
- [0,
- cst_quivalence_loyer_minimale_,
- caml_call1(Runtime_ocaml_Runtime[13],x[6])],
- _bJH_],
- _bJJ_=
- [0,
- [0,
- cst_plafond_quivalence_loyer_l,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- _bJI_],
- _bJK_=
- [0,
- [0,
- cst_quivalence_loyer_ligible_o,
- caml_call1(Runtime_ocaml_Runtime[13],x[4])],
- _bJJ_],
- _bJL_=
- [0,
- [0,
- cst_n_nombre_parts_d832_25_out$0,
- caml_call1(Runtime_ocaml_Runtime[15],x[3])],
- _bJK_],
- _bJM_=
- [0,
- [0,
- cst_coefficient_r_d832_25_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJL_];
- return [7,
- _lu_,
- [0,
- [0,
- cst_coefficient_multiplicateur,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJM_]]}
- var CalculAidePersonnaliseeLogemen$2=[0];
- function embed_calcul_aide_personnalise$2(x)
- {var
- _bJx_=
- [0,
- [0,
- cst_n_nombre_parts_d832_25_in$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[9])],
- 0],
- _bJy_=
- [0,
- [0,
- cst_condition_2_du_832_25_in$1,
- caml_call1(Runtime_ocaml_Runtime[10],x[8])],
- _bJx_],
- _bJz_=
- [0,
- [0,cst_redevance_in,caml_call1(Runtime_ocaml_Runtime[13],x[7])],
- _bJy_],
- _bJA_=
- [0,
- [0,cst_date_courante_in$9,caml_call1(Runtime_ocaml_Runtime[16],x[6])],
- _bJz_],
- _bJB_=[0,[0,cst_zone_in$0,embed_zone_d_habitation(x[5])],_bJA_],
- _bJC_=
- [0,
- [0,
- cst_situation_familiale_calcul$1,
- embed_situation_familiale_calc(x[4])],
- _bJB_],
- _bJD_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$1,
- caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _bJC_],
- _bJE_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie$2,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJD_];
- return [7,
- _lv_,
- [0,
- [0,cst_mode_occupation_in$0,embed_mode_occupation(x[1])],
- _bJE_]]}
- var CalculNombrePartsAccessionProp=[0];
- function embed_calcul_nombre_parts_acce(x)
- {return [7,
- _lw_,
- [0,
- [0,
- cst_n_nombre_parts_d832_11_out,
- caml_call1(Runtime_ocaml_Runtime[15],x[1])],
- 0]]}
- var CalculNombrePartsAccessionProp$0=[0];
- function embed_calcul_nombre_parts_acce$0(x)
- {var
- _bJw_=
- [0,
- [0,
- cst_situation_familiale_calcul$2,
- embed_situation_familiale_calc(x[2])],
- 0];
- return [7,
- _lx_,
- [0,
- [0,
- cst_nombre_personnes_charge_in$2,
- caml_call1(Runtime_ocaml_Runtime[14],x[1])],
- _bJw_]]}
- var CalculAidePersonnaliseeLogemen$3=[0];
- function embed_calcul_aide_personnalise$3(x)
- {var
- _bJs_=
- [0,
- [0,
- cst_traitement_aide_finale_mon$1,
- caml_call1(Runtime_ocaml_Runtime[10],x[5])],
- 0],
- _bJt_=
- [0,
- [0,
- cst_aide_finale_formule_out$1,
- caml_call1(Runtime_ocaml_Runtime[13],x[4])],
- _bJs_],
- _bJu_=
- [0,
- [0,
- cst_coefficient_prise_en_charg$0,
- caml_call1(Runtime_ocaml_Runtime[15],x[3])],
- _bJt_],
- _bJv_=
- [0,
- [0,
- cst_mensualit_minimale_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJu_];
- return [7,
- _ly_,
- [0,
- [0,
- cst_mensualit_ligible_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJv_]]}
- var CalculAidePersonnaliseeLogemen$4=[0];
- function embed_calcul_aide_personnalise$4(x)
- {var
- _bJf_=
- [0,
- [0,
- cst_date_courante_in$10,
- caml_call1(Runtime_ocaml_Runtime[16],x[14])],
- 0],
- _bJg_=
- [0,[0,cst_anciennet_logement_in,embed_neuf_ou_ancien(x[13])],_bJf_],
- _bJh_=[0,[0,cst_type_pr_t_in,embed_type_pret(x[12])],_bJg_],
- _bJi_=[0,[0,cst_zone_in$1,embed_zone_d_habitation(x[11])],_bJh_],
- _bJj_=
- [0,
- [0,
- cst_situation_r822_11_13_17_in,
- caml_call1(Runtime_ocaml_Runtime[12],x[10])],
- _bJi_],
- _bJk_=
- [0,
- [0,cst_copropri_t_in,caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bJj_],
- _bJl_=
- [0,
- [0,
- cst_date_entr_e_logement_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[8])],
- _bJk_],
- _bJm_=
- [0,
- [0,
- cst_local_habit_premi_re_fois_$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bJl_],
- _bJn_=
- [0,
- [0,
- cst_date_signature_pr_t_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[6])],
- _bJm_],
- _bJo_=
- [0,
- [0,cst_type_travaux_logement_in,embed_type_travaux_logement_d8(x[5])],
- _bJn_],
- _bJp_=
- [0,
- [0,
- cst_situation_familiale_calcul$3,
- embed_situation_familiale_calc(x[4])],
- _bJo_],
- _bJq_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$3,
- caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _bJp_],
- _bJr_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie$3,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bJq_];
- return [7,
- _lz_,
- [0,
- [0,
- cst_mensualit_principale_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJr_]]}
- var CalculAidePersonnaliseeLogemen$5=[0];
- function embed_calcul_aide_personnalise$5(x)
- {var
- _bJe_=
- [0,
- [0,
- cst_traitement_aide_finale_out,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- 0];
- return [7,
- _lA_,
- [0,
- [0,
- cst_aide_finale_formule_out$2,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bJe_]]}
- var CalculAidePersonnaliseeLogemen$6=[0];
- function embed_calcul_aide_personnalise$6(x)
- {var
- _bI9_=
- [0,
- [0,
- cst_date_courante_in$11,
- caml_call1(Runtime_ocaml_Runtime[16],x[8])],
- 0],
- _bI__=[0,[0,cst_zone_in$2,embed_zone_d_habitation(x[7])],_bI9_],
- _bI$_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$4,
- caml_call1(Runtime_ocaml_Runtime[14],x[6])],
- _bI__],
- _bJa_=
- [0,
- [0,cst_situation_familiale_in$0,embed_situation_familiale(x[5])],
- _bI$_],
- _bJb_=
- [0,
- [0,
- cst_ressources_m_nage_sans_arr,
- caml_call1(Runtime_ocaml_Runtime[13],x[4])],
- _bJa_],
- _bJc_=
- [0,
- [0,
- cst_informations_calcul_in$0,
- embed_informations_calcul_a_p_$2(x[3])],
- _bJb_],
- _bJd_=
- [0,[0,cst_type_aide_in$0,embed_type_aides_personnelle_l(x[2])],_bJc_];
- return [7,
- _lB_,
- [0,
- [0,cst_mode_occupation_in$1,embed_mode_occupation(x[1])],
- _bJd_]]}
- var CalculAllocationLogementLocati=[0];
- function embed_calcul_allocation_logeme(x)
- {var
- _bI8_=
- [0,
- [0,
- cst_traitement_aide_finale_out$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- 0];
- return [7,
- _lC_,
- [0,
- [0,
- cst_aide_finale_formule_out$3,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bI8_]]}
- var CalculAllocationLogementLocati$0=[0];
- function embed_calcul_allocation_logeme$0(x)
- {var
- _bIV_=
- [0,
- [0,
- cst_changement_logement_d842_4$0,
- embed_changement_logement_d842(x[14])],
- 0],
- _bIW_=
- [0,
- [0,
- cst_logement_meubl_d842_2_in,
- caml_call1(Runtime_ocaml_Runtime[12],x[13])],
- _bIV_],
- _bIX_=
- [0,
- [0,
- cst_r_duction_loyer_solidarit_$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[12])],
- _bIW_],
- _bIY_=
- [0,
- [0,cst_colocation_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[11])],
- _bIX_],
- _bIZ_=
- [0,[0,cst_type_aide_in$1,embed_type_aides_personnelle_l(x[10])],_bIY_],
- _bI0_=
- [0,
- [0,
- cst_g_es_ou_handicap_adultes_h$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[9])],
- _bIZ_],
- _bI1_=
- [0,
- [0,
- cst_logement_est_chambre_in$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[8])],
- _bI0_],
- _bI2_=[0,[0,cst_zone_in$3,embed_zone_d_habitation(x[7])],_bI1_],
- _bI3_=
- [0,
- [0,
- cst_situation_familiale_calcul$4,
- embed_situation_familiale_calc(x[6])],
- _bI2_],
- _bI4_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$5,
- caml_call1(Runtime_ocaml_Runtime[14],x[5])],
- _bI3_],
- _bI5_=
- [0,
- [0,
- cst_date_courante_in$12,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bI4_],
- _bI6_=
- [0,
- [0,
- cst_b_n_ficiaire_aide_adulte_o$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[3])],
- _bI5_],
- _bI7_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie$4,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bI6_];
- return [7,
- _lD_,
- [0,
- [0,
- cst_loyer_principal_in$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bI7_]]}
- var CalculAllocationLogementAccess=[0];
- function embed_calcul_allocation_logeme$1(x)
- {var
- _bIU_=
- [0,
- [0,
- cst_traitement_aide_finale_mon$2,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- 0];
- return [7,
- _lE_,
- [0,
- [0,
- cst_aide_finale_formule_out$4,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bIU_]]}
- var CalculAllocationLogementAccess$0=[0];
- function embed_calcul_allocation_logeme$2(x)
- {var
- _bII_=
- [0,
- [0,cst_copropri_t_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[13])],
- 0],
- _bIJ_=
- [0,
- [0,
- cst_charges_mensuelles_pr_t_in,
- caml_call1(Runtime_ocaml_Runtime[13],x[12])],
- _bII_],
- _bIK_=
- [0,
- [0,
- cst_date_entr_e_logement_in$0,
- caml_call1(Runtime_ocaml_Runtime[16],x[11])],
- _bIJ_],
- _bIL_=
- [0,
- [0,
- cst_local_habit_premi_re_fois_$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[10])],
- _bIK_],
- _bIM_=
- [0,
- [0,
- cst_type_travaux_logement_in$0,
- embed_type_travaux_logement_r8(x[9])],
- _bIL_],
- _bIN_=
- [0,
- [0,
- cst_date_signature_pr_t_in$0,
- caml_call1(Runtime_ocaml_Runtime[16],x[8])],
- _bIM_],
- _bIO_=
- [0,
- [0,
- cst_situation_r822_11_13_17_in$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[7])],
- _bIN_],
- _bIP_=
- [0,
- [0,
- cst_mensualit_principale_in$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[6])],
- _bIO_],
- _bIQ_=
- [0,
- [0,
- cst_date_courante_in$13,
- caml_call1(Runtime_ocaml_Runtime[16],x[5])],
- _bIP_],
- _bIR_=[0,[0,cst_zone_in$4,embed_zone_d_habitation(x[4])],_bIQ_],
- _bIS_=
- [0,
- [0,
- cst_situation_familiale_calcul$5,
- embed_situation_familiale_calc(x[3])],
- _bIR_],
- _bIT_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$6,
- caml_call1(Runtime_ocaml_Runtime[14],x[2])],
- _bIS_];
- return [7,
- _lF_,
- [0,
- [0,
- cst_ressources_m_nage_arrondie$5,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bIT_]]}
- var CalculAllocationLogementFoyerO=[0];
- function embed_calcul_allocation_logeme$3(x)
- {var
- _bID_=
- [0,
- [0,
- cst_traitement_aide_finale_mon$3,
- caml_call1(Runtime_ocaml_Runtime[10],x[6])],
- 0],
- _bIE_=
- [0,
- [0,
- cst_aide_finale_formule_out$5,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- _bID_],
- _bIF_=
- [0,
- [0,cst_loyer_minimal_out,caml_call1(Runtime_ocaml_Runtime[13],x[4])],
- _bIE_],
- _bIG_=
- [0,
- [0,
- cst_montant_forfaitaire_charge$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bIF_],
- _bIH_=
- [0,
- [0,
- cst_quivalence_loyer_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bIG_];
- return [7,
- _lG_,
- [0,
- [0,
- cst_coefficient_prise_en_charg$1,
- caml_call1(Runtime_ocaml_Runtime[15],x[1])],
- _bIH_]]}
- var CalculAllocationLogementFoyerI=[0];
- function embed_calcul_allocation_logeme$4(x)
- {var
- _bIw_=
- [0,
- [0,
- cst_cat_gorie_quivalence_loyer$0,
- embed_categorie_equivalence_lo(x[8])],
- 0],
- _bIx_=
- [0,
- [0,
- cst_date_courante_in$14,
- caml_call1(Runtime_ocaml_Runtime[16],x[7])],
- _bIw_],
- _bIy_=[0,[0,cst_zone_in$5,embed_zone_d_habitation(x[6])],_bIx_],
- _bIz_=
- [0,
- [0,
- cst_situation_familiale_calcul$6,
- embed_situation_familiale_calc(x[5])],
- _bIy_],
- _bIA_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$7,
- caml_call1(Runtime_ocaml_Runtime[14],x[4])],
- _bIz_],
- _bIB_=
- [0,
- [0,
- cst_ressources_m_nage_arrondie$6,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bIA_],
- _bIC_=
- [0,[0,cst_mode_occupation_in$2,embed_mode_occupation(x[2])],_bIB_];
- return [7,
- _lH_,
- [0,
- [0,
- cst_redevance_in$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bIC_]]}
- var CalculAllocationLogementOut=[0];
- function embed_calcul_allocation_logeme$5(x)
- {var
- _bIv_=
- [0,
- [0,
- cst_traitement_aide_finale_out$1,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- 0];
- return [7,
- _lI_,
- [0,
- [0,
- cst_aide_finale_formule_out$6,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- _bIv_]]}
- var CalculAllocationLogementIn=[0];
- function embed_calcul_allocation_logeme$6(x)
- {var
- _bIo_=[0,[0,cst_type_aide_in$2,embed_type_aides_personnelle_l(x[8])],0],
- _bIp_=
- [0,
- [0,
- cst_date_courante_in$15,
- caml_call1(Runtime_ocaml_Runtime[16],x[7])],
- _bIo_],
- _bIq_=[0,[0,cst_zone_in$6,embed_zone_d_habitation(x[6])],_bIp_],
- _bIr_=
- [0,
- [0,
- cst_nombre_personnes_charge_in$8,
- caml_call1(Runtime_ocaml_Runtime[14],x[5])],
- _bIq_],
- _bIs_=
- [0,
- [0,cst_situation_familiale_in$1,embed_situation_familiale(x[4])],
- _bIr_],
- _bIt_=
- [0,
- [0,
- cst_ressources_m_nage_sans_arr$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bIs_],
- _bIu_=
- [0,
- [0,
- cst_informations_calcul_in$1,
- embed_informations_calcul_a_p_$2(x[2])],
- _bIt_];
- return [7,
- _lJ_,
- [0,
- [0,cst_mode_occupation_in$3,embed_mode_occupation(x[1])],
- _bIu_]]}
- var OuvertureDroitsRetraiteOut=[0];
- function embed_ouverture_droits_retrait(x)
- {return [7,
- _lK_,
- [0,
- [0,
- cst_ge_ouverture_droit_out,
- caml_call1(Runtime_ocaml_Runtime[17],x[1])],
- 0]]}
- var OuvertureDroitsRetraiteIn=[0];
- function embed_ouverture_droits_retrait$0(x)
- {return [7,
- _lL_,
- [0,
- [0,
- cst_date_naissance_assur_in,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- 0]]}
- var ImpayeDepenseLogementOut=[0];
- function embed_impaye_depense_logement_(x)
- {return [7,
- _lM_,
- [0,
- [0,
- cst_montant_impay_out,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var ImpayeDepenseLogementIn=[0];
- function embed_impaye_depense_logement_$0(x)
- {var
- _bIj_=
- [0,
- [0,cst_montant_dette_in,caml_call1(Runtime_ocaml_Runtime[13],x[6])],
- 0],
- _bIk_=
- [0,[0,cst_d_pense_logement_in,embed_depense_logement(x[5])],_bIj_],
- _bIl_=
- [0,
- [0,cst_montant_charges_in,caml_call1(Runtime_ocaml_Runtime[13],x[4])],
- _bIk_],
- _bIm_=
- [0,
- [0,cst_montant_apl_in,caml_call1(Runtime_ocaml_Runtime[13],x[3])],
- _bIl_],
- _bIn_=[0,[0,cst_aide_vers_e_in,embed_versement_a(x[2])],_bIm_];
- return [7,
- _lN_,
- [0,
- [0,cst_mode_occupation_in$4,embed_mode_occupation(x[1])],
- _bIn_]]}
- var CalculetteAidesAuLogementOut=[0];
- function embed_calculette_aides_au_loge(x)
- {var
- _bIg_=
- [0,
- [0,
- cst_coefficents_enfants_garde_$2,
- caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])],
- 0],
- _bIh_=
- [0,
- [0,
- cst_traitement_aide_finale_out$2,
- caml_call1(Runtime_ocaml_Runtime[10],x[3])],
- _bIg_],
- _bIi_=
- [0,
- [0,
- cst_aide_finale_formule_out$7,
- caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- _bIh_];
- return [7,
- _lO_,
- [0,
- [0,
- cst_ligibilit_out$1,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bIi_]]}
- var CalculetteAidesAuLogementIn=[0];
- function embed_calculette_aides_au_loge$0(x)
- {var
- _bIc_=
- [0,
- [0,
- cst_ressources_m_nage_prises_e,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- 0],
- _bId_=
- [0,
- [0,
- cst_date_courante_in$16,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bIc_],
- _bIe_=
- [0,
- [0,
- cst_informations_calcul_in$2,
- embed_informations_calcul_a_p_$2(x[3])],
- _bId_],
- _bIf_=[0,[0,cst_demandeur_in$3,embed_demandeur(x[2])],_bIe_];
- return [7,_lP_,[0,[0,cst_m_nage_in$3,embed_menage(x[1])],_bIf_]]}
- var CalculetteAidesAuLogementGarde=[0];
- function embed_calculette_aides_au_loge$1(x)
- {var
- _bIb_=
- [0,
- [0,cst_aide_finale_out,caml_call1(Runtime_ocaml_Runtime[13],x[2])],
- 0];
- return [7,
- _lQ_,
- [0,
- [0,
- cst_ligibilit_out$2,
- caml_call1(Runtime_ocaml_Runtime[12],x[1])],
- _bIb_]]}
- var CalculetteAidesAuLogementGarde$0=[0];
- function embed_calculette_aides_au_loge$2(x)
- {var
- _bH9_=
- [0,
- [0,
- cst_ressources_m_nage_prises_e$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[5])],
- 0],
- _bH__=
- [0,
- [0,
- cst_date_courante_in$17,
- caml_call1(Runtime_ocaml_Runtime[16],x[4])],
- _bH9_],
- _bH$_=
- [0,
- [0,
- cst_informations_calcul_in$3,
- embed_informations_calcul_a_p_$2(x[3])],
- _bH__],
- _bIa_=[0,[0,cst_demandeur_in$4,embed_demandeur(x[2])],_bH$_];
- return [7,_lR_,[0,[0,cst_m_nage_in$4,embed_menage(x[1])],_bIa_]]}
- var BaseMensuelleAllocationsFamili$1=[0];
- function embed_base_mensuelle_allocatio$1(x)
- {return [7,
- _lS_,
- [0,
- [0,
- cst_montant_out$2,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var BaseMensuelleAllocationsFamili$2=[0];
- function embed_base_mensuelle_allocatio$2(x)
- {return [7,
- _lT_,
- [0,
- [0,
- cst_date_courante_in$18,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- 0]]}
- var SmicOut$0=[0];
- function embed_smic_out$0(x)
- {return [7,
- _lU_,
- [0,
- [0,
- cst_brut_horaire_out$0,
- caml_call1(Runtime_ocaml_Runtime[13],x[1])],
- 0]]}
- var SmicIn$0=[0];
- function embed_smic_in$0(x)
- {var _bH8_=[0,[0,cst_r_sidence_in$2,embed_collectivite$0(x[2])],0];
- return [7,
- _lV_,
- [0,
- [0,
- cst_date_courante_in$19,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bH8_]]}
- var EligibilitePrestationsFamilial=[0];
- function embed_eligibilite_prestations_(x)
- {var
- _bH5_=
- [0,
- [0,
- cst_r_gime_outre_mer_l751_1_ou$0,
- caml_call1(Runtime_ocaml_Runtime[12],x[4])],
- 0],
- _bH6_=
- [0,
- [0,cst_ge_l512_3_2_out$0,caml_call1(Runtime_ocaml_Runtime[14],x[3])],
- _bH5_],
- _bH7_=
- [0,
- [0,
- cst_conditions_hors_ge_out$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[2])],
- _bH6_];
- return [7,
- _lW_,
- [0,
- [0,
- cst_droit_ouvert_out$0,
- caml_call1(Runtime_ocaml_Runtime[10],x[1])],
- _bH7_]]}
- var EligibilitePrestationsFamilial$0=[0];
- function embed_eligibilite_prestations_$0(x)
- {var
- _bH3_=[0,[0,cst_r_sidence_in$3,embed_collectivite$0(x[3])],0],
- _bH4_=
- [0,
- [0,
- cst_prestation_courante_in$0,
- embed_element_prestations_fami$0(x[2])],
- _bH3_];
- return [7,
- _lX_,
- [0,
- [0,
- cst_date_courante_in$20,
- caml_call1(Runtime_ocaml_Runtime[16],x[1])],
- _bH4_]]}
- function contributions_sociales_aides_p(contributions_sociales_aides_p)
- {var date_courante=contributions_sociales_aides_p[1];
- try
- {var
- _bHJ_=function(param){return 0},
- _bHK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_lZ_,1)},
- _bHL_=
- [0,
- function(param)
- {function _bH1_(param){return 1}
- function _bH2_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_l0_,1)}
- return caml_call4(Runtime_ocaml_Runtime[62],_l1_,[0],_bH2_,_bH1_)}],
- _bHM_=caml_call4(Runtime_ocaml_Runtime[62],_l2_,_bHL_,_bHK_,_bHJ_)}
- catch(_bH0_)
- {_bH0_ = caml_wrap_exception(_bH0_);
- if(_bH0_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_lY_];
- throw _bH0_}
- var
- exonere_csg=
- caml_call3
- (Runtime_ocaml_Runtime[28],_l3_,Runtime_ocaml_Runtime[12],_bHM_);
- try
- {var
- _bHN_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_005)},
- _bHO_=
- function(param)
- {var
- _bHY_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bHZ_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bHY_);
- return caml_call2(Runtime_ocaml_Runtime[29],_l5_,_bHZ_)},
- _bHP_=caml_call4(Runtime_ocaml_Runtime[62],_l6_,[0],_bHO_,_bHN_)}
- catch(_bHX_)
- {_bHX_ = caml_wrap_exception(_bHX_);
- if(_bHX_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_l4_];
- throw _bHX_}
- var
- taux_crds=
- caml_call3
- (Runtime_ocaml_Runtime[28],_l7_,Runtime_ocaml_Runtime[15],_bHP_);
- function _bHQ_(param)
- {try
- {var
- _bHR_=
- function(param$0)
- {return caml_call2(Runtime_ocaml_Runtime[65],param,taux_crds)},
- _bHS_=
- function(param)
- {var
- _bHV_=caml_call3(Runtime_ocaml_Runtime[56],2018,9,1),
- _bHW_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bHV_);
- return caml_call2(Runtime_ocaml_Runtime[29],_l9_,_bHW_)},
- _bHT_=caml_call4(Runtime_ocaml_Runtime[62],_l__,[0],_bHS_,_bHR_);
- return _bHT_}
- catch(_bHU_)
- {_bHU_ = caml_wrap_exception(_bHU_);
- if(_bHU_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_l8_];
- throw _bHU_}}
- var
- montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_l$_,Runtime_ocaml_Runtime[10],_bHQ_);
- if(exonere_csg)return [0,montant];
- throw [0,Runtime_ocaml_Runtime[3],_ma_]}
- function calcul_equivalence_loyer_minim(calcul_equivalence_loyer_minim)
- {var
- ressources_menage_arrondies=calcul_equivalence_loyer_minim[1],
- condition_2_du_832_25=calcul_equivalence_loyer_minim[2],
- n_nombre_parts_d832_25=calcul_equivalence_loyer_minim[3];
- try
- {var
- _bF2_=
- function(param)
- {return condition_2_du_832_25
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_7632)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_4557)},
- _bF3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mc_,1)},
- _bF4_=caml_call4(Runtime_ocaml_Runtime[62],_md_,[0],_bF3_,_bF2_)}
- catch(_bHI_)
- {_bHI_ = caml_wrap_exception(_bHI_);
- if(_bHI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mb_];
- throw _bHI_}
- var
- montant_forfaitaire_d832_26=
- caml_call3
- (Runtime_ocaml_Runtime[28],_me_,Runtime_ocaml_Runtime[13],_bF4_);
- try
- {var
- _bF5_=
- function(param)
- {var
- _bHs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_48),
- _bHt_=
- [0,_mg_,caml_call1(Runtime_ocaml_Runtime[31],cst_633129),_bHs_],
- _bHu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$1),
- _bHv_=caml_call1(Runtime_ocaml_Runtime[31],cst_535744),
- _bHw_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_633129$0)],
- _bHv_,
- _bHu_],
- _bHx_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_264),
- _bHy_=caml_call1(Runtime_ocaml_Runtime[31],cst_389618),
- _bHz_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_535744$0)],
- _bHy_,
- _bHx_],
- _bHA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_216),
- _bHB_=caml_call1(Runtime_ocaml_Runtime[31],cst_267871),
- _bHC_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_389618$0)],
- _bHB_,
- _bHA_],
- _bHD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_104),
- _bHE_=caml_call1(Runtime_ocaml_Runtime[31],cst_194810),
- _bHF_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_267871$0)],
- _bHE_,
- _bHD_],
- _bHG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04$0),
- _bHH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$69);
- return [0,
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_194810$0)],
- _bHH_,
- _bHG_],
- _bHF_,
- _bHC_,
- _bHz_,
- _bHw_,
- _bHt_]},
- _bF6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mh_,1)},
- _bF7_=
- [0,
- function(param)
- {function _bHd_(param)
- {var
- _bHf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_328),
- _bHg_=
- [0,
- _mi_,
- caml_call1(Runtime_ocaml_Runtime[31],cst_409505),
- _bHf_],
- _bHh_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232$0),
- _bHi_=caml_call1(Runtime_ocaml_Runtime[31],cst_262985),
- _bHj_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_409505$0)],
- _bHi_,
- _bHh_],
- _bHk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_208),
- _bHl_=caml_call1(Runtime_ocaml_Runtime[31],cst_204761),
- _bHm_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_262985$0)],
- _bHl_,
- _bHk_],
- _bHn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_024),
- _bHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_142303),
- _bHp_=
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_204761$0)],
- _bHo_,
- _bHn_],
- _bHq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$70),
- _bHr_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$71);
- return [0,
- [0,
- [0,caml_call1(Runtime_ocaml_Runtime[31],cst_142303$0)],
- _bHr_,
- _bHq_],
- _bHp_,
- _bHm_,
- _bHj_,
- _bHg_]}
- function _bHe_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_mj_,condition_2_du_832_25)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mk_,[0],_bHe_,_bHd_)}],
- _bF8_=caml_call4(Runtime_ocaml_Runtime[62],_ml_,_bF7_,_bF6_,_bF5_)}
- catch(_bHc_)
- {_bHc_ = caml_wrap_exception(_bHc_);
- if(_bHc_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mf_];
- throw _bHc_}
- var
- _bF9_=caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu),
- tranches_revenus_d832_26=
- caml_call3(Runtime_ocaml_Runtime[28],_mm_,_bF9_,_bF8_);
- try
- {var
- _bF__=
- function(param)
- {function _bG7_(tranche)
- {var
- _bG8_=tranche[3],
- _bG9_=caml_call1(Runtime_ocaml_Runtime[45],tranche[2]),
- _bG__=
- caml_call2
- (Runtime_ocaml_Runtime[88],_bG9_,n_nombre_parts_d832_25),
- _bG$_=tranche[1];
- if(0 === _bG$_[0])
- var
- tranche_haut=_bG$_[1],
- _bHa_=caml_call1(Runtime_ocaml_Runtime[45],tranche_haut),
- _bHb_=
- [0,
- caml_call2
- (Runtime_ocaml_Runtime[88],_bHa_,n_nombre_parts_d832_25)];
- else
- var _bHb_=_mo_;
- return [0,_bHb_,_bG__,_bG8_]}
- return caml_call2(Stdlib_Array[15],_bG7_,tranches_revenus_d832_26)},
- _bF$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mp_,1)},
- _bGa_=caml_call4(Runtime_ocaml_Runtime[62],_mq_,[0],_bF$_,_bF__)}
- catch(_bG6_)
- {_bG6_ = caml_wrap_exception(_bG6_);
- if(_bG6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mn_];
- throw _bG6_}
- var
- _bGb_=
- caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu_decimal),
- tranches_revenus_d832_26_multi=
- caml_call3(Runtime_ocaml_Runtime[28],_mr_,_bGb_,_bGa_);
- try
- {var
- _bGc_=
- function(param)
- {var
- _bGH_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$11),
- _bGI_=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_forfaitaire_d832_26),
- _bGJ_=
- caml_call2
- (Runtime_ocaml_Runtime[88],_bGI_,n_nombre_parts_d832_25),
- _bGK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$72);
- function _bGL_(acc,tranche)
- {var
- _bGP_=tranche[2],
- _bGQ_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[92],_bGQ_,_bGP_))
- var _bGR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$73);
- else
- {var _bGS_=tranche[1];
- if(0 === _bGS_[0])
- {var
- tranche_haut=_bGS_[1],
- _bGT_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[91],_bGT_,tranche_haut))
- var
- _bGU_=tranche[3],
- _bGV_=
- caml_call2
- (Runtime_ocaml_Runtime[86],tranche_haut,tranche[2]),
- _bGW_=caml_call2(Runtime_ocaml_Runtime[88],_bGV_,_bGU_);
- else
- var
- _bGY_=tranche[3],
- _bGZ_=tranche[2],
- _bG0_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _bG1_=caml_call2(Runtime_ocaml_Runtime[86],_bG0_,_bGZ_),
- _bGW_=caml_call2(Runtime_ocaml_Runtime[88],_bG1_,_bGY_);
- var _bGX_=_bGW_}
- else
- var
- _bG2_=tranche[3],
- _bG3_=tranche[2],
- _bG4_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _bG5_=caml_call2(Runtime_ocaml_Runtime[86],_bG4_,_bG3_),
- _bGX_=caml_call2(Runtime_ocaml_Runtime[88],_bG5_,_bG2_);
- var _bGR_=_bGX_}
- return caml_call2(Runtime_ocaml_Runtime[85],acc,_bGR_)}
- var
- _bGM_=
- caml_call3
- (Stdlib_Array[17],_bGL_,_bGK_,tranches_revenus_d832_26_multi),
- _bGN_=caml_call2(Runtime_ocaml_Runtime[85],_bGM_,_bGJ_),
- _bGO_=caml_call2(Runtime_ocaml_Runtime[89],_bGN_,_bGH_);
- return caml_call1(Runtime_ocaml_Runtime[33],_bGO_)},
- _bGd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mt_,1)},
- _bGe_=
- [0,
- function(param)
- {function _bGh_(param)
- {var
- _bGj_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$12),
- _bGk_=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_forfaitaire_d832_26),
- _bGl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$74);
- function _bGm_(acc,tranche)
- {var
- _bGq_=tranche[2],
- _bGr_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[92],_bGr_,_bGq_))
- var _bGs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$75);
- else
- {var _bGt_=tranche[1];
- if(0 === _bGt_[0])
- {var
- tranche_haut=_bGt_[1],
- _bGu_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[91],_bGu_,tranche_haut))
- var
- _bGv_=tranche[3],
- _bGw_=
- caml_call2
- (Runtime_ocaml_Runtime[86],tranche_haut,tranche[2]),
- _bGx_=caml_call2(Runtime_ocaml_Runtime[88],_bGw_,_bGv_);
- else
- var
- _bGz_=tranche[3],
- _bGA_=tranche[2],
- _bGB_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _bGC_=caml_call2(Runtime_ocaml_Runtime[86],_bGB_,_bGA_),
- _bGx_=caml_call2(Runtime_ocaml_Runtime[88],_bGC_,_bGz_);
- var _bGy_=_bGx_}
- else
- var
- _bGD_=tranche[3],
- _bGE_=tranche[2],
- _bGF_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _bGG_=caml_call2(Runtime_ocaml_Runtime[86],_bGF_,_bGE_),
- _bGy_=caml_call2(Runtime_ocaml_Runtime[88],_bGG_,_bGD_);
- var _bGs_=_bGy_}
- return caml_call2(Runtime_ocaml_Runtime[85],acc,_bGs_)}
- var
- _bGn_=
- caml_call3
- (Stdlib_Array[17],
- _bGm_,
- _bGl_,
- tranches_revenus_d832_26_multi),
- _bGo_=caml_call2(Runtime_ocaml_Runtime[85],_bGn_,_bGk_),
- _bGp_=caml_call2(Runtime_ocaml_Runtime[89],_bGo_,_bGj_);
- return caml_call1(Runtime_ocaml_Runtime[33],_bGp_)}
- function _bGi_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_mu_,condition_2_du_832_25)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mv_,[0],_bGi_,_bGh_)}],
- _bGf_=caml_call4(Runtime_ocaml_Runtime[62],_mw_,_bGe_,_bGd_,_bGc_)}
- catch(_bGg_)
- {_bGg_ = caml_wrap_exception(_bGg_);
- if(_bGg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ms_];
- throw _bGg_}
- var
- montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_mx_,Runtime_ocaml_Runtime[13],_bGf_);
- return [0,montant]}
- function calcul_nombre_part_logement_fo(calcul_nombre_part_logement_fo)
- {var
- condition_2_du_832_25=calcul_nombre_part_logement_fo[1],
- nombre_personnes_a_charge=calcul_nombre_part_logement_fo[2],
- situation_familiale_calcul_apl=calcul_nombre_part_logement_fo[3];
- try
- {var
- _bFJ_=
- function(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$76)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$29)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$17)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3$3);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$4)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3);
- var
- _bFW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$0),
- _bFX_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFW_),
- _bFY_=caml_call1(Runtime_ocaml_Runtime[41],_bFX_),
- _bFZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$1),
- _bF0_=caml_call2(Runtime_ocaml_Runtime[88],_bFZ_,_bFY_),
- _bF1_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$0);
- return caml_call2(Runtime_ocaml_Runtime[85],_bF1_,_bF0_)},
- _bFK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mz_,1)},
- _bFL_=
- [0,
- function(param)
- {function _bFO_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$77)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_2)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_1_5);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$30)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$18)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3$5);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$6)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$1)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$1);
- var
- _bFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$2),
- _bFR_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFQ_),
- _bFS_=caml_call1(Runtime_ocaml_Runtime[41],_bFR_),
- _bFT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$2),
- _bFU_=caml_call2(Runtime_ocaml_Runtime[88],_bFT_,_bFS_),
- _bFV_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$2);
- return caml_call2(Runtime_ocaml_Runtime[85],_bFV_,_bFU_)}
- function _bFP_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_mA_,condition_2_du_832_25)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mB_,[0],_bFP_,_bFO_)}],
- _bFM_=caml_call4(Runtime_ocaml_Runtime[62],_mC_,_bFL_,_bFK_,_bFJ_)}
- catch(_bFN_)
- {_bFN_ = caml_wrap_exception(_bFN_);
- if(_bFN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_my_];
- throw _bFN_}
- var
- n_nombre_parts_d832_25=
- caml_call3
- (Runtime_ocaml_Runtime[28],_mD_,Runtime_ocaml_Runtime[15],_bFM_);
- return [0,n_nombre_parts_d832_25]}
- function calcul_nombre_parts_accession_(calcul_nombre_parts_accession_)
- {var
- nombre_personnes_a_charge=calcul_nombre_parts_accession_[1],
- situation_familiale_calcul_apl=calcul_nombre_parts_accession_[2];
- try
- {var
- _bFz_=
- function(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$78)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4$0)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$31)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$1);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$19)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3$7);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$8)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$1);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$3)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$3);
- var
- _bFD_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$4),
- _bFE_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bFD_),
- _bFF_=caml_call1(Runtime_ocaml_Runtime[41],_bFE_),
- _bFG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$3),
- _bFH_=caml_call2(Runtime_ocaml_Runtime[88],_bFG_,_bFF_),
- _bFI_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$4);
- return caml_call2(Runtime_ocaml_Runtime[85],_bFI_,_bFH_)},
- _bFA_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mF_,1)},
- _bFB_=caml_call4(Runtime_ocaml_Runtime[62],_mG_,[0],_bFA_,_bFz_)}
- catch(_bFC_)
- {_bFC_ = caml_wrap_exception(_bFC_);
- if(_bFC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mE_];
- throw _bFC_}
- var
- n_nombre_parts_d832_11=
- caml_call3
- (Runtime_ocaml_Runtime[28],_mH_,Runtime_ocaml_Runtime[15],_bFB_);
- return [0,n_nombre_parts_d832_11]}
- function ouverture_droits_retraite(ouverture_droits_retraite_in)
- {var date_naissance_assure=ouverture_droits_retraite_in[1];
- try
- {var
- _bET_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bEU_=function(param){return 0},
- _bEV_=
- function(param)
- {function _bFt_(param)
- {var
- _bFx_=caml_call3(Runtime_ocaml_Runtime[59],0,7,0),
- _bFy_=caml_call3(Runtime_ocaml_Runtime[59],61,0,0);
- return caml_call2(Runtime_ocaml_Runtime[102],_bFy_,_bFx_)}
- function _bFu_(param)
- {var
- _bFv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1954),
- _bFw_=
- caml_equal
- (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure),
- _bFv_);
- return caml_call2(Runtime_ocaml_Runtime[29],_mJ_,_bFw_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mK_,[0],_bFu_,_bFt_)},
- _bEW_=
- function(param)
- {function _bFn_(param)
- {var
- _bFr_=caml_call3(Runtime_ocaml_Runtime[59],0,2,0),
- _bFs_=caml_call3(Runtime_ocaml_Runtime[59],61,0,0);
- return caml_call2(Runtime_ocaml_Runtime[102],_bFs_,_bFr_)}
- function _bFo_(param)
- {var
- _bFp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1953),
- _bFq_=
- caml_equal
- (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure),
- _bFp_);
- return caml_call2(Runtime_ocaml_Runtime[29],_mL_,_bFq_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mM_,[0],_bFo_,_bFn_)},
- _bEX_=
- function(param)
- {function _bFh_(param)
- {var
- _bFl_=caml_call3(Runtime_ocaml_Runtime[59],0,9,0),
- _bFm_=caml_call3(Runtime_ocaml_Runtime[59],60,0,0);
- return caml_call2(Runtime_ocaml_Runtime[102],_bFm_,_bFl_)}
- function _bFi_(param)
- {var
- _bFj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1952),
- _bFk_=
- caml_equal
- (caml_call1(Runtime_ocaml_Runtime[54],date_naissance_assure),
- _bFj_);
- return caml_call2(Runtime_ocaml_Runtime[29],_mN_,_bFk_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mO_,[0],_bFi_,_bFh_)},
- _bEY_=
- function(param)
- {function _bE$_(param)
- {var
- _bFf_=caml_call3(Runtime_ocaml_Runtime[59],0,4,0),
- _bFg_=caml_call3(Runtime_ocaml_Runtime[59],60,0,0);
- return caml_call2(Runtime_ocaml_Runtime[102],_bFg_,_bFf_)}
- function _bFa_(param)
- {var
- _bFb_=caml_call3(Runtime_ocaml_Runtime[56],1951,7,1),
- _bFc_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_naissance_assure,_bFb_);
- if(_bFc_)
- var
- _bFd_=caml_call3(Runtime_ocaml_Runtime[56],1951,12,31),
- _bFe_=
- caml_call2
- (Runtime_ocaml_Runtime[99],date_naissance_assure,_bFd_);
- else
- var _bFe_=_bFc_;
- return caml_call2(Runtime_ocaml_Runtime[29],_mP_,_bFe_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mQ_,[0],_bFa_,_bE$_)},
- _bEZ_=
- function(param)
- {function _bE7_(param)
- {return caml_call3(Runtime_ocaml_Runtime[59],60,0,0)}
- function _bE8_(param)
- {var
- _bE9_=caml_call3(Runtime_ocaml_Runtime[56],1951,7,1),
- _bE__=
- caml_call2
- (Runtime_ocaml_Runtime[101],date_naissance_assure,_bE9_);
- return caml_call2(Runtime_ocaml_Runtime[29],_mR_,_bE__)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mS_,[0],_bE8_,_bE7_)},
- _bE0_=
- [0,
- function(param)
- {function _bE3_(param)
- {return caml_call3(Runtime_ocaml_Runtime[59],62,0,0)}
- function _bE4_(param)
- {var
- _bE5_=caml_call3(Runtime_ocaml_Runtime[56],1955,1,1),
- _bE6_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_naissance_assure,_bE5_);
- return caml_call2(Runtime_ocaml_Runtime[29],_mT_,_bE6_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_mU_,[0],_bE4_,_bE3_)},
- _bEZ_,
- _bEY_,
- _bEX_,
- _bEW_,
- _bEV_],
- _bE1_=caml_call4(Runtime_ocaml_Runtime[62],_mV_,_bE0_,_bEU_,_bET_)}
- catch(_bE2_)
- {_bE2_ = caml_wrap_exception(_bE2_);
- if(_bE2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mI_];
- throw _bE2_}
- var
- age_ouverture_droit=
- caml_call3
- (Runtime_ocaml_Runtime[28],_mW_,Runtime_ocaml_Runtime[17],_bE1_);
- return [0,age_ouverture_droit]}
- function impaye_depense_logement(impaye_depense_logement_in)
- {var
- mode_occupation=impaye_depense_logement_in[1],
- aide_versee=impaye_depense_logement_in[2],
- montant_apl=impaye_depense_logement_in[3],
- montant_charges=impaye_depense_logement_in[4],
- depense_logement=impaye_depense_logement_in[5],
- montant_dette=impaye_depense_logement_in[6];
- try
- {var
- _bDF_=
- function(param)
- {switch(mode_occupation[0])
- {case 0:return _mY_;
- case 1:return _mZ_;
- case 2:return _m0_;
- case 3:return _m1_;
- default:return _m2_}},
- _bDG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_m3_,1)},
- _bDH_=caml_call4(Runtime_ocaml_Runtime[62],_m4_,[0],_bDG_,_bDF_)}
- catch(_bES_)
- {_bES_ = caml_wrap_exception(_bES_);
- if(_bES_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_mX_];
- throw _bES_}
- var
- mode_occupation_impaye=
- caml_call3
- (Runtime_ocaml_Runtime[28],_m5_,embed_mode_occupation_impaye,_bDH_);
- try
- {var
- _bDI_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bDJ_=function(param){return 0},
- _bDK_=
- [0,
- function(param)
- {function _bEL_(param){return depense_logement}
- function _bEM_(param)
- {var _bER_=0 === mode_occupation_impaye[0]?1:0;
- return caml_call2(Runtime_ocaml_Runtime[29],_m7_,_bER_)}
- var
- _bEN_=
- [0,
- function(param)
- {function _bEO_(param){return depense_logement}
- function _bEP_(param)
- {var _bEQ_=0 === mode_occupation_impaye[0]?0:1;
- return caml_call2(Runtime_ocaml_Runtime[29],_m8_,_bEQ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_m9_,[0],_bEP_,_bEO_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_m__,_bEN_,_bEM_,_bEL_)}],
- _bDL_=caml_call4(Runtime_ocaml_Runtime[62],_m$_,_bDK_,_bDJ_,_bDI_)}
- catch(_bEK_)
- {_bEK_ = caml_wrap_exception(_bEK_);
- if(_bEK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_m6_];
- throw _bEK_}
- var
- depense_logement_brute=
- caml_call3
- (Runtime_ocaml_Runtime[28],_na_,embed_depense_logement,_bDL_);
- try
- {var
- _bDM_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bDN_=function(param){return 0},
- _bDO_=
- function(param)
- {function _bEF_(param)
- {switch(depense_logement[0])
- {case 0:
- var
- total_echeances=depense_logement[1],
- _bEI_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$13),
- _bEJ_=
- caml_call2(Runtime_ocaml_Runtime[65],montant_apl,_bEI_);
- return [0,
- caml_call2(Runtime_ocaml_Runtime[68],total_echeances,_bEJ_)];
- case 1:
- var mensualite=depense_logement[1];
- return [1,
- caml_call2(Runtime_ocaml_Runtime[68],mensualite,montant_apl)];
- default:var loyer=depense_logement[1];return [2,loyer]}}
- function _bEG_(param)
- {var _bEH_=0 === mode_occupation_impaye[0]?0:1;
- return caml_call2(Runtime_ocaml_Runtime[29],_nc_,_bEH_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nd_,[0],_bEG_,_bEF_)},
- _bDP_=
- [0,
- function(param)
- {function _bEC_(param)
- {switch(depense_logement_brute[0])
- {case 0:var total=depense_logement_brute[1];return [0,total];
- case 1:
- var mensualite=depense_logement_brute[1];
- return [1,mensualite];
- default:
- var montant_loyer=depense_logement_brute[1];
- return [2,
- caml_call2
- (Runtime_ocaml_Runtime[68],montant_loyer,montant_apl)]}}
- function _bED_(param)
- {var _bEE_=0 === mode_occupation_impaye[0]?1:0;
- return caml_call2(Runtime_ocaml_Runtime[29],_ne_,_bEE_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nf_,[0],_bED_,_bEC_)},
- _bDO_],
- _bDQ_=caml_call4(Runtime_ocaml_Runtime[62],_ng_,_bDP_,_bDN_,_bDM_)}
- catch(_bEB_)
- {_bEB_ = caml_wrap_exception(_bEB_);
- if(_bEB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_nb_];
- throw _bEB_}
- var
- depense_logement_nette=
- caml_call3
- (Runtime_ocaml_Runtime[28],_nh_,embed_depense_logement,_bDQ_);
- try
- {var
- _bDR_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bDS_=function(param){return 0},
- _bDT_=
- function(param)
- {function _bEk_(param)
- {switch(depense_logement_brute[0])
- {case 0:
- var
- echeance_pret_brute=depense_logement_brute[1],
- _bEx_=caml_call1(Runtime_ocaml_Runtime[39],cst_6),
- _bEy_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$32),
- _bEz_=caml_call2(Runtime_ocaml_Runtime[89],_bEy_,_bEx_);
- return caml_call2
- (Runtime_ocaml_Runtime[65],echeance_pret_brute,_bEz_);
- case 1:
- var
- mensualite_brute=depense_logement_brute[1],
- _bEA_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$20);
- return caml_call2
- (Runtime_ocaml_Runtime[65],mensualite_brute,_bEA_);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$79)}}
- function _bEl_(param)
- {var _bEv_=0 === mode_occupation_impaye[0]?0:1;
- if(_bEv_)
- switch(aide_versee[0])
- {case 0:var _bEw_=0;break;
- case 1:var _bEw_=1;break;
- default:var _bEw_=0}
- else
- var _bEw_=_bEv_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nj_,_bEw_)}
- var
- _bEm_=
- [0,
- function(param)
- {function _bEn_(param)
- {switch(depense_logement_nette[0])
- {case 0:
- var
- echeance_pret_nette=depense_logement_nette[1],
- _bEr_=caml_call1(Runtime_ocaml_Runtime[39],cst_6$0),
- _bEs_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$33),
- _bEt_=caml_call2(Runtime_ocaml_Runtime[89],_bEs_,_bEr_);
- return caml_call2
- (Runtime_ocaml_Runtime[65],echeance_pret_nette,_bEt_);
- case 1:
- var
- mensualite_nette=depense_logement_nette[1],
- _bEu_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$21);
- return caml_call2
- (Runtime_ocaml_Runtime[65],mensualite_nette,_bEu_);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$80)}}
- function _bEo_(param)
- {var _bEp_=0 === mode_occupation_impaye[0]?0:1;
- if(_bEp_)
- switch(aide_versee[0])
- {case 0:var _bEq_=0;break;
- case 1:var _bEq_=0;break;
- default:var _bEq_=1}
- else
- var _bEq_=_bEp_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nk_,_bEq_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_nl_,[0],_bEo_,_bEn_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_nm_,_bEm_,_bEl_,_bEk_)},
- _bDU_=
- [0,
- function(param)
- {function _bD9_(param)
- {switch(depense_logement_brute[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$81);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$82);
- default:
- var
- loyer_brut=depense_logement_brute[1],
- _bEi_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$22),
- _bEj_=
- caml_call2
- (Runtime_ocaml_Runtime[67],loyer_brut,montant_charges);
- return caml_call2(Runtime_ocaml_Runtime[65],_bEj_,_bEi_)}}
- function _bD__(param)
- {var _bEg_=0 === mode_occupation_impaye[0]?1:0;
- if(_bEg_)
- switch(aide_versee[0])
- {case 0:var _bEh_=0;break;
- case 1:var _bEh_=1;break;
- default:var _bEh_=0}
- else
- var _bEh_=_bEg_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nn_,_bEh_)}
- var
- _bD$_=
- [0,
- function(param)
- {function _bEa_(param)
- {switch(depense_logement_nette[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$83);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$84);
- default:
- var
- loyer_net=depense_logement_nette[1],
- _bEe_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$23),
- _bEf_=
- caml_call2
- (Runtime_ocaml_Runtime[67],loyer_net,montant_charges);
- return caml_call2(Runtime_ocaml_Runtime[65],_bEf_,_bEe_)}}
- function _bEb_(param)
- {var _bEc_=0 === mode_occupation_impaye[0]?1:0;
- if(_bEc_)
- switch(aide_versee[0])
- {case 0:var _bEd_=1;break;
- case 1:var _bEd_=0;break;
- default:var _bEd_=0}
- else
- var _bEd_=_bEc_;
- return caml_call2(Runtime_ocaml_Runtime[29],_no_,_bEd_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_np_,[0],_bEb_,_bEa_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_nq_,_bD$_,_bD__,_bD9_)},
- _bDT_],
- _bDV_=caml_call4(Runtime_ocaml_Runtime[62],_nr_,_bDU_,_bDS_,_bDR_)}
- catch(_bD8_)
- {_bD8_ = caml_wrap_exception(_bD8_);
- if(_bD8_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ni_];
- throw _bD8_}
- var
- seuil_impaye_depense_de_logeme=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ns_,Runtime_ocaml_Runtime[13],_bDV_);
- try
- {var
- _bDW_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bDX_=function(param){return 0},
- _bDY_=
- [0,
- function(param)
- {function _bD1_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[72],
- montant_dette,
- seuil_impaye_depense_de_logeme)
- ?montant_dette
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$85)}
- function _bD2_(param)
- {var _bD7_=0 === mode_occupation_impaye[0]?1:0;
- return caml_call2(Runtime_ocaml_Runtime[29],_nu_,_bD7_)}
- var
- _bD3_=
- [0,
- function(param)
- {function _bD4_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[72],
- montant_dette,
- seuil_impaye_depense_de_logeme)
- ?montant_dette
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$86)}
- function _bD5_(param)
- {var _bD6_=0 === mode_occupation_impaye[0]?0:1;
- return caml_call2(Runtime_ocaml_Runtime[29],_nv_,_bD6_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_nw_,[0],_bD5_,_bD4_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_nx_,_bD3_,_bD2_,_bD1_)}],
- _bDZ_=caml_call4(Runtime_ocaml_Runtime[62],_ny_,_bDY_,_bDX_,_bDW_)}
- catch(_bD0_)
- {_bD0_ = caml_wrap_exception(_bD0_);
- if(_bD0_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_nt_];
- throw _bD0_}
- var
- montant_impaye=
- caml_call3
- (Runtime_ocaml_Runtime[28],_nz_,Runtime_ocaml_Runtime[13],_bDZ_);
- return [0,montant_impaye]}
- function base_mensuelle_allocations_fam$5(base_mensuelle_allocations_fam)
- {var date_courante=base_mensuelle_allocations_fam[1];
- try
- {var
- _bC$_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bDa_=function(param){return 0},
- _bDb_=
- function(param)
- {function _bDz_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228$0)}
- function _bDA_(param)
- {var
- _bDB_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1),
- _bDC_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDB_);
- if(_bDC_)
- var
- _bDD_=caml_call3(Runtime_ocaml_Runtime[56],2023,4,1),
- _bDE_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDD_);
- else
- var _bDE_=_bDC_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nB_,_bDE_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nC_,[0],_bDA_,_bDz_)},
- _bDc_=
- function(param)
- {function _bDt_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481$0)}
- function _bDu_(param)
- {var
- _bDv_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1),
- _bDw_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDv_);
- if(_bDw_)
- var
- _bDx_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,1),
- _bDy_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDx_);
- else
- var _bDy_=_bDw_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nD_,_bDy_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nE_,[0],_bDu_,_bDt_)},
- _bDd_=
- function(param)
- {function _bDn_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440$0)}
- function _bDo_(param)
- {var
- _bDp_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1),
- _bDq_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDp_);
- if(_bDq_)
- var
- _bDr_=caml_call3(Runtime_ocaml_Runtime[56],2021,4,1),
- _bDs_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDr_);
- else
- var _bDs_=_bDq_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nF_,_bDs_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nG_,[0],_bDo_,_bDn_)},
- _bDe_=
- [0,
- function(param)
- {function _bDh_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316$0)}
- function _bDi_(param)
- {var
- _bDj_=caml_call3(Runtime_ocaml_Runtime[56],2019,4,1),
- _bDk_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bDj_);
- if(_bDk_)
- var
- _bDl_=caml_call3(Runtime_ocaml_Runtime[56],2020,4,1),
- _bDm_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bDl_);
- else
- var _bDm_=_bDk_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nH_,_bDm_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nI_,[0],_bDi_,_bDh_)},
- _bDd_,
- _bDc_,
- _bDb_],
- _bDf_=caml_call4(Runtime_ocaml_Runtime[62],_nJ_,_bDe_,_bDa_,_bC$_)}
- catch(_bDg_)
- {_bDg_ = caml_wrap_exception(_bDg_);
- if(_bDg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_nA_];
- throw _bDg_}
- var
- montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_nK_,Runtime_ocaml_Runtime[13],_bDf_);
- return [0,montant]}
- function smic$1(smic_in)
- {var date_courante=smic_in[1],residence=smic_in[2];
- try
- {var
- _bBi_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bBj_=function(param){return 0},
- _bBk_=
- function(param)
- {function _bC4_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_819$0)}
- function _bC5_(param)
- {var
- _bC6_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1),
- _bC7_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bC6_);
- if(_bC7_)
- var
- _bC8_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31),
- _bC9_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bC8_),
- _bC__=_bC9_?caml_equal(residence,_nM_):_bC9_;
- else
- var _bC__=_bC7_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nN_,_bC__)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nO_,[0],_bC5_,_bC4_)},
- _bBl_=
- function(param)
- {function _bCQ_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085$0)}
- function _bCR_(param)
- {var
- _bCS_=caml_call3(Runtime_ocaml_Runtime[56],2022,5,1),
- _bCT_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCS_);
- if(_bCT_)
- {var
- _bCU_=caml_call3(Runtime_ocaml_Runtime[56],2022,12,31),
- _bCV_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCU_);
- if(_bCV_)
- {var _bCW_=caml_equal(residence,_nP_);
- if(_bCW_)
- var _bCX_=_bCW_;
- else
- {var _bCY_=caml_equal(residence,_nR_);
- if(_bCY_)
- var _bCX_=_bCY_;
- else
- {var _bCZ_=caml_equal(residence,_nS_);
- if(_bCZ_)
- var _bCX_=_bCZ_;
- else
- {var _bC0_=caml_equal(residence,_nT_);
- if(_bC0_)
- var _bCX_=_bC0_;
- else
- {var _bC1_=caml_equal(residence,_nU_);
- if(_bC1_)
- var _bCX_=_bC1_;
- else
- {var _bC2_=caml_equal(residence,_nV_);
- if(_bC2_)
- var _bCX_=_bC2_;
- else
- var
- _bC3_=caml_equal(residence,_nW_),
- _bCX_=_bC3_ || caml_equal(residence,_nX_)}}}}}}
- else
- var _bCX_=_bCV_}
- else
- var _bCX_=_bCT_;
- return caml_call2(Runtime_ocaml_Runtime[29],_nQ_,_bCX_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_nY_,[0],_bCR_,_bCQ_)},
- _bBm_=
- function(param)
- {function _bCJ_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_798$0)}
- function _bCK_(param)
- {var
- _bCL_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _bCM_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCL_);
- if(_bCM_)
- var
- _bCN_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30),
- _bCO_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCN_),
- _bCP_=_bCO_?caml_equal(residence,_nZ_):_bCO_;
- else
- var _bCP_=_bCM_;
- return caml_call2(Runtime_ocaml_Runtime[29],_n0_,_bCP_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_n1_,[0],_bCK_,_bCJ_)},
- _bBn_=
- function(param)
- {function _bCv_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057$0)}
- function _bCw_(param)
- {var
- _bCx_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _bCy_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCx_);
- if(_bCy_)
- {var
- _bCz_=caml_call3(Runtime_ocaml_Runtime[56],2022,4,30),
- _bCA_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCz_);
- if(_bCA_)
- {var _bCB_=caml_equal(residence,_n2_);
- if(_bCB_)
- var _bCC_=_bCB_;
- else
- {var _bCD_=caml_equal(residence,_n4_);
- if(_bCD_)
- var _bCC_=_bCD_;
- else
- {var _bCE_=caml_equal(residence,_n5_);
- if(_bCE_)
- var _bCC_=_bCE_;
- else
- {var _bCF_=caml_equal(residence,_n6_);
- if(_bCF_)
- var _bCC_=_bCF_;
- else
- {var _bCG_=caml_equal(residence,_n7_);
- if(_bCG_)
- var _bCC_=_bCG_;
- else
- {var _bCH_=caml_equal(residence,_n8_);
- if(_bCH_)
- var _bCC_=_bCH_;
- else
- var
- _bCI_=caml_equal(residence,_n9_),
- _bCC_=_bCI_ || caml_equal(residence,_n__)}}}}}}
- else
- var _bCC_=_bCA_}
- else
- var _bCC_=_bCy_;
- return caml_call2(Runtime_ocaml_Runtime[29],_n3_,_bCC_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_n$_,[0],_bCw_,_bCv_)},
- _bBo_=
- function(param)
- {function _bCo_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_774$0)}
- function _bCp_(param)
- {var
- _bCq_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _bCr_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCq_);
- if(_bCr_)
- var
- _bCs_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _bCt_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCs_),
- _bCu_=_bCt_?caml_equal(residence,_oa_):_bCt_;
- else
- var _bCu_=_bCr_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ob_,_bCu_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_oc_,[0],_bCp_,_bCo_)},
- _bBp_=
- function(param)
- {function _bCa_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025$0)}
- function _bCb_(param)
- {var
- _bCc_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _bCd_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bCc_);
- if(_bCd_)
- {var
- _bCe_=caml_call3(Runtime_ocaml_Runtime[56],2021,12,31),
- _bCf_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bCe_);
- if(_bCf_)
- {var _bCg_=caml_equal(residence,_od_);
- if(_bCg_)
- var _bCh_=_bCg_;
- else
- {var _bCi_=caml_equal(residence,_of_);
- if(_bCi_)
- var _bCh_=_bCi_;
- else
- {var _bCj_=caml_equal(residence,_og_);
- if(_bCj_)
- var _bCh_=_bCj_;
- else
- {var _bCk_=caml_equal(residence,_oh_);
- if(_bCk_)
- var _bCh_=_bCk_;
- else
- {var _bCl_=caml_equal(residence,_oi_);
- if(_bCl_)
- var _bCh_=_bCl_;
- else
- {var _bCm_=caml_equal(residence,_oj_);
- if(_bCm_)
- var _bCh_=_bCm_;
- else
- var
- _bCn_=caml_equal(residence,_ok_),
- _bCh_=_bCn_ || caml_equal(residence,_ol_)}}}}}}
- else
- var _bCh_=_bCf_}
- else
- var _bCh_=_bCd_;
- return caml_call2(Runtime_ocaml_Runtime[29],_oe_,_bCh_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_om_,[0],_bCb_,_bCa_)},
- _bBq_=
- function(param)
- {function _bB5_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_766$0)}
- function _bB6_(param)
- {var
- _bB7_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bB8_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bB7_);
- if(_bB8_)
- var
- _bB9_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _bB__=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bB9_),
- _bB$_=_bB__?caml_equal(residence,_on_):_bB__;
- else
- var _bB$_=_bB8_;
- return caml_call2(Runtime_ocaml_Runtime[29],_oo_,_bB$_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_op_,[0],_bB6_,_bB5_)},
- _bBr_=
- function(param)
- {function _bBR_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015$0)}
- function _bBS_(param)
- {var
- _bBT_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bBU_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBT_);
- if(_bBU_)
- {var
- _bBV_=caml_call3(Runtime_ocaml_Runtime[56],2020,12,31),
- _bBW_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBV_);
- if(_bBW_)
- {var _bBX_=caml_equal(residence,_oq_);
- if(_bBX_)
- var _bBY_=_bBX_;
- else
- {var _bBZ_=caml_equal(residence,_os_);
- if(_bBZ_)
- var _bBY_=_bBZ_;
- else
- {var _bB0_=caml_equal(residence,_ot_);
- if(_bB0_)
- var _bBY_=_bB0_;
- else
- {var _bB1_=caml_equal(residence,_ou_);
- if(_bB1_)
- var _bBY_=_bB1_;
- else
- {var _bB2_=caml_equal(residence,_ov_);
- if(_bB2_)
- var _bBY_=_bB2_;
- else
- {var _bB3_=caml_equal(residence,_ow_);
- if(_bB3_)
- var _bBY_=_bB3_;
- else
- var
- _bB4_=caml_equal(residence,_ox_),
- _bBY_=_bB4_ || caml_equal(residence,_oy_)}}}}}}
- else
- var _bBY_=_bBW_}
- else
- var _bBY_=_bBU_;
- return caml_call2(Runtime_ocaml_Runtime[29],_or_,_bBY_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_oz_,[0],_bBS_,_bBR_)},
- _bBs_=
- function(param)
- {function _bBK_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_757$0)}
- function _bBL_(param)
- {var
- _bBM_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _bBN_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBM_);
- if(_bBN_)
- var
- _bBO_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _bBP_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBO_),
- _bBQ_=_bBP_?caml_equal(residence,_oA_):_bBP_;
- else
- var _bBQ_=_bBN_;
- return caml_call2(Runtime_ocaml_Runtime[29],_oB_,_bBQ_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_oC_,[0],_bBL_,_bBK_)},
- _bBt_=
- [0,
- function(param)
- {function _bBw_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003$0)}
- function _bBx_(param)
- {var
- _bBy_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _bBz_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bBy_);
- if(_bBz_)
- {var
- _bBA_=caml_call3(Runtime_ocaml_Runtime[56],2019,12,31),
- _bBB_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_bBA_);
- if(_bBB_)
- {var _bBC_=caml_equal(residence,_oD_);
- if(_bBC_)
- var _bBD_=_bBC_;
- else
- {var _bBE_=caml_equal(residence,_oF_);
- if(_bBE_)
- var _bBD_=_bBE_;
- else
- {var _bBF_=caml_equal(residence,_oG_);
- if(_bBF_)
- var _bBD_=_bBF_;
- else
- {var _bBG_=caml_equal(residence,_oH_);
- if(_bBG_)
- var _bBD_=_bBG_;
- else
- {var _bBH_=caml_equal(residence,_oI_);
- if(_bBH_)
- var _bBD_=_bBH_;
- else
- {var _bBI_=caml_equal(residence,_oJ_);
- if(_bBI_)
- var _bBD_=_bBI_;
- else
- var
- _bBJ_=caml_equal(residence,_oK_),
- _bBD_=_bBJ_ || caml_equal(residence,_oL_)}}}}}}
- else
- var _bBD_=_bBB_}
- else
- var _bBD_=_bBz_;
- return caml_call2(Runtime_ocaml_Runtime[29],_oE_,_bBD_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_oM_,[0],_bBx_,_bBw_)},
- _bBs_,
- _bBr_,
- _bBq_,
- _bBp_,
- _bBo_,
- _bBn_,
- _bBm_,
- _bBl_,
- _bBk_],
- _bBu_=caml_call4(Runtime_ocaml_Runtime[62],_oN_,_bBt_,_bBj_,_bBi_)}
- catch(_bBv_)
- {_bBv_ = caml_wrap_exception(_bBv_);
- if(_bBv_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_nL_];
- throw _bBv_}
- var
- brut_horaire=
- caml_call3
- (Runtime_ocaml_Runtime[28],_oO_,Runtime_ocaml_Runtime[13],_bBu_);
- return [0,brut_horaire]}
- function calcul_aide_personnalisee_loge(calcul_aide_personnalisee_loge)
- {var
- loyer_principal=calcul_aide_personnalisee_loge[1],
- ressources_menage_arrondies=calcul_aide_personnalisee_loge[2],
- beneficiaire_aide_adulte_ou_en=calcul_aide_personnalisee_loge[3],
- date_courante=calcul_aide_personnalisee_loge[4],
- nombre_personnes_a_charge=calcul_aide_personnalisee_loge[5],
- situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[6],
- zone=calcul_aide_personnalisee_loge[7],
- logement_est_chambre=calcul_aide_personnalisee_loge[8],
- agees_ou_handicap_adultes_hebe=calcul_aide_personnalisee_loge[9],
- type_aide=calcul_aide_personnalisee_loge[10],
- colocation=calcul_aide_personnalisee_loge[11],
- reduction_loyer_solidarite=calcul_aide_personnalisee_loge[12];
- try
- {var
- _brl_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_98)},
- _brm_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oQ_,1)},
- _brn_=caml_call4(Runtime_ocaml_Runtime[62],_oR_,[0],_brm_,_brl_)}
- catch(_bBh_)
- {_bBh_ = caml_wrap_exception(_bBh_);
- if(_bBh_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_oP_];
- throw _bBh_}
- var
- fraction_l832_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_oS_,Runtime_ocaml_Runtime[15],_brn_);
- try
- {var
- _bro_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_500)},
- _brp_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oU_,1)},
- _brq_=caml_call4(Runtime_ocaml_Runtime[62],_oV_,[0],_brp_,_bro_)}
- catch(_bBg_)
- {_bBg_ = caml_wrap_exception(_bBg_);
- if(_bBg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_oT_];
- throw _bBg_}
- var
- montant_forfaitaire_d823_16=
- caml_call3
- (Runtime_ocaml_Runtime[28],_oW_,Runtime_ocaml_Runtime[13],_brq_);
- try
- {var
- _brr_=function(param){return date_courante},
- _brs_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_oY_,1)},
- _brt_=caml_call4(Runtime_ocaml_Runtime[62],_oZ_,[0],_brs_,_brr_),
- contributions_sociales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_o0_,Runtime_ocaml_Runtime[16],_brt_)}
- catch(_bBf_)
- {_bBf_ = caml_wrap_exception(_bBf_);
- if(_bBf_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_oX_];
- throw _bBf_}
- var
- _bru_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_o1_,contributions_sociales_aides_p),
- [0,contributions_sociales_dot_dat]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_o2_,_bru_),
- contributions_sociales_dot_mon=result[1];
- try
- {var
- _brv_=function(param){throw Runtime_ocaml_Runtime[2]},
- _brw_=function(param){return 0},
- _brx_=
- [0,
- function(param)
- {function _bAU_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$87)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$34)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$24)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$9)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$5)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_6$1)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173);
- var
- _bA$_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$2),
- _bBa_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bA$_),
- _bBb_=caml_call1(Runtime_ocaml_Runtime[41],_bBa_),
- _bBc_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006),
- _bBd_=caml_call2(Runtime_ocaml_Runtime[88],_bBc_,_bBb_),
- _bBe_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$0);
- return caml_call2(Runtime_ocaml_Runtime[86],_bBe_,_bBd_)}
- function _bAV_(param)
- {var
- _bA9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bA__=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bA9_);
- return caml_call2(Runtime_ocaml_Runtime[29],_o4_,_bA__)}
- var
- _bAW_=
- [0,
- function(param)
- {function _bAX_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$88)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$0)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$35)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$25)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$10)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$6)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$0)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_6$3)))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$1);
- var
- _bA3_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$4),
- _bA4_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bA3_),
- _bA5_=caml_call1(Runtime_ocaml_Runtime[41],_bA4_),
- _bA6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$0),
- _bA7_=caml_call2(Runtime_ocaml_Runtime[88],_bA6_,_bA5_),
- _bA8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$2);
- return caml_call2(Runtime_ocaml_Runtime[86],_bA8_,_bA7_)}
- function _bAY_(param)
- {var
- _bAZ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bA0_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAZ_);
- if(_bA0_)
- var
- _bA1_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bA2_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bA1_);
- else
- var _bA2_=_bA0_;
- return caml_call2(Runtime_ocaml_Runtime[29],_o5_,_bA2_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_o6_,[0],_bAY_,_bAX_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_o7_,_bAW_,_bAV_,_bAU_)}],
- _bry_=caml_call4(Runtime_ocaml_Runtime[62],_o8_,_brx_,_brw_,_brv_)}
- catch(_bAT_)
- {_bAT_ = caml_wrap_exception(_bAT_);
- if(_bAT_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_o3_];
- throw _bAT_}
- var
- taux_composition_familiale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_o9_,Runtime_ocaml_Runtime[15],_bry_);
- try
- {var
- _brz_=function(param){throw Runtime_ocaml_Runtime[2]},
- _brA_=function(param){return 0},
- _brB_=
- function(param)
- {function _bAH_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$89)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_458800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_657200);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$36)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_783900);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$26)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_801500);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$11)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_832200);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$7)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_863100);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$1)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_893800);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_6$5)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_924600);
- var
- _bAN_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$6),
- _bAO_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAN_),
- _bAP_=caml_call1(Runtime_ocaml_Runtime[41],_bAO_),
- _bAQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500),
- _bAR_=caml_call2(Runtime_ocaml_Runtime[65],_bAQ_,_bAP_),
- _bAS_=caml_call1(Runtime_ocaml_Runtime[31],cst_924600$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bAS_,_bAR_)}
- function _bAI_(param)
- {var
- _bAJ_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _bAK_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bAJ_);
- if(_bAK_)
- var
- _bAL_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _bAM_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAL_);
- else
- var _bAM_=_bAK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_o$_,_bAM_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_pa_,[0],_bAI_,_bAH_)},
- _brC_=
- [0,
- function(param)
- {function _bAx_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$90)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_468300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_670900);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$37)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_800200);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$27)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_819200);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$12)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_849500);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$8)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_881100);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$2)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_912400);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_6$7)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_943900);
- var
- _bAB_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$8),
- _bAC_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAB_),
- _bAD_=caml_call1(Runtime_ocaml_Runtime[41],_bAC_),
- _bAE_=caml_call1(Runtime_ocaml_Runtime[31],cst_31100),
- _bAF_=caml_call2(Runtime_ocaml_Runtime[65],_bAE_,_bAD_),
- _bAG_=caml_call1(Runtime_ocaml_Runtime[31],cst_943900$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bAG_,_bAF_)}
- function _bAy_(param)
- {var
- _bAz_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _bAA_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAz_);
- return caml_call2(Runtime_ocaml_Runtime[29],_pb_,_bAA_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_pc_,[0],_bAy_,_bAx_)},
- _brB_],
- _brD_=caml_call4(Runtime_ocaml_Runtime[62],_pd_,_brC_,_brA_,_brz_)}
- catch(_bAw_)
- {_bAw_ = caml_wrap_exception(_bAw_);
- if(_bAw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_o__];
- throw _bAw_}
- var
- abattement_forfaitaire_d823_17=
- caml_call3
- (Runtime_ocaml_Runtime[28],_pe_,Runtime_ocaml_Runtime[13],_brD_);
- try
- {var
- _brE_=function(param){throw Runtime_ocaml_Runtime[2]},
- _brF_=function(param){return 0},
- _brG_=
- function(param)
- {function _bAk_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$91)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25869)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31664);
- var
- _bAq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$38),
- _bAr_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAq_),
- _bAs_=caml_call1(Runtime_ocaml_Runtime[41],_bAr_),
- _bAt_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186),
- _bAu_=caml_call2(Runtime_ocaml_Runtime[65],_bAt_,_bAs_),
- _bAv_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630);
- return caml_call2(Runtime_ocaml_Runtime[67],_bAv_,_bAu_)}
- function _bAl_(param)
- {var
- _bAm_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bAn_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAm_);
- if(_bAn_)
- var
- _bAo_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bAp_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bAo_);
- else
- var _bAp_=_bAn_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pg_,_bAp_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_ph_,[0],_bAl_,_bAk_)},
- _brH_=
- [0,
- function(param)
- {function _bAa_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$92)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31797);
- var
- _bAe_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$39),
- _bAf_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bAe_),
- _bAg_=caml_call1(Runtime_ocaml_Runtime[41],_bAf_),
- _bAh_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208),
- _bAi_=caml_call2(Runtime_ocaml_Runtime[65],_bAh_,_bAg_),
- _bAj_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780);
- return caml_call2(Runtime_ocaml_Runtime[67],_bAj_,_bAi_)}
- function _bAb_(param)
- {var
- _bAc_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bAd_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bAc_);
- return caml_call2(Runtime_ocaml_Runtime[29],_pi_,_bAd_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_pj_,[0],_bAb_,_bAa_)},
- _brG_],
- _brI_=caml_call4(Runtime_ocaml_Runtime[62],_pk_,_brH_,_brF_,_brE_)}
- catch(_bz$_)
- {_bz$_ = caml_wrap_exception(_bz$_);
- if(_bz$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_pf_];
- throw _bz$_}
- var
- loyer_reference=
- caml_call3
- (Runtime_ocaml_Runtime[28],_pl_,Runtime_ocaml_Runtime[13],_brI_);
- try
- {var
- _brJ_=
- function(param)
- {switch(type_aide[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$93);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$0)}},
- _brK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pn_,1)},
- _brL_=caml_call4(Runtime_ocaml_Runtime[62],_po_,[0],_brK_,_brJ_)}
- catch(_bz__)
- {_bz__ = caml_wrap_exception(_bz__);
- if(_bz__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_pm_];
- throw _bz__}
- var
- montant_minimal_aide_d823_16=
- caml_call3
- (Runtime_ocaml_Runtime[28],_pp_,Runtime_ocaml_Runtime[13],_brL_);
- try
- {var
- _brM_=
- function(param)
- {function _byO_(param){throw Runtime_ocaml_Runtime[2]}
- function _byP_(param){return 0}
- function _byQ_(param)
- {function _bzK_(param)
- {switch(zone[0])
- {case 0:
- var
- _bzS_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$40),
- _bzT_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzS_),
- _bzU_=caml_call1(Runtime_ocaml_Runtime[41],_bzT_),
- _bzV_=caml_call1(Runtime_ocaml_Runtime[31],cst_5870),
- _bzW_=caml_call2(Runtime_ocaml_Runtime[65],_bzV_,_bzU_),
- _bzX_=caml_call1(Runtime_ocaml_Runtime[31],cst_40460);
- return caml_call2(Runtime_ocaml_Runtime[67],_bzX_,_bzW_);
- case 1:
- var
- _bzY_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$41),
- _bzZ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzY_),
- _bz0_=caml_call1(Runtime_ocaml_Runtime[41],_bzZ_),
- _bz1_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186$0),
- _bz2_=caml_call2(Runtime_ocaml_Runtime[65],_bz1_,_bz0_),
- _bz3_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bz3_,_bz2_);
- default:
- var
- _bz4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$42),
- _bz5_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bz4_),
- _bz6_=caml_call1(Runtime_ocaml_Runtime[41],_bz5_),
- _bz7_=caml_call1(Runtime_ocaml_Runtime[31],cst_4723),
- _bz8_=caml_call2(Runtime_ocaml_Runtime[65],_bz7_,_bz6_),
- _bz9_=caml_call1(Runtime_ocaml_Runtime[31],cst_32956);
- return caml_call2(Runtime_ocaml_Runtime[67],_bz9_,_bz8_)}}
- function _bzL_(param)
- {var
- _bzM_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bzN_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzM_);
- if(_bzN_)
- var
- _bzO_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bzP_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzO_);
- else
- var _bzP_=_bzN_;
- if(_bzP_)
- var
- _bzQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$43),
- _bzR_=
- caml_call2
- (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bzQ_);
- else
- var _bzR_=_bzP_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pr_,_bzR_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ps_,[0],_bzL_,_bzK_)}
- function _byR_(param)
- {function _bzC_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35799);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31664$0);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29392)}}
- function _bzD_(param)
- {var
- _bzE_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bzF_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzE_);
- if(_bzF_)
- var
- _bzG_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bzH_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzG_);
- else
- var _bzH_=_bzF_;
- if(_bzH_)
- var
- _bzI_=0 === situation_familiale_calcul_apl[0]?0:1,
- _bzJ_=
- _bzI_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$94))
- :_bzI_;
- else
- var _bzJ_=_bzH_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pt_,_bzJ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pu_,[0],_bzD_,_bzC_)}
- function _byS_(param)
- {function _bzu_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29682);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_25859);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_24246)}}
- function _bzv_(param)
- {var
- _bzw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bzx_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bzw_);
- if(_bzx_)
- var
- _bzy_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bzz_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bzy_);
- else
- var _bzz_=_bzx_;
- if(_bzz_)
- var
- _bzA_=0 === situation_familiale_calcul_apl[0]?1:0,
- _bzB_=
- _bzA_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$95))
- :_bzA_;
- else
- var _bzB_=_bzz_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pv_,_bzB_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pw_,[0],_bzv_,_bzu_)}
- function _byT_(param)
- {function _by8_(param)
- {switch(zone[0])
- {case 0:
- var
- _bzc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$44),
- _bzd_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzc_),
- _bze_=caml_call1(Runtime_ocaml_Runtime[41],_bzd_),
- _bzf_=caml_call1(Runtime_ocaml_Runtime[31],cst_5895),
- _bzg_=caml_call2(Runtime_ocaml_Runtime[65],_bzf_,_bze_),
- _bzh_=caml_call1(Runtime_ocaml_Runtime[31],cst_40630);
- return caml_call2(Runtime_ocaml_Runtime[67],_bzh_,_bzg_);
- case 1:
- var
- _bzi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$45),
- _bzj_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzi_),
- _bzk_=caml_call1(Runtime_ocaml_Runtime[41],_bzj_),
- _bzl_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$0),
- _bzm_=caml_call2(Runtime_ocaml_Runtime[65],_bzl_,_bzk_),
- _bzn_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bzn_,_bzm_);
- default:
- var
- _bzo_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$46),
- _bzp_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bzo_),
- _bzq_=caml_call1(Runtime_ocaml_Runtime[41],_bzp_),
- _bzr_=caml_call1(Runtime_ocaml_Runtime[31],cst_4743),
- _bzs_=caml_call2(Runtime_ocaml_Runtime[65],_bzr_,_bzq_),
- _bzt_=caml_call1(Runtime_ocaml_Runtime[31],cst_33094);
- return caml_call2(Runtime_ocaml_Runtime[67],_bzt_,_bzs_)}}
- function _by9_(param)
- {var
- _by__=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _by$_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_by__);
- if(_by$_)
- var
- _bza_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$47),
- _bzb_=
- caml_call2
- (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bza_);
- else
- var _bzb_=_by$_;
- return caml_call2(Runtime_ocaml_Runtime[29],_px_,_bzb_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_py_,[0],_by9_,_by8_)}
- function _byU_(param)
- {function _by2_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35949);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$0);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29515)}}
- function _by3_(param)
- {var
- _by4_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _by5_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_by4_);
- if(_by5_)
- var
- _by6_=0 === situation_familiale_calcul_apl[0]?0:1,
- _by7_=
- _by6_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$96))
- :_by6_;
- else
- var _by7_=_by5_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pz_,_by7_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pA_,[0],_by3_,_by2_)}
- var
- _byV_=
- [0,
- function(param)
- {function _byW_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29807);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_25978$0);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_24348)}}
- function _byX_(param)
- {var
- _byY_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _byZ_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byY_);
- if(_byZ_)
- var
- _by0_=0 === situation_familiale_calcul_apl[0]?1:0,
- _by1_=
- _by0_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$97))
- :_by0_;
- else
- var _by1_=_byZ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_pB_,_by1_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pC_,[0],_byX_,_byW_)},
- _byU_,
- _byT_,
- _byS_,
- _byR_,
- _byQ_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pD_,_byV_,_byP_,_byO_)},
- _brN_=function(param){return 1},
- _brO_=
- function(param)
- {function _byj_(param)
- {function _byA_(param){throw Runtime_ocaml_Runtime[2]}
- function _byB_(param){return 0}
- function _byC_(param)
- {function _byI_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_26714);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_23282);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_21821)}}
- function _byJ_(param)
- {var
- _byK_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _byL_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_byK_);
- if(_byL_)
- var
- _byM_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _byN_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byM_),
- logement_est_chambre$0=_byN_?logement_est_chambre:_byN_;
- else
- var logement_est_chambre$0=_byL_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_pE_,logement_est_chambre$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pF_,[0],_byJ_,_byI_)}
- var
- _byD_=
- [0,
- function(param)
- {function _byE_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_26826);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_23380);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_21913)}}
- function _byF_(param)
- {var
- _byG_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _byH_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byG_),
- logement_est_chambre$0=_byH_?logement_est_chambre:_byH_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_pG_,logement_est_chambre$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pH_,[0],_byF_,_byE_)},
- _byC_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pI_,_byD_,_byB_,_byA_)}
- function _byk_(param){return 1}
- var
- _byl_=
- [0,
- function(param)
- {function _bym_(param){throw Runtime_ocaml_Runtime[2]}
- function _byn_(param){return 0}
- function _byo_(param)
- {function _byu_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22262);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_19402);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_18185)}}
- function _byv_(param)
- {var
- _byw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _byx_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_byw_);
- if(_byx_)
- var
- _byy_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _byz_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_byy_),
- logement_est_chambre$0=_byz_?logement_est_chambre:_byz_;
- else
- var logement_est_chambre$0=_byx_;
- var
- agees_ou_handicap_adultes_hebe$0=
- logement_est_chambre$0
- ?agees_ou_handicap_adultes_hebe
- :logement_est_chambre$0;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _pJ_,
- agees_ou_handicap_adultes_hebe$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pK_,[0],_byv_,_byu_)}
- var
- _byp_=
- [0,
- function(param)
- {function _byq_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22355);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_19484);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_18261)}}
- function _byr_(param)
- {var
- _bys_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _byt_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bys_),
- logement_est_chambre$0=_byt_?logement_est_chambre:_byt_,
- agees_ou_handicap_adultes_hebe$0=
- logement_est_chambre$0
- ?agees_ou_handicap_adultes_hebe
- :logement_est_chambre$0;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _pL_,
- agees_ou_handicap_adultes_hebe$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pM_,[0],_byr_,_byq_)},
- _byo_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pN_,_byp_,_byn_,_bym_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pO_,_byl_,_byk_,_byj_)},
- _brP_=
- [0,
- function(param)
- {function _bwZ_(param){throw Runtime_ocaml_Runtime[2]}
- function _bw0_(param){return 0}
- function _bw1_(param)
- {function _bxV_(param)
- {switch(zone[0])
- {case 0:
- var
- _bx3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$48),
- _bx4_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bx3_),
- _bx5_=caml_call1(Runtime_ocaml_Runtime[41],_bx4_),
- _bx6_=caml_call1(Runtime_ocaml_Runtime[31],cst_4403),
- _bx7_=caml_call2(Runtime_ocaml_Runtime[65],_bx6_,_bx5_),
- _bx8_=caml_call1(Runtime_ocaml_Runtime[31],cst_30345);
- return caml_call2(Runtime_ocaml_Runtime[67],_bx8_,_bx7_);
- case 1:
- var
- _bx9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$49),
- _bx__=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bx9_),
- _bx$_=caml_call1(Runtime_ocaml_Runtime[41],_bx__),
- _bya_=caml_call1(Runtime_ocaml_Runtime[31],cst_3890),
- _byb_=caml_call2(Runtime_ocaml_Runtime[65],_bya_,_bx$_),
- _byc_=caml_call1(Runtime_ocaml_Runtime[31],cst_26723);
- return caml_call2(Runtime_ocaml_Runtime[67],_byc_,_byb_);
- default:
- var
- _byd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$50),
- _bye_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_byd_),
- _byf_=caml_call1(Runtime_ocaml_Runtime[41],_bye_),
- _byg_=caml_call1(Runtime_ocaml_Runtime[31],cst_3542),
- _byh_=caml_call2(Runtime_ocaml_Runtime[65],_byg_,_byf_),
- _byi_=caml_call1(Runtime_ocaml_Runtime[31],cst_24717);
- return caml_call2(Runtime_ocaml_Runtime[67],_byi_,_byh_)}}
- function _bxW_(param)
- {var
- _bxX_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bxY_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxX_);
- if(_bxY_)
- var
- _bxZ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bx0_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxZ_),
- colocation$0=_bx0_?colocation:_bx0_;
- else
- var colocation$0=_bxY_;
- if(colocation$0)
- var
- _bx1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$51),
- _bx2_=
- caml_call2
- (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bx1_);
- else
- var _bx2_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pP_,_bx2_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pQ_,[0],_bxW_,_bxV_)}
- function _bw2_(param)
- {function _bxN_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_26849);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_23748);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22044)}}
- function _bxO_(param)
- {var
- _bxP_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bxQ_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxP_);
- if(_bxQ_)
- var
- _bxR_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bxS_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxR_),
- colocation$0=_bxS_?colocation:_bxS_;
- else
- var colocation$0=_bxQ_;
- if(colocation$0)
- var
- _bxT_=0 === situation_familiale_calcul_apl[0]?0:1,
- _bxU_=
- _bxT_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$98))
- :_bxT_;
- else
- var _bxU_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pR_,_bxU_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pS_,[0],_bxO_,_bxN_)}
- function _bw3_(param)
- {function _bxF_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22262$0);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_19402$0);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_18185$0)}}
- function _bxG_(param)
- {var
- _bxH_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bxI_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bxH_);
- if(_bxI_)
- var
- _bxJ_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bxK_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxJ_),
- colocation$0=_bxK_?colocation:_bxK_;
- else
- var colocation$0=_bxI_;
- if(colocation$0)
- var
- _bxL_=0 === situation_familiale_calcul_apl[0]?1:0,
- _bxM_=
- _bxL_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$99))
- :_bxL_;
- else
- var _bxM_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pT_,_bxM_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pU_,[0],_bxG_,_bxF_)}
- function _bw4_(param)
- {function _bxh_(param)
- {switch(zone[0])
- {case 0:
- var
- _bxn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$52),
- _bxo_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxn_),
- _bxp_=caml_call1(Runtime_ocaml_Runtime[41],_bxo_),
- _bxq_=caml_call1(Runtime_ocaml_Runtime[31],cst_4421),
- _bxr_=caml_call2(Runtime_ocaml_Runtime[65],_bxq_,_bxp_),
- _bxs_=caml_call1(Runtime_ocaml_Runtime[31],cst_30473);
- return caml_call2(Runtime_ocaml_Runtime[67],_bxs_,_bxr_);
- case 1:
- var
- _bxt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$53),
- _bxu_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxt_),
- _bxv_=caml_call1(Runtime_ocaml_Runtime[41],_bxu_),
- _bxw_=caml_call1(Runtime_ocaml_Runtime[31],cst_3906),
- _bxx_=caml_call2(Runtime_ocaml_Runtime[65],_bxw_,_bxv_),
- _bxy_=caml_call1(Runtime_ocaml_Runtime[31],cst_26835);
- return caml_call2(Runtime_ocaml_Runtime[67],_bxy_,_bxx_);
- default:
- var
- _bxz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$54),
- _bxA_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bxz_),
- _bxB_=caml_call1(Runtime_ocaml_Runtime[41],_bxA_),
- _bxC_=caml_call1(Runtime_ocaml_Runtime[31],cst_3557),
- _bxD_=caml_call2(Runtime_ocaml_Runtime[65],_bxC_,_bxB_),
- _bxE_=caml_call1(Runtime_ocaml_Runtime[31],cst_24821);
- return caml_call2(Runtime_ocaml_Runtime[67],_bxE_,_bxD_)}}
- function _bxi_(param)
- {var
- _bxj_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bxk_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxj_),
- colocation$0=_bxk_?colocation:_bxk_;
- if(colocation$0)
- var
- _bxl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$55),
- _bxm_=
- caml_call2
- (Runtime_ocaml_Runtime[81],nombre_personnes_a_charge,_bxl_);
- else
- var _bxm_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pV_,_bxm_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pW_,[0],_bxi_,_bxh_)}
- function _bw5_(param)
- {function _bxb_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_26962);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_23848);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22136)}}
- function _bxc_(param)
- {var
- _bxd_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bxe_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bxd_),
- colocation$0=_bxe_?colocation:_bxe_;
- if(colocation$0)
- var
- _bxf_=0 === situation_familiale_calcul_apl[0]?0:1,
- _bxg_=
- _bxf_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$100))
- :_bxf_;
- else
- var _bxg_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pX_,_bxg_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_pY_,[0],_bxc_,_bxb_)}
- var
- _bw6_=
- [0,
- function(param)
- {function _bw7_(param)
- {switch(zone[0])
- {case 0:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_22355$0);
- case 1:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_19484$0);
- default:
- return caml_call1(Runtime_ocaml_Runtime[31],cst_18261$0)}}
- function _bw8_(param)
- {var
- _bw9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bw__=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bw9_),
- colocation$0=_bw__?colocation:_bw__;
- if(colocation$0)
- var
- _bw$_=0 === situation_familiale_calcul_apl[0]?1:0,
- _bxa_=
- _bw$_
- ?caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$101))
- :_bw$_;
- else
- var _bxa_=colocation$0;
- return caml_call2(Runtime_ocaml_Runtime[29],_pZ_,_bxa_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p0_,[0],_bw8_,_bw7_)},
- _bw5_,
- _bw4_,
- _bw3_,
- _bw2_,
- _bw1_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p1_,_bw6_,_bw0_,_bwZ_)},
- _brO_],
- _brQ_=caml_call4(Runtime_ocaml_Runtime[62],_p2_,_brP_,_brN_,_brM_)}
- catch(_bwY_)
- {_bwY_ = caml_wrap_exception(_bwY_);
- if(_bwY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_pq_];
- throw _bwY_}
- var
- plafond_loyer_d823_16_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_p3_,Runtime_ocaml_Runtime[13],_brQ_);
- try
- {var
- _brR_=
- function(param)
- {function _bwC_(param){throw Runtime_ocaml_Runtime[2]}
- function _bwD_(param){return 0}
- function _bwE_(param)
- {function _bwO_(param)
- {var
- _bwU_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bwV_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224),
- _bwW_=caml_call2(Runtime_ocaml_Runtime[65],_bwV_,_bwU_),
- _bwX_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399);
- return caml_call2(Runtime_ocaml_Runtime[67],_bwX_,_bwW_)}
- function _bwP_(param)
- {var
- _bwQ_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bwR_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bwQ_);
- if(_bwR_)
- var
- _bwS_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bwT_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwS_);
- else
- var _bwT_=_bwR_;
- return caml_call2(Runtime_ocaml_Runtime[29],_p5_,_bwT_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p6_,[0],_bwP_,_bwO_)}
- var
- _bwF_=
- [0,
- function(param)
- {function _bwG_(param)
- {var
- _bwK_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bwL_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229),
- _bwM_=caml_call2(Runtime_ocaml_Runtime[65],_bwL_,_bwK_),
- _bwN_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422);
- return caml_call2(Runtime_ocaml_Runtime[67],_bwN_,_bwM_)}
- function _bwH_(param)
- {var
- _bwI_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bwJ_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwI_);
- return caml_call2(Runtime_ocaml_Runtime[29],_p7_,_bwJ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p8_,[0],_bwH_,_bwG_)},
- _bwE_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p9_,_bwF_,_bwD_,_bwC_)},
- _brS_=function(param){return 1},
- _brT_=
- [0,
- function(param)
- {function _bwg_(param){throw Runtime_ocaml_Runtime[2]}
- function _bwh_(param){return 0}
- function _bwi_(param)
- {function _bws_(param)
- {var
- _bwy_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bwz_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$0),
- _bwA_=caml_call2(Runtime_ocaml_Runtime[65],_bwz_,_bwy_),
- _bwB_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bwB_,_bwA_)}
- function _bwt_(param)
- {var
- _bwu_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bwv_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bwu_);
- if(_bwv_)
- var
- _bww_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bwx_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bww_),
- colocation$0=_bwx_?colocation:_bwx_;
- else
- var colocation$0=_bwv_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_p__,colocation$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_p$_,[0],_bwt_,_bws_)}
- var
- _bwj_=
- [0,
- function(param)
- {function _bwk_(param)
- {var
- _bwo_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bwp_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$0),
- _bwq_=caml_call2(Runtime_ocaml_Runtime[65],_bwp_,_bwo_),
- _bwr_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_bwr_,_bwq_)}
- function _bwl_(param)
- {var
- _bwm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bwn_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bwm_),
- colocation$0=_bwn_?colocation:_bwn_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_qa_,colocation$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_qb_,[0],_bwl_,_bwk_)},
- _bwi_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_qc_,_bwj_,_bwh_,_bwg_)}],
- _brU_=caml_call4(Runtime_ocaml_Runtime[62],_qd_,_brT_,_brS_,_brR_)}
- catch(_bwf_)
- {_bwf_ = caml_wrap_exception(_bwf_);
- if(_bwf_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_p4_];
- throw _bwf_}
- var
- montant_forfaitaire_charges_d8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qe_,Runtime_ocaml_Runtime[13],_brU_);
- try
- {var
- _brV_=
- function(param)
- {switch(zone[0])
- {case 0:
- var _bwc_=caml_call1(Runtime_ocaml_Runtime[39],cst_4$9);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwc_);
- case 1:
- var _bwd_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwd_);
- default:
- var _bwe_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1$0);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwe_)}},
- _brW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qg_,1)},
- _brX_=caml_call4(Runtime_ocaml_Runtime[62],_qh_,[0],_brW_,_brV_)}
- catch(_bwb_)
- {_bwb_ = caml_wrap_exception(_bwb_);
- if(_bwb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qf_];
- throw _bwb_}
- var
- plafond_suppression_d823_16=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qi_,Runtime_ocaml_Runtime[13],_brX_);
- try
- {var
- _brY_=
- function(param)
- {switch(zone[0])
- {case 0:
- var _bv__=caml_call1(Runtime_ocaml_Runtime[39],cst_3_4);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bv__);
- case 1:
- var _bv$_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$2);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bv$_);
- default:
- var _bwa_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$3);
- return caml_call2
- (Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bwa_)}},
- _brZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qk_,1)},
- _br0_=caml_call4(Runtime_ocaml_Runtime[62],_ql_,[0],_brZ_,_brY_)}
- catch(_bv9_)
- {_bv9_ = caml_wrap_exception(_bv9_);
- if(_bv9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qj_];
- throw _bv9_}
- var
- plafond_degressivite_d823_16=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qm_,Runtime_ocaml_Runtime[13],_br0_);
- try
- {var
- _br1_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[74],
- loyer_principal,
- plafond_loyer_d823_16_2)
- ?plafond_loyer_d823_16_2
- :loyer_principal},
- _br2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qo_,1)},
- _br3_=caml_call4(Runtime_ocaml_Runtime[62],_qp_,[0],_br2_,_br1_)}
- catch(_bv8_)
- {_bv8_ = caml_wrap_exception(_bv8_);
- if(_bv8_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qn_];
- throw _bv8_}
- var
- loyer_eligible=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qq_,Runtime_ocaml_Runtime[13],_br3_);
- function _br4_(param)
- {try
- {var
- _bvX_=
- function(param$0)
- {if
- (caml_call2
- (Runtime_ocaml_Runtime[74],
- loyer_principal,
- plafond_suppression_d823_16))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$102);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[74],
- loyer_principal,
- plafond_degressivite_d823_16))
- {var
- _bv4_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- plafond_suppression_d823_16,
- plafond_degressivite_d823_16),
- _bv5_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- loyer_principal,
- plafond_degressivite_d823_16),
- _bv6_=caml_call2(Runtime_ocaml_Runtime[66],_bv5_,_bv4_),
- _bv7_=caml_call2(Runtime_ocaml_Runtime[65],param,_bv6_);
- return caml_call2(Runtime_ocaml_Runtime[68],param,_bv7_)}
- return param},
- _bvY_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_qs_,1)},
- _bvZ_=
- [0,
- function(param$0)
- {function _bv2_(param$0){return param}
- function _bv3_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _qt_,
- beneficiaire_aide_adulte_ou_en)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_qu_,[0],_bv3_,_bv2_)}],
- _bv0_=caml_call4(Runtime_ocaml_Runtime[62],_qv_,_bvZ_,_bvY_,_bvX_);
- return _bv0_}
- catch(_bv1_)
- {_bv1_ = caml_wrap_exception(_bv1_);
- if(_bv1_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qr_];
- throw _bv1_}}
- var
- traitement_aide_finale_diminue=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qw_,Runtime_ocaml_Runtime[10],_br4_);
- try
- {var
- _br5_=function(param){throw Runtime_ocaml_Runtime[2]},
- _br6_=function(param){return 0},
- _br7_=
- function(param)
- {function _bvL_(param)
- {var
- _bvR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3524),
- _bvS_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085),
- _bvT_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8),
- _bvU_=caml_call2(Runtime_ocaml_Runtime[65],_bvT_,_bvS_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bvU_,_bvR_))
- {var
- _bvV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0),
- _bvW_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8);
- return caml_call2(Runtime_ocaml_Runtime[65],_bvW_,_bvV_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)}
- function _bvM_(param)
- {var
- _bvN_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bvO_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bvN_);
- if(_bvO_)
- var
- _bvP_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bvQ_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvP_);
- else
- var _bvQ_=_bvO_;
- return caml_call2(Runtime_ocaml_Runtime[29],_qy_,_bvQ_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_qz_,[0],_bvM_,_bvL_)},
- _br8_=
- [0,
- function(param)
- {function _bvB_(param)
- {var
- _bvF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3539),
- _bvG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$1),
- _bvH_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8),
- _bvI_=caml_call2(Runtime_ocaml_Runtime[65],_bvH_,_bvG_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bvI_,_bvF_))
- {var
- _bvJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2),
- _bvK_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8);
- return caml_call2(Runtime_ocaml_Runtime[65],_bvK_,_bvJ_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)}
- function _bvC_(param)
- {var
- _bvD_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bvE_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvD_);
- return caml_call2(Runtime_ocaml_Runtime[29],_qA_,_bvE_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_qB_,[0],_bvC_,_bvB_)},
- _br7_],
- _br9_=caml_call4(Runtime_ocaml_Runtime[62],_qC_,_br8_,_br6_,_br5_)}
- catch(_bvA_)
- {_bvA_ = caml_wrap_exception(_bvA_);
- if(_bvA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qx_];
- throw _bvA_}
- var
- participation_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qD_,Runtime_ocaml_Runtime[13],_br9_);
- try
- {var
- _br__=function(param){throw Runtime_ocaml_Runtime[2]},
- _br$_=function(param){return 0},
- _bsa_=
- [0,
- function(param)
- {function _bvf_(param)
- {var
- _bvv_=caml_call1(Runtime_ocaml_Runtime[39],cst_100),
- _bvw_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$0),
- _bvx_=
- caml_call2
- (Runtime_ocaml_Runtime[66],loyer_eligible,loyer_reference),
- _bvy_=caml_call2(Runtime_ocaml_Runtime[88],_bvx_,_bvw_),
- _bvz_=caml_call1(Runtime_ocaml_Runtime[44],_bvy_);
- return caml_call2(Runtime_ocaml_Runtime[89],_bvz_,_bvv_)}
- function _bvg_(param)
- {var
- _bvt_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bvu_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvt_);
- return caml_call2(Runtime_ocaml_Runtime[29],_qF_,_bvu_)}
- var
- _bvh_=
- [0,
- function(param)
- {function _bvi_(param)
- {var
- _bvo_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$1),
- _bvp_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$2),
- _bvq_=
- caml_call2
- (Runtime_ocaml_Runtime[66],loyer_eligible,loyer_reference),
- _bvr_=caml_call2(Runtime_ocaml_Runtime[88],_bvq_,_bvp_),
- _bvs_=caml_call1(Runtime_ocaml_Runtime[44],_bvr_);
- return caml_call2(Runtime_ocaml_Runtime[89],_bvs_,_bvo_)}
- function _bvj_(param)
- {var
- _bvk_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bvl_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bvk_);
- if(_bvl_)
- var
- _bvm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bvn_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bvm_);
- else
- var _bvn_=_bvl_;
- return caml_call2(Runtime_ocaml_Runtime[29],_qG_,_bvn_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_qH_,[0],_bvj_,_bvi_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_qI_,_bvh_,_bvg_,_bvf_)}],
- _bsb_=caml_call4(Runtime_ocaml_Runtime[62],_qJ_,_bsa_,_br$_,_br__)}
- catch(_bve_)
- {_bve_ = caml_wrap_exception(_bve_);
- if(_bve_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qE_];
- throw _bve_}
- var
- rapport_loyers=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qK_,Runtime_ocaml_Runtime[15],_bsb_);
- function _bsc_(param)
- {try
- {var
- _bu2_=
- function(param$0)
- {var
- _bu6_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$103),
- _bu7_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _qM_,
- Runtime_ocaml_Runtime[13],
- param),
- _bu8_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _qN_,
- traitement_aide_finale_diminue),
- _bu7_),
- _bu9_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _qO_,
- Runtime_ocaml_Runtime[13],
- _bu8_),
- _bu__=caml_call2(Runtime_ocaml_Runtime[27],_qP_,_bu9_),
- _bu$_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bu__,montant_forfaitaire_d823_16);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bu$_,_bu6_))
- {var
- _bva_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _qQ_,
- Runtime_ocaml_Runtime[13],
- param),
- _bvb_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _qR_,
- traitement_aide_finale_diminue),
- _bva_),
- _bvc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _qS_,
- Runtime_ocaml_Runtime[13],
- _bvb_),
- _bvd_=caml_call2(Runtime_ocaml_Runtime[27],_qT_,_bvc_);
- return caml_call2
- (Runtime_ocaml_Runtime[68],
- _bvd_,
- montant_forfaitaire_d823_16)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$104)},
- _bu3_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_qU_,1)},
- _bu4_=caml_call4(Runtime_ocaml_Runtime[62],_qV_,[0],_bu3_,_bu2_);
- return _bu4_}
- catch(_bu5_)
- {_bu5_ = caml_wrap_exception(_bu5_);
- if(_bu5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qL_];
- throw _bu5_}}
- var
- traitement_aide_finale_minorat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_qW_,Runtime_ocaml_Runtime[10],_bsc_);
- try
- {var
- _bsd_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bse_=function(param){return 0},
- _bsf_=
- [0,
- function(param)
- {function _bup_(param)
- {var _buO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45);
- if(caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buO_))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$105);
- var _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0);
- if(caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buP_))
- {var _buQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75);
- if
- (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buQ_))
- {var
- _buR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045),
- _buS_=
- caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buR_),
- _buT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0);
- return caml_call2(Runtime_ocaml_Runtime[88],_buT_,_buS_)}}
- var _buU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0);
- if(caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buU_))
- {var
- _buV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1),
- _buW_=
- caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buV_),
- _buX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068),
- _buY_=caml_call2(Runtime_ocaml_Runtime[88],_buX_,_buW_),
- _buZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3),
- _bu0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1),
- _bu1_=caml_call2(Runtime_ocaml_Runtime[88],_bu0_,_buZ_);
- return caml_call2(Runtime_ocaml_Runtime[85],_bu1_,_buY_)}
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$106)}
- function _buq_(param)
- {var
- _buM_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _buN_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_buM_);
- return caml_call2(Runtime_ocaml_Runtime[29],_qY_,_buN_)}
- var
- _bur_=
- [0,
- function(param)
- {function _bus_(param)
- {var _buy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$1);
- if
- (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buy_))
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$107);
- var _buz_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2);
- if
- (caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buz_))
- {var _buA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$2);
- if
- (caml_call2(Runtime_ocaml_Runtime[94],rapport_loyers,_buA_))
- {var
- _buB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$2),
- _buC_=
- caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buB_),
- _buD_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$3);
- return caml_call2(Runtime_ocaml_Runtime[88],_buD_,_buC_)}}
- var _buE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3);
- if
- (caml_call2(Runtime_ocaml_Runtime[91],rapport_loyers,_buE_))
- {var
- _buF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4),
- _buG_=
- caml_call2(Runtime_ocaml_Runtime[86],rapport_loyers,_buF_),
- _buH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0),
- _buI_=caml_call2(Runtime_ocaml_Runtime[88],_buH_,_buG_),
- _buJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0),
- _buK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4),
- _buL_=caml_call2(Runtime_ocaml_Runtime[88],_buK_,_buJ_);
- return caml_call2(Runtime_ocaml_Runtime[85],_buL_,_buI_)}
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$108)}
- function _but_(param)
- {var
- _buu_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _buv_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_buu_);
- if(_buv_)
- var
- _buw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bux_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_buw_);
- else
- var _bux_=_buv_;
- return caml_call2(Runtime_ocaml_Runtime[29],_qZ_,_bux_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_q0_,[0],_but_,_bus_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_q1_,_bur_,_buq_,_bup_)}],
- _bsg_=caml_call4(Runtime_ocaml_Runtime[62],_q2_,_bsf_,_bse_,_bsd_)}
- catch(_buo_)
- {_buo_ = caml_wrap_exception(_buo_);
- if(_buo_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_qX_];
- throw _buo_}
- var
- taux_loyer_eligible_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_q3_,Runtime_ocaml_Runtime[15],_bsg_);
- function _bsh_(param)
- {try
- {var
- _bty_=
- function(param$0)
- {var
- _btC_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$109),
- _btD_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _q5_,
- Runtime_ocaml_Runtime[13],
- param),
- _btE_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _q6_,
- traitement_aide_finale_minorat),
- _btD_),
- _btF_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _q7_,
- Runtime_ocaml_Runtime[13],
- _btE_),
- _btG_=caml_call2(Runtime_ocaml_Runtime[27],_q8_,_btF_),
- _btH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _q9_,
- Runtime_ocaml_Runtime[13],
- _btG_),
- _btI_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _q__,
- contributions_sociales_dot_mon),
- _btH_),
- _btJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _q$_,
- Runtime_ocaml_Runtime[13],
- _btI_),
- _btK_=caml_call2(Runtime_ocaml_Runtime[27],_ra_,_btJ_),
- _btL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50),
- _btM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rb_,
- Runtime_ocaml_Runtime[13],
- param),
- _btN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rc_,
- traitement_aide_finale_minorat),
- _btM_),
- _btO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rd_,
- Runtime_ocaml_Runtime[13],
- _btN_),
- _btP_=caml_call2(Runtime_ocaml_Runtime[27],_re_,_btO_),
- _btQ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rf_,
- Runtime_ocaml_Runtime[13],
- _btP_),
- _btR_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rg_,
- contributions_sociales_dot_mon),
- _btQ_),
- _btS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rh_,
- Runtime_ocaml_Runtime[13],
- _btR_),
- _btT_=caml_call2(Runtime_ocaml_Runtime[27],_ri_,_btS_),
- _btU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rj_,
- Runtime_ocaml_Runtime[13],
- param),
- _btV_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rk_,
- traitement_aide_finale_minorat),
- _btU_),
- _btW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rl_,
- Runtime_ocaml_Runtime[13],
- _btV_),
- _btX_=caml_call2(Runtime_ocaml_Runtime[27],_rm_,_btW_),
- _btY_=caml_call2(Runtime_ocaml_Runtime[68],_btX_,_btT_),
- _btZ_=caml_call2(Runtime_ocaml_Runtime[68],_btY_,_btL_),
- _bt0_=caml_call1(Runtime_ocaml_Runtime[38],_btZ_),
- _bt1_=caml_call2(Runtime_ocaml_Runtime[67],_bt0_,_btK_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bt1_,_btC_))
- {var
- _bt2_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rn_,
- Runtime_ocaml_Runtime[13],
- param),
- _bt3_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _ro_,
- traitement_aide_finale_minorat),
- _bt2_),
- _bt4_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rp_,
- Runtime_ocaml_Runtime[13],
- _bt3_),
- _bt5_=caml_call2(Runtime_ocaml_Runtime[27],_rq_,_bt4_),
- _bt6_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rr_,
- Runtime_ocaml_Runtime[13],
- _bt5_),
- _bt7_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rs_,
- contributions_sociales_dot_mon),
- _bt6_),
- _bt8_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rt_,
- Runtime_ocaml_Runtime[13],
- _bt7_),
- _bt9_=caml_call2(Runtime_ocaml_Runtime[27],_ru_,_bt8_),
- _bt__=caml_call1(Runtime_ocaml_Runtime[31],cst_50$0),
- _bt$_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rv_,
- Runtime_ocaml_Runtime[13],
- param),
- _bua_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rw_,
- traitement_aide_finale_minorat),
- _bt$_),
- _bub_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rx_,
- Runtime_ocaml_Runtime[13],
- _bua_),
- _buc_=caml_call2(Runtime_ocaml_Runtime[27],_ry_,_bub_),
- _bud_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rz_,
- Runtime_ocaml_Runtime[13],
- _buc_),
- _bue_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rA_,
- contributions_sociales_dot_mon),
- _bud_),
- _buf_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rB_,
- Runtime_ocaml_Runtime[13],
- _bue_),
- _bug_=caml_call2(Runtime_ocaml_Runtime[27],_rC_,_buf_),
- _buh_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rD_,
- Runtime_ocaml_Runtime[13],
- param),
- _bui_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rE_,
- traitement_aide_finale_minorat),
- _buh_),
- _buj_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rF_,
- Runtime_ocaml_Runtime[13],
- _bui_),
- _buk_=caml_call2(Runtime_ocaml_Runtime[27],_rG_,_buj_),
- _bul_=caml_call2(Runtime_ocaml_Runtime[68],_buk_,_bug_),
- _bum_=caml_call2(Runtime_ocaml_Runtime[68],_bul_,_bt__),
- _bun_=caml_call1(Runtime_ocaml_Runtime[38],_bum_);
- return caml_call2(Runtime_ocaml_Runtime[67],_bun_,_bt9_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$110)},
- _btz_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_rH_,1)},
- _btA_=caml_call4(Runtime_ocaml_Runtime[62],_rI_,[0],_btz_,_bty_);
- return _btA_}
- catch(_btB_)
- {_btB_ = caml_wrap_exception(_btB_);
- if(_btB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_q4_];
- throw _btB_}}
- var
- traitement_aide_finale_contrib=
- caml_call3
- (Runtime_ocaml_Runtime[28],_rJ_,Runtime_ocaml_Runtime[10],_bsh_);
- try
- {var
- _bsi_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bsj_=function(param){return 0},
- _bsk_=
- [0,
- function(param)
- {function _btf_(param)
- {var
- _btu_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000),
- _btv_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$0),
- _btw_=
- caml_call2
- (Runtime_ocaml_Runtime[88],
- taux_loyer_eligible_formule,
- _btv_),
- _btx_=caml_call1(Runtime_ocaml_Runtime[44],_btw_);
- return caml_call2(Runtime_ocaml_Runtime[89],_btx_,_btu_)}
- function _btg_(param)
- {var
- _bts_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _btt_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bts_);
- return caml_call2(Runtime_ocaml_Runtime[29],_rL_,_btt_)}
- var
- _bth_=
- [0,
- function(param)
- {function _bti_(param)
- {var
- _bto_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$1),
- _btp_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$2),
- _btq_=
- caml_call2
- (Runtime_ocaml_Runtime[88],
- taux_loyer_eligible_formule,
- _btp_),
- _btr_=caml_call1(Runtime_ocaml_Runtime[44],_btq_);
- return caml_call2(Runtime_ocaml_Runtime[89],_btr_,_bto_)}
- function _btj_(param)
- {var
- _btk_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _btl_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_btk_);
- if(_btl_)
- var
- _btm_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _btn_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_btm_);
- else
- var _btn_=_btl_;
- return caml_call2(Runtime_ocaml_Runtime[29],_rM_,_btn_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_rN_,[0],_btj_,_bti_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_rO_,_bth_,_btg_,_btf_)}],
- _bsl_=caml_call4(Runtime_ocaml_Runtime[62],_rP_,_bsk_,_bsj_,_bsi_)}
- catch(_bte_)
- {_bte_ = caml_wrap_exception(_bte_);
- if(_bte_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_rK_];
- throw _bte_}
- var
- taux_loyer_eligible_arrondi=
- caml_call3
- (Runtime_ocaml_Runtime[28],_rQ_,Runtime_ocaml_Runtime[15],_bsl_);
- function _bsm_(param)
- {try
- {var
- _bs0_=
- function(param$0)
- {var
- _bs4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$111),
- _bs5_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- reduction_loyer_solidarite,
- fraction_l832_3),
- _bs6_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rS_,
- Runtime_ocaml_Runtime[13],
- param),
- _bs7_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rT_,
- traitement_aide_finale_contrib),
- _bs6_),
- _bs8_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rU_,
- Runtime_ocaml_Runtime[13],
- _bs7_),
- _bs9_=caml_call2(Runtime_ocaml_Runtime[27],_rV_,_bs8_),
- _bs__=caml_call2(Runtime_ocaml_Runtime[68],_bs9_,_bs5_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bs__,_bs4_))
- {var
- _bs$_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- reduction_loyer_solidarite,
- fraction_l832_3),
- _bta_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rW_,
- Runtime_ocaml_Runtime[13],
- param),
- _btb_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _rX_,
- traitement_aide_finale_contrib),
- _bta_),
- _btc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _rY_,
- Runtime_ocaml_Runtime[13],
- _btb_),
- _btd_=caml_call2(Runtime_ocaml_Runtime[27],_rZ_,_btc_);
- return caml_call2(Runtime_ocaml_Runtime[68],_btd_,_bs$_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$112)},
- _bs1_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_r0_,1)},
- _bs2_=caml_call4(Runtime_ocaml_Runtime[62],_r1_,[0],_bs1_,_bs0_);
- return _bs2_}
- catch(_bs3_)
- {_bs3_ = caml_wrap_exception(_bs3_);
- if(_bs3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_rR_];
- throw _bs3_}}
- var
- traitement_aide_finale_reducti=
- caml_call3
- (Runtime_ocaml_Runtime[28],_r2_,Runtime_ocaml_Runtime[10],_bsm_);
- try
- {var
- _bsn_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[85],
- taux_composition_familiale,
- taux_loyer_eligible_arrondi)},
- _bso_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_r4_,1)},
- _bsp_=caml_call4(Runtime_ocaml_Runtime[62],_r5_,[0],_bso_,_bsn_)}
- catch(_bsZ_)
- {_bsZ_ = caml_wrap_exception(_bsZ_);
- if(_bsZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_r3_];
- throw _bsZ_}
- var
- taux_prise_compte_ressources=
- caml_call3
- (Runtime_ocaml_Runtime[28],_r6_,Runtime_ocaml_Runtime[15],_bsp_);
- function _bsq_(param)
- {try
- {var
- _bsO_=
- function(param$0)
- {var
- _bsS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _r8_,
- Runtime_ocaml_Runtime[13],
- param),
- _bsT_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _r9_,
- traitement_aide_finale_reducti),
- _bsS_),
- _bsU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _r__,
- Runtime_ocaml_Runtime[13],
- _bsT_),
- _bsV_=caml_call2(Runtime_ocaml_Runtime[27],_r$_,_bsU_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _bsV_,
- montant_minimal_aide_d823_16))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$113);
- var
- _bsW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _sa_,
- Runtime_ocaml_Runtime[13],
- param),
- _bsX_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _sb_,
- traitement_aide_finale_reducti),
- _bsW_),
- _bsY_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _sc_,
- Runtime_ocaml_Runtime[13],
- _bsX_);
- return caml_call2(Runtime_ocaml_Runtime[27],_sd_,_bsY_)},
- _bsP_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_se_,1)},
- _bsQ_=caml_call4(Runtime_ocaml_Runtime[62],_sf_,[0],_bsP_,_bsO_);
- return _bsQ_}
- catch(_bsR_)
- {_bsR_ = caml_wrap_exception(_bsR_);
- if(_bsR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_r7_];
- throw _bsR_}}
- var
- traitement_aide_finale_montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sg_,Runtime_ocaml_Runtime[10],_bsq_);
- try
- {var
- _bsr_=
- function(param)
- {var
- _bsM_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- ressources_menage_arrondies,
- abattement_forfaitaire_d823_17),
- _bsN_=
- caml_call2
- (Runtime_ocaml_Runtime[65],_bsM_,taux_prise_compte_ressources);
- return caml_call2
- (Runtime_ocaml_Runtime[67],participation_minimale,_bsN_)},
- _bss_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_si_,1)},
- _bst_=caml_call4(Runtime_ocaml_Runtime[62],_sj_,[0],_bss_,_bsr_)}
- catch(_bsL_)
- {_bsL_ = caml_wrap_exception(_bsL_);
- if(_bsL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sh_];
- throw _bsL_}
- var
- participation_personnelle=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sk_,Runtime_ocaml_Runtime[13],_bst_);
- try
- {var
- _bsu_=
- function(param)
- {var
- _bsH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$114),
- _bsI_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8),
- _bsJ_=
- caml_call2
- (Runtime_ocaml_Runtime[68],_bsI_,participation_personnelle);
- if(caml_call2(Runtime_ocaml_Runtime[73],_bsJ_,_bsH_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$115);
- var
- _bsK_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- loyer_eligible,
- montant_forfaitaire_charges_d8);
- return caml_call2
- (Runtime_ocaml_Runtime[68],_bsK_,participation_personnelle)},
- _bsv_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sm_,1)},
- _bsw_=caml_call4(Runtime_ocaml_Runtime[62],_sn_,[0],_bsv_,_bsu_)}
- catch(_bsG_)
- {_bsG_ = caml_wrap_exception(_bsG_);
- if(_bsG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sl_];
- throw _bsG_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_so_,Runtime_ocaml_Runtime[13],_bsw_);
- try
- {var
- _bsx_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$4),
- _bsy_=
- caml_call2(Runtime_ocaml_Runtime[65],plafond_loyer_d823_16_2,_bsx_),
- _bsz_=
- caml_call2
- (Runtime_ocaml_Runtime[72],plafond_degressivite_d823_16,_bsy_)}
- catch(_bsF_)
- {_bsF_ = caml_wrap_exception(_bsF_);
- if(_bsF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sp_];
- throw _bsF_}
- if(_bsz_)
- {try
- {var
- _bsA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9),
- _bsB_=caml_call2(Runtime_ocaml_Runtime[91],fraction_l832_3,_bsA_);
- if(_bsB_)
- var
- _bsC_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0),
- _bsD_=caml_call2(Runtime_ocaml_Runtime[92],fraction_l832_3,_bsC_);
- else
- var _bsD_=_bsB_}
- catch(_bsE_)
- {_bsE_ = caml_wrap_exception(_bsE_);
- if(_bsE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sq_];
- throw _bsE_}
- if(_bsD_)
- return [0,
- montant_forfaitaire_charges_d8,
- plafond_loyer_d823_16_2,
- participation_minimale,
- taux_composition_familiale,
- participation_personnelle,
- aide_finale_formule,
- traitement_aide_finale_montant];
- throw [0,Runtime_ocaml_Runtime[3],_sr_]}
- throw [0,Runtime_ocaml_Runtime[3],_ss_]}
- function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge)
- {var
- mode_occupation=calcul_aide_personnalisee_loge[1],
- ressources_menage_arrondies=calcul_aide_personnalisee_loge[2],
- nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3],
- situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4],
- zone=calcul_aide_personnalisee_loge[5],
- date_courante=calcul_aide_personnalisee_loge[6],
- redevance=calcul_aide_personnalisee_loge[7],
- condition_2_du_832_25=calcul_aide_personnalisee_loge[8],
- n_nombre_parts_d832_25=calcul_aide_personnalisee_loge[9];
- try
- {var
- _bmE_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_121726)},
- _bmF_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_su_,1)},
- _bmG_=caml_call4(Runtime_ocaml_Runtime[62],_sv_,[0],_bmF_,_bmE_)}
- catch(_brk_)
- {_brk_ = caml_wrap_exception(_brk_);
- if(_brk_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_st_];
- throw _brk_}
- var
- coefficient_r_d832_25=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sw_,Runtime_ocaml_Runtime[13],_bmG_);
- try
- {var
- _bmH_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$0)},
- _bmI_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sy_,1)},
- _bmJ_=caml_call4(Runtime_ocaml_Runtime[62],_sz_,[0],_bmI_,_bmH_)}
- catch(_brj_)
- {_brj_ = caml_wrap_exception(_brj_);
- if(_brj_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sx_];
- throw _brj_}
- var
- montant_forfaitaire_d832_24=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sA_,Runtime_ocaml_Runtime[13],_bmJ_);
- try
- {var
- _bmK_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$1)},
- _bmL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sC_,1)},
- _bmM_=caml_call4(Runtime_ocaml_Runtime[62],_sD_,[0],_bmL_,_bmK_)}
- catch(_bri_)
- {_bri_ = caml_wrap_exception(_bri_);
- if(_bri_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sB_];
- throw _bri_}
- var
- montant_minimal_aide_d823_24=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sE_,Runtime_ocaml_Runtime[13],_bmM_);
- try
- {var
- _bmN_=
- function(param)
- {function _bre_(param)
- {switch(mode_occupation[0])
- {case 0:return 0;
- case 1:
- var logement_foyer=mode_occupation[1];
- switch(logement_foyer[1][0])
- {case 0:return 0;
- case 1:
- var _brg_=caml_call3(Runtime_ocaml_Runtime[56],1994,12,31);
- return caml_call2
- (Runtime_ocaml_Runtime[98],logement_foyer[2],_brg_);
- case 2:
- var _brh_=caml_call3(Runtime_ocaml_Runtime[56],1990,9,30);
- return caml_call2
- (Runtime_ocaml_Runtime[98],logement_foyer[2],_brh_);
- default:return 0}
- case 2:return 0;
- case 3:return 0;
- default:return 0}}
- function _brf_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_sG_,1)}
- return caml_call4(Runtime_ocaml_Runtime[62],_sH_,[0],_brf_,_bre_)},
- _bmO_=function(param){return 1},
- _bmP_=[0,function(param){return caml_call1(condition_2_du_832_25,0)}],
- _bmQ_=caml_call4(Runtime_ocaml_Runtime[62],_sI_,_bmP_,_bmO_,_bmN_)}
- catch(_brd_)
- {_brd_ = caml_wrap_exception(_brd_);
- if(_brd_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sF_];
- throw _brd_}
- var
- condition_2_du_832_25$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sJ_,Runtime_ocaml_Runtime[12],_bmQ_);
- try
- {var
- _bmR_=function(param){return date_courante},
- _bmS_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sL_,1)},
- _bmT_=caml_call4(Runtime_ocaml_Runtime[62],_sM_,[0],_bmS_,_bmR_),
- contributions_sociales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sN_,Runtime_ocaml_Runtime[16],_bmT_)}
- catch(_brc_)
- {_brc_ = caml_wrap_exception(_brc_);
- if(_brc_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sK_];
- throw _brc_}
- var
- _bmU_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_sO_,contributions_sociales_aides_p),
- [0,contributions_sociales_dot_dat]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_sP_,_bmU_),
- contributions_sociales_dot_mon=result[1];
- try
- {var
- _bmV_=function(param){throw Runtime_ocaml_Runtime[2]},
- _bmW_=function(param){return 0},
- _bmX_=
- function(param)
- {function _bqQ_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$116)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_44443)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_52101);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$56)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_55555);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$28)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_59454);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$13)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_63369);
- var
- _bqW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$10),
- _bqX_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqW_),
- _bqY_=caml_call1(Runtime_ocaml_Runtime[41],_bqX_),
- _bqZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_7089),
- _bq0_=caml_call2(Runtime_ocaml_Runtime[65],_bqZ_,_bqY_),
- _bq1_=caml_call1(Runtime_ocaml_Runtime[31],cst_68350);
- return caml_call2(Runtime_ocaml_Runtime[67],_bq1_,_bq0_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$117)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_40643)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_47433);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$57)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_50575);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$29)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_54138);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$14)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_57687);
- var
- _bq2_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$11),
- _bq3_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bq2_),
- _bq4_=caml_call1(Runtime_ocaml_Runtime[41],_bq3_),
- _bq5_=caml_call1(Runtime_ocaml_Runtime[31],cst_6407),
- _bq6_=caml_call2(Runtime_ocaml_Runtime[65],_bq5_,_bq4_),
- _bq7_=caml_call1(Runtime_ocaml_Runtime[31],cst_61469);
- return caml_call2(Runtime_ocaml_Runtime[67],_bq7_,_bq6_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$118)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_38578)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44869);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$58)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_47602);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$30)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_50744);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$15)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_53884);
- var
- _bq8_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$12),
- _bq9_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bq8_),
- _bq__=caml_call1(Runtime_ocaml_Runtime[41],_bq9_),
- _bq$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5946),
- _bra_=caml_call2(Runtime_ocaml_Runtime[65],_bq$_,_bq__),
- _brb_=caml_call1(Runtime_ocaml_Runtime[31],cst_57416);
- return caml_call2(Runtime_ocaml_Runtime[67],_brb_,_bra_)}}
- function _bqR_(param)
- {var
- _bqS_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bqT_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bqS_);
- if(_bqT_)
- var
- _bqU_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bqV_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bqU_);
- else
- var _bqV_=_bqT_;
- return caml_call2(Runtime_ocaml_Runtime[29],_sR_,_bqV_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_sS_,[0],_bqR_,_bqQ_)},
- _bmY_=
- [0,
- function(param)
- {function _bqu_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$119)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_44630)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_52321);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$59)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_55788);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$31)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_59704);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$16)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_63635);
- var
- _bqy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$13),
- _bqz_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqy_),
- _bqA_=caml_call1(Runtime_ocaml_Runtime[41],_bqz_),
- _bqB_=caml_call1(Runtime_ocaml_Runtime[31],cst_7119),
- _bqC_=caml_call2(Runtime_ocaml_Runtime[65],_bqB_,_bqA_),
- _bqD_=caml_call1(Runtime_ocaml_Runtime[31],cst_68637);
- return caml_call2(Runtime_ocaml_Runtime[67],_bqD_,_bqC_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$120)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_40814)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_47632);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$60)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_50787);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$32)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_54365);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$17)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_57929);
- var
- _bqE_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$14),
- _bqF_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqE_),
- _bqG_=caml_call1(Runtime_ocaml_Runtime[41],_bqF_),
- _bqH_=caml_call1(Runtime_ocaml_Runtime[31],cst_6434),
- _bqI_=caml_call2(Runtime_ocaml_Runtime[65],_bqH_,_bqG_),
- _bqJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_61727);
- return caml_call2(Runtime_ocaml_Runtime[67],_bqJ_,_bqI_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$121)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_38740)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_45057);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$61)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_47802);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$33)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_50957);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$18)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_54110);
- var
- _bqK_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$15),
- _bqL_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bqK_),
- _bqM_=caml_call1(Runtime_ocaml_Runtime[41],_bqL_),
- _bqN_=caml_call1(Runtime_ocaml_Runtime[31],cst_5971),
- _bqO_=caml_call2(Runtime_ocaml_Runtime[65],_bqN_,_bqM_),
- _bqP_=caml_call1(Runtime_ocaml_Runtime[31],cst_57657);
- return caml_call2(Runtime_ocaml_Runtime[67],_bqP_,_bqO_)}}
- function _bqv_(param)
- {var
- _bqw_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bqx_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bqw_);
- return caml_call2(Runtime_ocaml_Runtime[29],_sT_,_bqx_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_sU_,[0],_bqv_,_bqu_)},
- _bmX_],
- _bmZ_=caml_call4(Runtime_ocaml_Runtime[62],_sV_,_bmY_,_bmW_,_bmV_)}
- catch(_bqt_)
- {_bqt_ = caml_wrap_exception(_bqt_);
- if(_bqt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sQ_];
- throw _bqt_}
- var
- plafond_equivalence_loyer_elig=
- caml_call3
- (Runtime_ocaml_Runtime[28],_sW_,Runtime_ocaml_Runtime[13],_bmZ_);
- function _bm0_(param)
- {try
- {var
- _bqn_=
- function(param$0)
- {var
- _bqr_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$122),
- _bqs_=
- caml_call2
- (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d832_24);
- return caml_call2(Runtime_ocaml_Runtime[72],_bqs_,_bqr_)
- ?caml_call2
- (Runtime_ocaml_Runtime[68],
- param,
- montant_forfaitaire_d832_24)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$123)},
- _bqo_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_sY_,1)},
- _bqp_=caml_call4(Runtime_ocaml_Runtime[62],_sZ_,[0],_bqo_,_bqn_);
- return _bqp_}
- catch(_bqq_)
- {_bqq_ = caml_wrap_exception(_bqq_);
- if(_bqq_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_sX_];
- throw _bqq_}}
- var
- traitement_aide_finale_minorat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_s0_,Runtime_ocaml_Runtime[10],_bm0_);
- try
- {var
- _bm1_=function(param){return condition_2_du_832_25$0},
- _bm2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s2_,1)},
- _bm3_=caml_call4(Runtime_ocaml_Runtime[62],_s3_,[0],_bm2_,_bm1_),
- calcul_nombre_parts_dot_condit=
- caml_call3
- (Runtime_ocaml_Runtime[28],_s4_,Runtime_ocaml_Runtime[12],_bm3_)}
- catch(_bqm_)
- {_bqm_ = caml_wrap_exception(_bqm_);
- if(_bqm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_s1_];
- throw _bqm_}
- try
- {var
- _bm4_=function(param){return nombre_personnes_a_charge},
- _bm5_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s6_,1)},
- _bm6_=caml_call4(Runtime_ocaml_Runtime[62],_s7_,[0],_bm5_,_bm4_),
- calcul_nombre_parts_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_s8_,Runtime_ocaml_Runtime[14],_bm6_)}
- catch(_bql_)
- {_bql_ = caml_wrap_exception(_bql_);
- if(_bql_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_s5_];
- throw _bql_}
- try
- {var
- _bm7_=function(param){return situation_familiale_calcul_apl},
- _bm8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s__,1)},
- _bm9_=caml_call4(Runtime_ocaml_Runtime[62],_s$_,[0],_bm8_,_bm7_),
- calcul_nombre_parts_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ta_,
- embed_situation_familiale_calc,
- _bm9_)}
- catch(_bqk_)
- {_bqk_ = caml_wrap_exception(_bqk_);
- if(_bqk_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_s9_];
- throw _bqk_}
- var
- _bm__=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_tb_,calcul_nombre_part_logement_fo),
- [0,
- calcul_nombre_parts_dot_condit,
- calcul_nombre_parts_dot_nombre,
- calcul_nombre_parts_dot_situat]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_tc_,_bm__),
- calcul_nombre_parts_dot_n_nomb=result$0[1];
- try
- {var
- _bm$_=
- function(param)
- {return condition_2_du_832_25$0
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_1500)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_2668)},
- _bna_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_te_,1)},
- _bnb_=caml_call4(Runtime_ocaml_Runtime[62],_tf_,[0],_bna_,_bm$_)}
- catch(_bqj_)
- {_bqj_ = caml_wrap_exception(_bqj_);
- if(_bqj_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_td_];
- throw _bqj_}
- var
- montant_forfaitaire_d832_27=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tg_,Runtime_ocaml_Runtime[13],_bnb_);
- try
- {var
- _bnc_=
- function(param)
- {return condition_2_du_832_25$0
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2142091)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_1339340)},
- _bnd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ti_,1)},
- _bne_=caml_call4(Runtime_ocaml_Runtime[62],_tj_,[0],_bnd_,_bnc_)}
- catch(_bqi_)
- {_bqi_ = caml_wrap_exception(_bqi_);
- if(_bqi_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_th_];
- throw _bqi_}
- var
- coefficient_multiplicateur_d83=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tk_,Runtime_ocaml_Runtime[13],_bne_);
- try
- {var
- _bnf_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[72],
- redevance,
- plafond_equivalence_loyer_elig)
- ?plafond_equivalence_loyer_elig
- :redevance},
- _bng_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tm_,1)},
- _bnh_=caml_call4(Runtime_ocaml_Runtime[62],_tn_,[0],_bng_,_bnf_)}
- catch(_bqh_)
- {_bqh_ = caml_wrap_exception(_bqh_);
- if(_bqh_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tl_];
- throw _bqh_}
- var
- equivalence_loyer_eligible=
- caml_call3
- (Runtime_ocaml_Runtime[28],_to_,Runtime_ocaml_Runtime[13],_bnh_);
- try
- {var
- _bni_=
- function(param)
- {function _bqf_(param){return calcul_nombre_parts_dot_n_nomb}
- function _bqg_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_tq_,1)}
- return caml_call4(Runtime_ocaml_Runtime[62],_tr_,[0],_bqg_,_bqf_)},
- _bnj_=function(param){return 1},
- _bnk_=
- [0,function(param){return caml_call1(n_nombre_parts_d832_25,0)}],
- _bnl_=caml_call4(Runtime_ocaml_Runtime[62],_ts_,_bnk_,_bnj_,_bni_)}
- catch(_bqe_)
- {_bqe_ = caml_wrap_exception(_bqe_);
- if(_bqe_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tp_];
- throw _bqe_}
- var
- n_nombre_parts_d832_25$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tt_,Runtime_ocaml_Runtime[15],_bnl_);
- function _bnm_(param)
- {try
- {var
- _bqa_=
- function(param$0)
- {return caml_call2
- (Runtime_ocaml_Runtime[68],equivalence_loyer_eligible,param)},
- _bqb_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_tv_,1)},
- _bqc_=caml_call4(Runtime_ocaml_Runtime[62],_tw_,[0],_bqb_,_bqa_);
- return _bqc_}
- catch(_bqd_)
- {_bqd_ = caml_wrap_exception(_bqd_);
- if(_bqd_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tu_];
- throw _bqd_}}
- var
- depense_nette_minimale_d832_27=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tx_,Runtime_ocaml_Runtime[10],_bnm_);
- try
- {var
- _bnn_=function(param){return ressources_menage_arrondies},
- _bno_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tz_,1)},
- _bnp_=caml_call4(Runtime_ocaml_Runtime[62],_tA_,[0],_bno_,_bnn_),
- calcul_equivalence_loyer_minim$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tB_,Runtime_ocaml_Runtime[13],_bnp_)}
- catch(_bp$_)
- {_bp$_ = caml_wrap_exception(_bp$_);
- if(_bp$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ty_];
- throw _bp$_}
- try
- {var
- _bnq_=function(param){return condition_2_du_832_25$0},
- _bnr_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tD_,1)},
- _bns_=caml_call4(Runtime_ocaml_Runtime[62],_tE_,[0],_bnr_,_bnq_),
- calcul_equivalence_loyer_minim$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tF_,Runtime_ocaml_Runtime[12],_bns_)}
- catch(_bp__)
- {_bp__ = caml_wrap_exception(_bp__);
- if(_bp__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tC_];
- throw _bp__}
- try
- {var
- _bnt_=function(param){return n_nombre_parts_d832_25$0},
- _bnu_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tH_,1)},
- _bnv_=caml_call4(Runtime_ocaml_Runtime[62],_tI_,[0],_bnu_,_bnt_),
- calcul_equivalence_loyer_minim$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tJ_,Runtime_ocaml_Runtime[15],_bnv_)}
- catch(_bp9_)
- {_bp9_ = caml_wrap_exception(_bp9_);
- if(_bp9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tG_];
- throw _bp9_}
- var
- _bnw_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_tK_,calcul_equivalence_loyer_minim),
- [0,
- calcul_equivalence_loyer_minim$0,
- calcul_equivalence_loyer_minim$1,
- calcul_equivalence_loyer_minim$2]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_tL_,_bnw_),
- calcul_equivalence_loyer_minim$3=result$1[1];
- try
- {var
- _bnx_=
- function(param)
- {var
- _bp4_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- coefficient_multiplicateur_d83,
- n_nombre_parts_d832_25$0),
- _bp5_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- coefficient_r_d832_25,
- n_nombre_parts_d832_25$0),
- _bp6_=
- caml_call2
- (Runtime_ocaml_Runtime[68],ressources_menage_arrondies,_bp5_),
- _bp7_=caml_call2(Runtime_ocaml_Runtime[66],_bp6_,_bp4_),
- _bp8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95);
- return caml_call2(Runtime_ocaml_Runtime[86],_bp8_,_bp7_)},
- _bny_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tN_,1)},
- _bnz_=
- [0,
- function(param)
- {function _bpZ_(param)
- {var
- _bp1_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- coefficient_multiplicateur_d83,
- n_nombre_parts_d832_25$0),
- _bp2_=
- caml_call2
- (Runtime_ocaml_Runtime[66],
- ressources_menage_arrondies,
- _bp1_),
- _bp3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$0);
- return caml_call2(Runtime_ocaml_Runtime[86],_bp3_,_bp2_)}
- function _bp0_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_tO_,condition_2_du_832_25$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_tP_,[0],_bp0_,_bpZ_)}],
- _bnA_=caml_call4(Runtime_ocaml_Runtime[62],_tQ_,_bnz_,_bny_,_bnx_)}
- catch(_bpY_)
- {_bpY_ = caml_wrap_exception(_bpY_);
- if(_bpY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tM_];
- throw _bpY_}
- var
- coefficient_prise_en_charge_d8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_tR_,Runtime_ocaml_Runtime[15],_bnA_);
- function _bnB_(param)
- {try
- {var
- _bpM_=
- function(param$0)
- {var
- _bpQ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _tT_,
- Runtime_ocaml_Runtime[13],
- param),
- _bpR_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _tU_,
- depense_nette_minimale_d832_27),
- _bpQ_),
- _bpS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _tV_,
- Runtime_ocaml_Runtime[13],
- _bpR_),
- _bpT_=caml_call2(Runtime_ocaml_Runtime[27],_tW_,_bpS_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[71],_bpT_,montant_forfaitaire_d832_27))
- {var
- _bpU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _tX_,
- Runtime_ocaml_Runtime[13],
- param),
- _bpV_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _tY_,
- depense_nette_minimale_d832_27),
- _bpU_),
- _bpW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _tZ_,
- Runtime_ocaml_Runtime[13],
- _bpV_),
- _bpX_=caml_call2(Runtime_ocaml_Runtime[27],_t0_,_bpW_);
- return caml_call2
- (Runtime_ocaml_Runtime[68],
- montant_forfaitaire_d832_27,
- _bpX_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$124)},
- _bpN_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_t1_,1)},
- _bpO_=caml_call4(Runtime_ocaml_Runtime[62],_t2_,[0],_bpN_,_bpM_);
- return _bpO_}
- catch(_bpP_)
- {_bpP_ = caml_wrap_exception(_bpP_);
- if(_bpP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_tS_];
- throw _bpP_}}
- var
- abattement_depense_nette_minim=
- caml_call3
- (Runtime_ocaml_Runtime[28],_t3_,Runtime_ocaml_Runtime[10],_bnB_);
- try
- {var
- _bnC_=function(param){return calcul_equivalence_loyer_minim$3},
- _bnD_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t5_,1)},
- _bnE_=caml_call4(Runtime_ocaml_Runtime[62],_t6_,[0],_bnD_,_bnC_)}
- catch(_bpL_)
- {_bpL_ = caml_wrap_exception(_bpL_);
- if(_bpL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_t4_];
- throw _bpL_}
- var
- equivalence_loyer_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_t7_,Runtime_ocaml_Runtime[13],_bnE_);
- try
- {var
- _bnF_=
- function(param)
- {var
- _bpF_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$3),
- _bpG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$4),
- _bpH_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$0),
- _bpI_=
- caml_call2
- (Runtime_ocaml_Runtime[86],
- coefficient_prise_en_charge_d8,
- _bpH_),
- _bpJ_=caml_call2(Runtime_ocaml_Runtime[88],_bpI_,_bpG_),
- _bpK_=caml_call1(Runtime_ocaml_Runtime[44],_bpJ_);
- return caml_call2(Runtime_ocaml_Runtime[89],_bpK_,_bpF_)},
- _bnG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t9_,1)},
- _bnH_=
- [0,
- function(param)
- {function _bpx_(param)
- {var
- _bpz_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$5),
- _bpA_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$6),
- _bpB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$1),
- _bpC_=
- caml_call2
- (Runtime_ocaml_Runtime[86],
- coefficient_prise_en_charge_d8,
- _bpB_),
- _bpD_=caml_call2(Runtime_ocaml_Runtime[88],_bpC_,_bpA_),
- _bpE_=caml_call1(Runtime_ocaml_Runtime[44],_bpD_);
- return caml_call2(Runtime_ocaml_Runtime[89],_bpE_,_bpz_)}
- function _bpy_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_t__,condition_2_du_832_25$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_t$_,[0],_bpy_,_bpx_)}],
- _bnI_=caml_call4(Runtime_ocaml_Runtime[62],_ua_,_bnH_,_bnG_,_bnF_)}
- catch(_bpw_)
- {_bpw_ = caml_wrap_exception(_bpw_);
- if(_bpw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_t8_];
- throw _bpw_}
- var
- coefficient_prise_en_charge_d8$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ub_,Runtime_ocaml_Runtime[15],_bnI_);
- function _bnJ_(param)
- {try
- {var
- _bo4_=
- function(param$0)
- {var
- _bo8_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$125),
- _bo9_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ud_,
- Runtime_ocaml_Runtime[13],
- param),
- _bo__=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _ue_,
- traitement_aide_finale_minorat),
- _bo9_),
- _bo$_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uf_,
- Runtime_ocaml_Runtime[13],
- _bo__),
- _bpa_=caml_call2(Runtime_ocaml_Runtime[27],_ug_,_bo$_),
- _bpb_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uh_,
- Runtime_ocaml_Runtime[13],
- _bpa_),
- _bpc_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _ui_,
- abattement_depense_nette_minim),
- _bpb_),
- _bpd_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uj_,
- Runtime_ocaml_Runtime[13],
- _bpc_),
- _bpe_=caml_call2(Runtime_ocaml_Runtime[27],_uk_,_bpd_),
- _bpf_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ul_,
- Runtime_ocaml_Runtime[13],
- param),
- _bpg_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _um_,
- traitement_aide_finale_minorat),
- _bpf_),
- _bph_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _un_,
- Runtime_ocaml_Runtime[13],
- _bpg_),
- _bpi_=caml_call2(Runtime_ocaml_Runtime[27],_uo_,_bph_),
- _bpj_=caml_call2(Runtime_ocaml_Runtime[68],_bpi_,_bpe_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_bpj_,_bo8_))
- {var
- _bpk_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _up_,
- Runtime_ocaml_Runtime[13],
- param),
- _bpl_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uq_,
- traitement_aide_finale_minorat),
- _bpk_),
- _bpm_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ur_,
- Runtime_ocaml_Runtime[13],
- _bpl_),
- _bpn_=caml_call2(Runtime_ocaml_Runtime[27],_us_,_bpm_),
- _bpo_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ut_,
- Runtime_ocaml_Runtime[13],
- _bpn_),
- _bpp_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uu_,
- abattement_depense_nette_minim),
- _bpo_),
- _bpq_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uv_,
- Runtime_ocaml_Runtime[13],
- _bpp_),
- _bpr_=caml_call2(Runtime_ocaml_Runtime[27],_uw_,_bpq_),
- _bps_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ux_,
- Runtime_ocaml_Runtime[13],
- param),
- _bpt_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uy_,
- traitement_aide_finale_minorat),
- _bps_),
- _bpu_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uz_,
- Runtime_ocaml_Runtime[13],
- _bpt_),
- _bpv_=caml_call2(Runtime_ocaml_Runtime[27],_uA_,_bpu_);
- return caml_call2(Runtime_ocaml_Runtime[68],_bpv_,_bpr_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$126)},
- _bo5_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_uB_,1)},
- _bo6_=caml_call4(Runtime_ocaml_Runtime[62],_uC_,[0],_bo5_,_bo4_);
- return _bo6_}
- catch(_bo7_)
- {_bo7_ = caml_wrap_exception(_bo7_);
- if(_bo7_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_uc_];
- throw _bo7_}}
- var
- traitement_aide_finale_abattem=
- caml_call3
- (Runtime_ocaml_Runtime[28],_uD_,Runtime_ocaml_Runtime[10],_bnJ_);
- try
- {var
- _bnK_=
- function(param)
- {var _bo3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$0);
- return caml_call2
- (Runtime_ocaml_Runtime[91],
- coefficient_prise_en_charge_d8$0,
- _bo3_)
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$1)
- :coefficient_prise_en_charge_d8$0},
- _bnL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uF_,1)},
- _bnM_=
- [0,
- function(param)
- {function _bo0_(param)
- {var _bo2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$1);
- return caml_call2
- (Runtime_ocaml_Runtime[91],
- coefficient_prise_en_charge_d8$0,
- _bo2_)
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$2)
- :coefficient_prise_en_charge_d8$0}
- function _bo1_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_uG_,condition_2_du_832_25$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_uH_,[0],_bo1_,_bo0_)}],
- _bnN_=caml_call4(Runtime_ocaml_Runtime[62],_uI_,_bnM_,_bnL_,_bnK_)}
- catch(_boZ_)
- {_boZ_ = caml_wrap_exception(_boZ_);
- if(_boZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_uE_];
- throw _boZ_}
- var
- coefficient_prise_en_charge_d8$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_uJ_,Runtime_ocaml_Runtime[15],_bnN_);
- function _bnO_(param)
- {try
- {var
- _bn9_=
- function(param$0)
- {var
- _bob_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$127),
- _boc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uL_,
- Runtime_ocaml_Runtime[13],
- param),
- _bod_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uM_,
- traitement_aide_finale_abattem),
- _boc_),
- _boe_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uN_,
- Runtime_ocaml_Runtime[13],
- _bod_),
- _bof_=caml_call2(Runtime_ocaml_Runtime[27],_uO_,_boe_),
- _bog_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uP_,
- Runtime_ocaml_Runtime[13],
- _bof_),
- _boh_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uQ_,
- contributions_sociales_dot_mon),
- _bog_),
- _boi_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uR_,
- Runtime_ocaml_Runtime[13],
- _boh_),
- _boj_=caml_call2(Runtime_ocaml_Runtime[27],_uS_,_boi_),
- _bok_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$1),
- _bol_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uT_,
- Runtime_ocaml_Runtime[13],
- param),
- _bom_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uU_,
- traitement_aide_finale_abattem),
- _bol_),
- _bon_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uV_,
- Runtime_ocaml_Runtime[13],
- _bom_),
- _boo_=caml_call2(Runtime_ocaml_Runtime[27],_uW_,_bon_),
- _bop_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uX_,
- Runtime_ocaml_Runtime[13],
- _boo_),
- _boq_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _uY_,
- contributions_sociales_dot_mon),
- _bop_),
- _bor_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _uZ_,
- Runtime_ocaml_Runtime[13],
- _boq_),
- _bos_=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_bor_),
- _bot_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u1_,
- Runtime_ocaml_Runtime[13],
- param),
- _bou_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _u2_,
- traitement_aide_finale_abattem),
- _bot_),
- _bov_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u3_,
- Runtime_ocaml_Runtime[13],
- _bou_),
- _bow_=caml_call2(Runtime_ocaml_Runtime[27],_u4_,_bov_),
- _box_=caml_call2(Runtime_ocaml_Runtime[68],_bow_,_bos_),
- _boy_=caml_call2(Runtime_ocaml_Runtime[68],_box_,_bok_),
- _boz_=caml_call1(Runtime_ocaml_Runtime[38],_boy_),
- _boA_=caml_call2(Runtime_ocaml_Runtime[67],_boz_,_boj_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_boA_,_bob_))
- {var
- _boB_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u5_,
- Runtime_ocaml_Runtime[13],
- param),
- _boC_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _u6_,
- traitement_aide_finale_abattem),
- _boB_),
- _boD_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u7_,
- Runtime_ocaml_Runtime[13],
- _boC_),
- _boE_=caml_call2(Runtime_ocaml_Runtime[27],_u8_,_boD_),
- _boF_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u9_,
- Runtime_ocaml_Runtime[13],
- _boE_),
- _boG_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _u__,
- contributions_sociales_dot_mon),
- _boF_),
- _boH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _u$_,
- Runtime_ocaml_Runtime[13],
- _boG_),
- _boI_=caml_call2(Runtime_ocaml_Runtime[27],_va_,_boH_),
- _boJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$2),
- _boK_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vb_,
- Runtime_ocaml_Runtime[13],
- param),
- _boL_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _vc_,
- traitement_aide_finale_abattem),
- _boK_),
- _boM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vd_,
- Runtime_ocaml_Runtime[13],
- _boL_),
- _boN_=caml_call2(Runtime_ocaml_Runtime[27],_ve_,_boM_),
- _boO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vf_,
- Runtime_ocaml_Runtime[13],
- _boN_),
- _boP_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _vg_,
- contributions_sociales_dot_mon),
- _boO_),
- _boQ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vh_,
- Runtime_ocaml_Runtime[13],
- _boP_),
- _boR_=caml_call2(Runtime_ocaml_Runtime[27],_vi_,_boQ_),
- _boS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vj_,
- Runtime_ocaml_Runtime[13],
- param),
- _boT_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _vk_,
- traitement_aide_finale_abattem),
- _boS_),
- _boU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vl_,
- Runtime_ocaml_Runtime[13],
- _boT_),
- _boV_=caml_call2(Runtime_ocaml_Runtime[27],_vm_,_boU_),
- _boW_=caml_call2(Runtime_ocaml_Runtime[68],_boV_,_boR_),
- _boX_=caml_call2(Runtime_ocaml_Runtime[68],_boW_,_boJ_),
- _boY_=caml_call1(Runtime_ocaml_Runtime[38],_boX_);
- return caml_call2(Runtime_ocaml_Runtime[67],_boY_,_boI_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$128)},
- _bn__=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_vn_,1)},
- _bn$_=caml_call4(Runtime_ocaml_Runtime[62],_vo_,[0],_bn__,_bn9_);
- return _bn$_}
- catch(_boa_)
- {_boa_ = caml_wrap_exception(_boa_);
- if(_boa_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_uK_];
- throw _boa_}}
- var
- traitement_aide_finale_contrib=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vp_,Runtime_ocaml_Runtime[10],_bnO_);
- try
- {var
- _bnP_=
- function(param)
- {var
- _bn5_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$129),
- _bn6_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- equivalence_loyer_eligible,
- equivalence_loyer_minimale),
- _bn7_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- _bn6_,
- coefficient_prise_en_charge_d8$1);
- if(caml_call2(Runtime_ocaml_Runtime[73],_bn7_,_bn5_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$130);
- var
- _bn8_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- equivalence_loyer_eligible,
- equivalence_loyer_minimale);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- _bn8_,
- coefficient_prise_en_charge_d8$1)},
- _bnQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vr_,1)},
- _bnR_=caml_call4(Runtime_ocaml_Runtime[62],_vs_,[0],_bnQ_,_bnP_)}
- catch(_bn4_)
- {_bn4_ = caml_wrap_exception(_bn4_);
- if(_bn4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vq_];
- throw _bn4_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vt_,Runtime_ocaml_Runtime[13],_bnR_);
- function _bnS_(param)
- {try
- {var
- _bnT_=
- function(param$0)
- {var
- _bnX_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vv_,
- Runtime_ocaml_Runtime[13],
- param),
- _bnY_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _vw_,
- traitement_aide_finale_contrib),
- _bnX_),
- _bnZ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vx_,
- Runtime_ocaml_Runtime[13],
- _bnY_),
- _bn0_=caml_call2(Runtime_ocaml_Runtime[27],_vy_,_bnZ_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _bn0_,
- montant_minimal_aide_d823_24))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$131);
- var
- _bn1_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vz_,
- Runtime_ocaml_Runtime[13],
- param),
- _bn2_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _vA_,
- traitement_aide_finale_contrib),
- _bn1_),
- _bn3_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _vB_,
- Runtime_ocaml_Runtime[13],
- _bn2_);
- return caml_call2(Runtime_ocaml_Runtime[27],_vC_,_bn3_)},
- _bnU_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_vD_,1)},
- _bnV_=caml_call4(Runtime_ocaml_Runtime[62],_vE_,[0],_bnU_,_bnT_);
- return _bnV_}
- catch(_bnW_)
- {_bnW_ = caml_wrap_exception(_bnW_);
- if(_bnW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vu_];
- throw _bnW_}}
- var
- traitement_aide_finale_montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vF_,Runtime_ocaml_Runtime[10],_bnS_);
- return [0,
- coefficient_multiplicateur_d83,
- coefficient_r_d832_25,
- n_nombre_parts_d832_25$0,
- equivalence_loyer_eligible,
- plafond_equivalence_loyer_elig,
- equivalence_loyer_minimale,
- coefficient_prise_en_charge_d8$1,
- aide_finale_formule,
- traitement_aide_finale_montant]}
- function calcul_aide_personnalisee_loge$1(calcul_aide_personnalisee_loge)
- {var
- mensualite_principale=calcul_aide_personnalisee_loge[1],
- ressources_menage_arrondies=calcul_aide_personnalisee_loge[2],
- nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3],
- situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4],
- type_travaux_logement=calcul_aide_personnalisee_loge[5],
- date_signature_pret=calcul_aide_personnalisee_loge[6],
- local_habite_premiere_fois_ben=calcul_aide_personnalisee_loge[7],
- date_entree_logement=calcul_aide_personnalisee_loge[8],
- copropriete=calcul_aide_personnalisee_loge[9],
- situation_r822_11_13_17=calcul_aide_personnalisee_loge[10],
- zone=calcul_aide_personnalisee_loge[11],
- type_pret=calcul_aide_personnalisee_loge[12],
- anciennete_logement=calcul_aide_personnalisee_loge[13],
- date_courante=calcul_aide_personnalisee_loge[14];
- try
- {var
- _a0L_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$1)},
- _a0M_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vH_,1)},
- _a0N_=caml_call4(Runtime_ocaml_Runtime[62],_vI_,[0],_a0M_,_a0L_)}
- catch(_bmD_)
- {_bmD_ = caml_wrap_exception(_bmD_);
- if(_bmD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vG_];
- throw _bmD_}
- var
- montant_forfaitaire_d832_10=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vJ_,Runtime_ocaml_Runtime[13],_a0N_);
- try
- {var
- _a0O_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$2)},
- _a0P_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vL_,1)},
- _a0Q_=caml_call4(Runtime_ocaml_Runtime[62],_vM_,[0],_a0P_,_a0O_)}
- catch(_bmC_)
- {_bmC_ = caml_wrap_exception(_bmC_);
- if(_bmC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vK_];
- throw _bmC_}
- var
- montant_minimal_aide_d832_10=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vN_,Runtime_ocaml_Runtime[13],_a0Q_);
- try
- {var
- _a0R_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_2211133)},
- _a0S_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vP_,1)},
- _a0T_=caml_call4(Runtime_ocaml_Runtime[62],_vQ_,[0],_a0S_,_a0R_)}
- catch(_bmB_)
- {_bmB_ = caml_wrap_exception(_bmB_);
- if(_bmB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vO_];
- throw _bmB_}
- var
- coefficient_multiplicateur_d83=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vR_,Runtime_ocaml_Runtime[13],_a0T_);
- try
- {var
- _a0U_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25)},
- _a0V_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vT_,1)},
- _a0W_=caml_call4(Runtime_ocaml_Runtime[62],_vU_,[0],_a0V_,_a0U_)}
- catch(_bmA_)
- {_bmA_ = caml_wrap_exception(_bmA_);
- if(_bmA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vS_];
- throw _bmA_}
- var
- coefficient_multiplicateur_d83$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vV_,Runtime_ocaml_Runtime[15],_a0W_);
- try
- {var
- _a0X_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_560085)},
- _a0Y_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vX_,1)},
- _a0Z_=caml_call4(Runtime_ocaml_Runtime[62],_vY_,[0],_a0Y_,_a0X_)}
- catch(_bmz_)
- {_bmz_ = caml_wrap_exception(_bmz_);
- if(_bmz_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_vW_];
- throw _bmz_}
- var
- montant_limite_tranches_d832_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_vZ_,Runtime_ocaml_Runtime[13],_a0Z_);
- try
- {var
- _a00_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_208$0)},
- _a01_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v1_,1)},
- _a02_=caml_call4(Runtime_ocaml_Runtime[62],_v2_,[0],_a01_,_a00_)}
- catch(_bmy_)
- {_bmy_ = caml_wrap_exception(_bmy_);
- if(_bmy_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_v0_];
- throw _bmy_}
- var
- taux_tranche_inferieure_d832_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_v3_,Runtime_ocaml_Runtime[15],_a02_);
- try
- {var
- _a03_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_416)},
- _a04_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v5_,1)},
- _a05_=caml_call4(Runtime_ocaml_Runtime[62],_v6_,[0],_a04_,_a03_)}
- catch(_bmx_)
- {_bmx_ = caml_wrap_exception(_bmx_);
- if(_bmx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_v4_];
- throw _bmx_}
- var
- taux_tranche_superieure_d832_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_v7_,Runtime_ocaml_Runtime[15],_a05_);
- try
- {var
- _a06_=
- function(param)
- {var
- _bmv_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957),
- _bmw_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$62);
- return caml_call2(Runtime_ocaml_Runtime[89],_bmw_,_bmv_)},
- _a07_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v9_,1)},
- _a08_=caml_call4(Runtime_ocaml_Runtime[62],_v__,[0],_a07_,_a06_)}
- catch(_bmu_)
- {_bmu_ = caml_wrap_exception(_bmu_);
- if(_bmu_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_v8_];
- throw _bmu_}
- var
- taux_francs_vers_euros=
- caml_call3
- (Runtime_ocaml_Runtime[28],_v$_,Runtime_ocaml_Runtime[15],_a08_);
- try
- {var
- _a09_=function(param){return nombre_personnes_a_charge},
- _a0__=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wb_,1)},
- _a0$_=caml_call4(Runtime_ocaml_Runtime[62],_wc_,[0],_a0__,_a09_),
- calcul_nombre_parts_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wd_,Runtime_ocaml_Runtime[14],_a0$_)}
- catch(_bmt_)
- {_bmt_ = caml_wrap_exception(_bmt_);
- if(_bmt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wa_];
- throw _bmt_}
- try
- {var
- _a1a_=function(param){return situation_familiale_calcul_apl},
- _a1b_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wf_,1)},
- _a1c_=caml_call4(Runtime_ocaml_Runtime[62],_wg_,[0],_a1b_,_a1a_),
- calcul_nombre_parts_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _wh_,
- embed_situation_familiale_calc,
- _a1c_)}
- catch(_bms_)
- {_bms_ = caml_wrap_exception(_bms_);
- if(_bms_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_we_];
- throw _bms_}
- var
- _a1d_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_wi_,calcul_nombre_parts_accession_),
- [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_wj_,_a1d_),
- calcul_nombre_parts_dot_n_nomb=result[1];
- try
- {var
- _a1e_=
- function(param)
- {if(0 === anciennete_logement[0])
- {var _bmq_=caml_call3(Runtime_ocaml_Runtime[56],1998,10,1);
- return caml_call2
- (Runtime_ocaml_Runtime[99],date_signature_pret,_bmq_)
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234)}
- var ameliore_par_occupant=anciennete_logement[1];
- if(0 === ameliore_par_occupant[0])
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0172);
- var _bmr_=caml_call3(Runtime_ocaml_Runtime[56],1998,10,1);
- return caml_call2
- (Runtime_ocaml_Runtime[99],date_signature_pret,_bmr_)
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226$0)
- :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$0)},
- _a1f_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wl_,1)},
- _a1g_=caml_call4(Runtime_ocaml_Runtime[62],_wm_,[0],_a1f_,_a1e_)}
- catch(_bmp_)
- {_bmp_ = caml_wrap_exception(_bmp_);
- if(_bmp_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wk_];
- throw _bmp_}
- var
- coefficient_multiplicateur_d83$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wn_,Runtime_ocaml_Runtime[15],_a1g_);
- try
- {var
- _a1h_=function(param){return date_courante},
- _a1i_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wp_,1)},
- _a1j_=caml_call4(Runtime_ocaml_Runtime[62],_wq_,[0],_a1i_,_a1h_),
- contributions_sociales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wr_,Runtime_ocaml_Runtime[16],_a1j_)}
- catch(_bmo_)
- {_bmo_ = caml_wrap_exception(_bmo_);
- if(_bmo_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wo_];
- throw _bmo_}
- var
- _a1k_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_ws_,contributions_sociales_aides_p),
- [0,contributions_sociales_dot_dat]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_wt_,_a1k_),
- contributions_sociales_dot_mon=result$0[1];
- try
- {var
- _a1l_=
- function(param)
- {function _bl4_(param){throw Runtime_ocaml_Runtime[2]}
- function _bl5_(param){return 0}
- function _bl6_(param)
- {function _bme_(param)
- {var
- _bmk_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bml_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$1),
- _bmm_=caml_call2(Runtime_ocaml_Runtime[65],_bml_,_bmk_),
- _bmn_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399$1);
- return caml_call2(Runtime_ocaml_Runtime[67],_bmn_,_bmm_)}
- function _bmf_(param)
- {var
- _bmg_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bmh_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_bmg_);
- if(_bmh_)
- var
- _bmi_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _bmj_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bmi_);
- else
- var _bmj_=_bmh_;
- return caml_call2(Runtime_ocaml_Runtime[29],_wv_,_bmj_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ww_,[0],_bmf_,_bme_)}
- var
- _bl7_=
- [0,
- function(param)
- {function _bl8_(param)
- {var
- _bma_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bmb_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$1),
- _bmc_=caml_call2(Runtime_ocaml_Runtime[65],_bmb_,_bma_),
- _bmd_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$1);
- return caml_call2(Runtime_ocaml_Runtime[67],_bmd_,_bmc_)}
- function _bl9_(param)
- {var
- _bl__=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _bl$_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_bl__);
- return caml_call2(Runtime_ocaml_Runtime[29],_wx_,_bl$_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wy_,[0],_bl9_,_bl8_)},
- _bl6_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wz_,_bl7_,_bl5_,_bl4_)},
- _a1m_=function(param){return 1},
- _a1n_=
- [0,
- function(param)
- {function _blI_(param){throw Runtime_ocaml_Runtime[2]}
- function _blJ_(param){return 0}
- function _blK_(param)
- {function _blU_(param)
- {var
- _bl0_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _bl1_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$2),
- _bl2_=caml_call2(Runtime_ocaml_Runtime[65],_bl1_,_bl0_),
- _bl3_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$2);
- return caml_call2(Runtime_ocaml_Runtime[67],_bl3_,_bl2_)}
- function _blV_(param)
- {var
- _blW_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _blX_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_blW_);
- if(_blX_)
- var
- _blY_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _blZ_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_blY_);
- else
- var _blZ_=_blX_;
- var copropriete$0=_blZ_?copropriete:_blZ_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_wA_,copropriete$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wB_,[0],_blV_,_blU_)}
- var
- _blL_=
- [0,
- function(param)
- {function _blM_(param)
- {var
- _blQ_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _blR_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$2),
- _blS_=caml_call2(Runtime_ocaml_Runtime[65],_blR_,_blQ_),
- _blT_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$2);
- return caml_call2(Runtime_ocaml_Runtime[67],_blT_,_blS_)}
- function _blN_(param)
- {var
- _blO_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _blP_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_blO_),
- copropriete$0=_blP_?copropriete:_blP_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_wC_,copropriete$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wD_,[0],_blN_,_blM_)},
- _blK_];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wE_,_blL_,_blJ_,_blI_)}],
- _a1o_=caml_call4(Runtime_ocaml_Runtime[62],_wF_,_a1n_,_a1m_,_a1l_)}
- catch(_blH_)
- {_blH_ = caml_wrap_exception(_blH_);
- if(_blH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wu_];
- throw _blH_}
- var
- montant_forfaitaire_charges_d8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wG_,Runtime_ocaml_Runtime[13],_a1o_);
- function _a1p_(param)
- {try
- {var
- _blB_=
- function(param$0)
- {var
- _blF_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$132),
- _blG_=
- caml_call2
- (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d832_10);
- return caml_call2(Runtime_ocaml_Runtime[72],_blG_,_blF_)
- ?caml_call2
- (Runtime_ocaml_Runtime[68],
- param,
- montant_forfaitaire_d832_10)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$133)},
- _blC_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_wI_,1)},
- _blD_=caml_call4(Runtime_ocaml_Runtime[62],_wJ_,[0],_blC_,_blB_);
- return _blD_}
- catch(_blE_)
- {_blE_ = caml_wrap_exception(_blE_);
- if(_blE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wH_];
- throw _blE_}}
- var
- traitement_aide_finale_minorat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wK_,Runtime_ocaml_Runtime[10],_a1p_);
- try
- {var
- _a1q_=
- function(param)
- {var
- _blA_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- mensualite_principale,
- coefficient_multiplicateur_d83$0);
- return caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage_arrondies,
- _blA_)
- ?caml_call2
- (Runtime_ocaml_Runtime[65],
- mensualite_principale,
- coefficient_multiplicateur_d83$0)
- :ressources_menage_arrondies},
- _a1r_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wM_,1)},
- _a1s_=
- [0,
- function(param)
- {function _bly_(param){return ressources_menage_arrondies}
- function _blz_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_wN_,situation_r822_11_13_17)}
- return caml_call4(Runtime_ocaml_Runtime[62],_wO_,[0],_blz_,_bly_)}],
- _a1t_=caml_call4(Runtime_ocaml_Runtime[62],_wP_,_a1s_,_a1r_,_a1q_)}
- catch(_blx_)
- {_blx_ = caml_wrap_exception(_blx_);
- if(_blx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wL_];
- throw _blx_}
- var
- ressources_menage_avec_d832_18=
- caml_call3
- (Runtime_ocaml_Runtime[28],_wQ_,Runtime_ocaml_Runtime[13],_a1t_);
- function _a1u_(param)
- {try
- {var
- _a5p_=function(param){throw Runtime_ocaml_Runtime[2]},
- _a5q_=function(param){return 0},
- _a5r_=
- function(param$0)
- {function _bk$_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$134)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29986)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36187);
- var
- _blf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$63),
- _blg_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_blf_),
- _blh_=caml_call1(Runtime_ocaml_Runtime[41],_blg_),
- _bli_=caml_call1(Runtime_ocaml_Runtime[31],cst_6201),
- _blj_=caml_call2(Runtime_ocaml_Runtime[65],_bli_,_blh_),
- _blk_=caml_call1(Runtime_ocaml_Runtime[31],cst_42386);
- return caml_call2(Runtime_ocaml_Runtime[67],_blk_,_blj_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$135)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26730)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32193);
- var
- _bll_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$64),
- _blm_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bll_),
- _bln_=caml_call1(Runtime_ocaml_Runtime[41],_blm_),
- _blo_=caml_call1(Runtime_ocaml_Runtime[31],cst_5463),
- _blp_=caml_call2(Runtime_ocaml_Runtime[65],_blo_,_bln_),
- _blq_=caml_call1(Runtime_ocaml_Runtime[31],cst_37656);
- return caml_call2(Runtime_ocaml_Runtime[67],_blq_,_blp_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$136)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24964)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29948);
- var
- _blr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$65),
- _bls_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_blr_),
- _blt_=caml_call1(Runtime_ocaml_Runtime[41],_bls_),
- _blu_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986),
- _blv_=caml_call2(Runtime_ocaml_Runtime[65],_blu_,_blt_),
- _blw_=caml_call1(Runtime_ocaml_Runtime[31],cst_34934);
- return caml_call2(Runtime_ocaml_Runtime[67],_blw_,_blv_)}}
- function _bla_(param$0)
- {var
- _blb_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30),
- _blc_=caml_call2(Runtime_ocaml_Runtime[98],param,_blb_);
- if(_blc_)
- {var _bld_=0 === anciennete_logement[0]?0:1;
- if(_bld_)
- switch(type_pret[0])
- {case 0:var _ble_=0;break;
- case 1:var _ble_=1;break;
- case 2:var _ble_=0;break;
- case 3:var _ble_=0;break;
- default:var _ble_=0}
- else
- var _ble_=_bld_}
- else
- var _ble_=_blc_;
- return caml_call2(Runtime_ocaml_Runtime[29],_wS_,_ble_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wT_,[0],_bla_,_bk$_)},
- _a5s_=
- function(param$0)
- {function _bkN_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$137)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_37252)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44941);
- var
- _bkT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$66),
- _bkU_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkT_),
- _bkV_=caml_call1(Runtime_ocaml_Runtime[41],_bkU_),
- _bkW_=caml_call1(Runtime_ocaml_Runtime[31],cst_7687),
- _bkX_=caml_call2(Runtime_ocaml_Runtime[65],_bkW_,_bkV_),
- _bkY_=caml_call1(Runtime_ocaml_Runtime[31],cst_52629);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkY_,_bkX_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$138)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_33244)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_40013);
- var
- _bkZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$67),
- _bk0_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkZ_),
- _bk1_=caml_call1(Runtime_ocaml_Runtime[41],_bk0_),
- _bk2_=caml_call1(Runtime_ocaml_Runtime[31],cst_6768),
- _bk3_=caml_call2(Runtime_ocaml_Runtime[65],_bk2_,_bk1_),
- _bk4_=caml_call1(Runtime_ocaml_Runtime[31],cst_46783);
- return caml_call2(Runtime_ocaml_Runtime[67],_bk4_,_bk3_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$139)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31036)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37215);
- var
- _bk5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$68),
- _bk6_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bk5_),
- _bk7_=caml_call1(Runtime_ocaml_Runtime[41],_bk6_),
- _bk8_=caml_call1(Runtime_ocaml_Runtime[31],cst_6179),
- _bk9_=caml_call2(Runtime_ocaml_Runtime[65],_bk8_,_bk7_),
- _bk__=caml_call1(Runtime_ocaml_Runtime[31],cst_43394);
- return caml_call2(Runtime_ocaml_Runtime[67],_bk__,_bk9_)}}
- function _bkO_(param$0)
- {var
- _bkP_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30),
- _bkQ_=caml_call2(Runtime_ocaml_Runtime[98],param,_bkP_);
- if(_bkQ_)
- {var _bkR_=0 === anciennete_logement[0]?1:0;
- if(_bkR_)
- switch(type_pret[0])
- {case 0:var _bkS_=0;break;
- case 1:var _bkS_=1;break;
- case 2:var _bkS_=0;break;
- case 3:var _bkS_=0;break;
- default:var _bkS_=0}
- else
- var _bkS_=_bkR_}
- else
- var _bkS_=_bkQ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_wU_,_bkS_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wV_,[0],_bkO_,_bkN_)},
- _a5t_=
- function(param$0)
- {function _bkn_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$140)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29897)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36079);
- var
- _bkv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$69),
- _bkw_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkv_),
- _bkx_=caml_call1(Runtime_ocaml_Runtime[41],_bkw_),
- _bky_=caml_call1(Runtime_ocaml_Runtime[31],cst_6182),
- _bkz_=caml_call2(Runtime_ocaml_Runtime[65],_bky_,_bkx_),
- _bkA_=caml_call1(Runtime_ocaml_Runtime[31],cst_42260);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkA_,_bkz_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$141)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26650)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32097);
- var
- _bkB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$70),
- _bkC_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkB_),
- _bkD_=caml_call1(Runtime_ocaml_Runtime[41],_bkC_),
- _bkE_=caml_call1(Runtime_ocaml_Runtime[31],cst_5447),
- _bkF_=caml_call2(Runtime_ocaml_Runtime[65],_bkE_,_bkD_),
- _bkG_=caml_call1(Runtime_ocaml_Runtime[31],cst_37543);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkG_,_bkF_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$142)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24889)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29858);
- var
- _bkH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$71),
- _bkI_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkH_),
- _bkJ_=caml_call1(Runtime_ocaml_Runtime[41],_bkI_),
- _bkK_=caml_call1(Runtime_ocaml_Runtime[31],cst_4971),
- _bkL_=caml_call2(Runtime_ocaml_Runtime[65],_bkK_,_bkJ_),
- _bkM_=caml_call1(Runtime_ocaml_Runtime[31],cst_34829);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkM_,_bkL_)}}
- function _bko_(param$0)
- {var
- _bkp_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30),
- _bkq_=caml_call2(Runtime_ocaml_Runtime[98],param,_bkp_);
- if(_bkq_)
- {var
- _bkr_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30),
- _bks_=caml_call2(Runtime_ocaml_Runtime[101],param,_bkr_);
- if(_bks_)
- {var _bkt_=0 === anciennete_logement[0]?0:1;
- if(_bkt_)
- switch(type_pret[0])
- {case 0:var _bku_=0;break;
- case 1:var _bku_=1;break;
- case 2:var _bku_=0;break;
- case 3:var _bku_=0;break;
- default:var _bku_=0}
- else
- var _bku_=_bkt_}
- else
- var _bku_=_bks_}
- else
- var _bku_=_bkq_;
- return caml_call2(Runtime_ocaml_Runtime[29],_wW_,_bku_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wX_,[0],_bko_,_bkn_)},
- _a5u_=
- function(param$0)
- {function _bjZ_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$143)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_37140)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44807);
- var
- _bj7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$72),
- _bj8_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bj7_),
- _bj9_=caml_call1(Runtime_ocaml_Runtime[41],_bj8_),
- _bj__=caml_call1(Runtime_ocaml_Runtime[31],cst_7664),
- _bj$_=caml_call2(Runtime_ocaml_Runtime[65],_bj__,_bj9_),
- _bka_=caml_call1(Runtime_ocaml_Runtime[31],cst_52472);
- return caml_call2(Runtime_ocaml_Runtime[67],_bka_,_bj$_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$144)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_33145)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_39893);
- var
- _bkb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$73),
- _bkc_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkb_),
- _bkd_=caml_call1(Runtime_ocaml_Runtime[41],_bkc_),
- _bke_=caml_call1(Runtime_ocaml_Runtime[31],cst_6748),
- _bkf_=caml_call2(Runtime_ocaml_Runtime[65],_bke_,_bkd_),
- _bkg_=caml_call1(Runtime_ocaml_Runtime[31],cst_46643);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkg_,_bkf_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$145)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30943)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37103);
- var
- _bkh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$74),
- _bki_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bkh_),
- _bkj_=caml_call1(Runtime_ocaml_Runtime[41],_bki_),
- _bkk_=caml_call1(Runtime_ocaml_Runtime[31],cst_6161),
- _bkl_=caml_call2(Runtime_ocaml_Runtime[65],_bkk_,_bkj_),
- _bkm_=caml_call1(Runtime_ocaml_Runtime[31],cst_43264);
- return caml_call2(Runtime_ocaml_Runtime[67],_bkm_,_bkl_)}}
- function _bj0_(param$0)
- {var
- _bj1_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30),
- _bj2_=caml_call2(Runtime_ocaml_Runtime[98],param,_bj1_);
- if(_bj2_)
- {var
- _bj3_=caml_call3(Runtime_ocaml_Runtime[56],2019,9,30),
- _bj4_=caml_call2(Runtime_ocaml_Runtime[101],param,_bj3_);
- if(_bj4_)
- {var _bj5_=0 === anciennete_logement[0]?1:0;
- if(_bj5_)
- switch(type_pret[0])
- {case 0:var _bj6_=0;break;
- case 1:var _bj6_=1;break;
- case 2:var _bj6_=0;break;
- case 3:var _bj6_=0;break;
- default:var _bj6_=0}
- else
- var _bj6_=_bj5_}
- else
- var _bj6_=_bj4_}
- else
- var _bj6_=_bj2_;
- return caml_call2(Runtime_ocaml_Runtime[29],_wY_,_bj6_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_wZ_,[0],_bj0_,_bjZ_)},
- _a5v_=
- function(param$0)
- {function _bjz_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$146)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29674)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35810);
- var
- _bjH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$75),
- _bjI_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjH_),
- _bjJ_=caml_call1(Runtime_ocaml_Runtime[41],_bjI_),
- _bjK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6136),
- _bjL_=caml_call2(Runtime_ocaml_Runtime[65],_bjK_,_bjJ_),
- _bjM_=caml_call1(Runtime_ocaml_Runtime[31],cst_41945);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjM_,_bjL_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$147)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26452)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31858);
- var
- _bjN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$76),
- _bjO_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjN_),
- _bjP_=caml_call1(Runtime_ocaml_Runtime[41],_bjO_),
- _bjQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5406),
- _bjR_=caml_call2(Runtime_ocaml_Runtime[65],_bjQ_,_bjP_),
- _bjS_=caml_call1(Runtime_ocaml_Runtime[31],cst_37264);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjS_,_bjR_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$148)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24704)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29636);
- var
- _bjT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$77),
- _bjU_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjT_),
- _bjV_=caml_call1(Runtime_ocaml_Runtime[41],_bjU_),
- _bjW_=caml_call1(Runtime_ocaml_Runtime[31],cst_4934),
- _bjX_=caml_call2(Runtime_ocaml_Runtime[65],_bjW_,_bjV_),
- _bjY_=caml_call1(Runtime_ocaml_Runtime[31],cst_34570);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjY_,_bjX_)}}
- function _bjA_(param$0)
- {var
- _bjB_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30),
- _bjC_=caml_call2(Runtime_ocaml_Runtime[98],param,_bjB_);
- if(_bjC_)
- {var
- _bjD_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30),
- _bjE_=caml_call2(Runtime_ocaml_Runtime[101],param,_bjD_);
- if(_bjE_)
- {var _bjF_=0 === anciennete_logement[0]?0:1;
- if(_bjF_)
- switch(type_pret[0])
- {case 0:var _bjG_=0;break;
- case 1:var _bjG_=1;break;
- case 2:var _bjG_=0;break;
- case 3:var _bjG_=0;break;
- default:var _bjG_=0}
- else
- var _bjG_=_bjF_}
- else
- var _bjG_=_bjE_}
- else
- var _bjG_=_bjC_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w0_,_bjG_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w1_,[0],_bjA_,_bjz_)},
- _a5w_=
- function(param$0)
- {function _bi$_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$149)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_36864)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44473);
- var
- _bjh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$78),
- _bji_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjh_),
- _bjj_=caml_call1(Runtime_ocaml_Runtime[41],_bji_),
- _bjk_=caml_call1(Runtime_ocaml_Runtime[31],cst_7607),
- _bjl_=caml_call2(Runtime_ocaml_Runtime[65],_bjk_,_bjj_),
- _bjm_=caml_call1(Runtime_ocaml_Runtime[31],cst_52081);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjm_,_bjl_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$150)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_32898)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_39596);
- var
- _bjn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$79),
- _bjo_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjn_),
- _bjp_=caml_call1(Runtime_ocaml_Runtime[41],_bjo_),
- _bjq_=caml_call1(Runtime_ocaml_Runtime[31],cst_6698),
- _bjr_=caml_call2(Runtime_ocaml_Runtime[65],_bjq_,_bjp_),
- _bjs_=caml_call1(Runtime_ocaml_Runtime[31],cst_46296);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjs_,_bjr_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$151)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30713)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36827);
- var
- _bjt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$80),
- _bju_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bjt_),
- _bjv_=caml_call1(Runtime_ocaml_Runtime[41],_bju_),
- _bjw_=caml_call1(Runtime_ocaml_Runtime[31],cst_6115),
- _bjx_=caml_call2(Runtime_ocaml_Runtime[65],_bjw_,_bjv_),
- _bjy_=caml_call1(Runtime_ocaml_Runtime[31],cst_42942);
- return caml_call2(Runtime_ocaml_Runtime[67],_bjy_,_bjx_)}}
- function _bja_(param$0)
- {var
- _bjb_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30),
- _bjc_=caml_call2(Runtime_ocaml_Runtime[98],param,_bjb_);
- if(_bjc_)
- {var
- _bjd_=caml_call3(Runtime_ocaml_Runtime[56],2017,9,30),
- _bje_=caml_call2(Runtime_ocaml_Runtime[101],param,_bjd_);
- if(_bje_)
- {var _bjf_=0 === anciennete_logement[0]?1:0;
- if(_bjf_)
- switch(type_pret[0])
- {case 0:var _bjg_=0;break;
- case 1:var _bjg_=1;break;
- case 2:var _bjg_=0;break;
- case 3:var _bjg_=0;break;
- default:var _bjg_=0}
- else
- var _bjg_=_bjf_}
- else
- var _bjg_=_bje_}
- else
- var _bjg_=_bjc_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w2_,_bjg_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w3_,[0],_bja_,_bi$_)},
- _a5x_=
- function(param$0)
- {function _biL_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$152)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29650)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35781);
- var
- _biT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$81),
- _biU_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biT_),
- _biV_=caml_call1(Runtime_ocaml_Runtime[41],_biU_),
- _biW_=caml_call1(Runtime_ocaml_Runtime[31],cst_6131),
- _biX_=caml_call2(Runtime_ocaml_Runtime[65],_biW_,_biV_),
- _biY_=caml_call1(Runtime_ocaml_Runtime[31],cst_41911);
- return caml_call2(Runtime_ocaml_Runtime[67],_biY_,_biX_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$153)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26431)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31833);
- var
- _biZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$82),
- _bi0_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biZ_),
- _bi1_=caml_call1(Runtime_ocaml_Runtime[41],_bi0_),
- _bi2_=caml_call1(Runtime_ocaml_Runtime[31],cst_5402),
- _bi3_=caml_call2(Runtime_ocaml_Runtime[65],_bi2_,_bi1_),
- _bi4_=caml_call1(Runtime_ocaml_Runtime[31],cst_37234);
- return caml_call2(Runtime_ocaml_Runtime[67],_bi4_,_bi3_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$154)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24684)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29612);
- var
- _bi5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$83),
- _bi6_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bi5_),
- _bi7_=caml_call1(Runtime_ocaml_Runtime[41],_bi6_),
- _bi8_=caml_call1(Runtime_ocaml_Runtime[31],cst_4930),
- _bi9_=caml_call2(Runtime_ocaml_Runtime[65],_bi8_,_bi7_),
- _bi__=caml_call1(Runtime_ocaml_Runtime[31],cst_34542);
- return caml_call2(Runtime_ocaml_Runtime[67],_bi__,_bi9_)}}
- function _biM_(param$0)
- {var
- _biN_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30),
- _biO_=caml_call2(Runtime_ocaml_Runtime[98],param,_biN_);
- if(_biO_)
- {var
- _biP_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30),
- _biQ_=caml_call2(Runtime_ocaml_Runtime[101],param,_biP_);
- if(_biQ_)
- {var _biR_=0 === anciennete_logement[0]?0:1;
- if(_biR_)
- switch(type_pret[0])
- {case 0:var _biS_=0;break;
- case 1:var _biS_=1;break;
- case 2:var _biS_=0;break;
- case 3:var _biS_=0;break;
- default:var _biS_=0}
- else
- var _biS_=_biR_}
- else
- var _biS_=_biQ_}
- else
- var _biS_=_biO_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w4_,_biS_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w5_,[0],_biM_,_biL_)},
- _a5y_=
- function(param$0)
- {function _bil_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$155)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_36835)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44437);
- var
- _bit_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$84),
- _biu_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bit_),
- _biv_=caml_call1(Runtime_ocaml_Runtime[41],_biu_),
- _biw_=caml_call1(Runtime_ocaml_Runtime[31],cst_7601),
- _bix_=caml_call2(Runtime_ocaml_Runtime[65],_biw_,_biv_),
- _biy_=caml_call1(Runtime_ocaml_Runtime[31],cst_52039);
- return caml_call2(Runtime_ocaml_Runtime[67],_biy_,_bix_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$156)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_32872)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_39564);
- var
- _biz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$85),
- _biA_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biz_),
- _biB_=caml_call1(Runtime_ocaml_Runtime[41],_biA_),
- _biC_=caml_call1(Runtime_ocaml_Runtime[31],cst_6693),
- _biD_=caml_call2(Runtime_ocaml_Runtime[65],_biC_,_biB_),
- _biE_=caml_call1(Runtime_ocaml_Runtime[31],cst_46259);
- return caml_call2(Runtime_ocaml_Runtime[67],_biE_,_biD_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$157)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30688)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36798);
- var
- _biF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$86),
- _biG_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_biF_),
- _biH_=caml_call1(Runtime_ocaml_Runtime[41],_biG_),
- _biI_=caml_call1(Runtime_ocaml_Runtime[31],cst_6110),
- _biJ_=caml_call2(Runtime_ocaml_Runtime[65],_biI_,_biH_),
- _biK_=caml_call1(Runtime_ocaml_Runtime[31],cst_42908);
- return caml_call2(Runtime_ocaml_Runtime[67],_biK_,_biJ_)}}
- function _bim_(param$0)
- {var
- _bin_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30),
- _bio_=caml_call2(Runtime_ocaml_Runtime[98],param,_bin_);
- if(_bio_)
- {var
- _bip_=caml_call3(Runtime_ocaml_Runtime[56],2015,9,30),
- _biq_=caml_call2(Runtime_ocaml_Runtime[101],param,_bip_);
- if(_biq_)
- {var _bir_=0 === anciennete_logement[0]?1:0;
- if(_bir_)
- switch(type_pret[0])
- {case 0:var _bis_=0;break;
- case 1:var _bis_=1;break;
- case 2:var _bis_=0;break;
- case 3:var _bis_=0;break;
- default:var _bis_=0}
- else
- var _bis_=_bir_}
- else
- var _bis_=_biq_}
- else
- var _bis_=_bio_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w6_,_bis_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w7_,[0],_bim_,_bil_)},
- _a5z_=
- function(param$0)
- {function _bhX_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$158)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29482)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35578);
- var
- _bh5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$87),
- _bh6_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bh5_),
- _bh7_=caml_call1(Runtime_ocaml_Runtime[41],_bh6_),
- _bh8_=caml_call1(Runtime_ocaml_Runtime[31],cst_6096),
- _bh9_=caml_call2(Runtime_ocaml_Runtime[65],_bh8_,_bh7_),
- _bh__=caml_call1(Runtime_ocaml_Runtime[31],cst_41673);
- return caml_call2(Runtime_ocaml_Runtime[67],_bh__,_bh9_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$159)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26281)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31653);
- var
- _bh$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$88),
- _bia_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bh$_),
- _bib_=caml_call1(Runtime_ocaml_Runtime[41],_bia_),
- _bic_=caml_call1(Runtime_ocaml_Runtime[31],cst_5371),
- _bid_=caml_call2(Runtime_ocaml_Runtime[65],_bic_,_bib_),
- _bie_=caml_call1(Runtime_ocaml_Runtime[31],cst_37023);
- return caml_call2(Runtime_ocaml_Runtime[67],_bie_,_bid_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$160)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24544)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29444);
- var
- _bif_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$89),
- _big_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bif_),
- _bih_=caml_call1(Runtime_ocaml_Runtime[41],_big_),
- _bii_=caml_call1(Runtime_ocaml_Runtime[31],cst_4902),
- _bij_=caml_call2(Runtime_ocaml_Runtime[65],_bii_,_bih_),
- _bik_=caml_call1(Runtime_ocaml_Runtime[31],cst_34346);
- return caml_call2(Runtime_ocaml_Runtime[67],_bik_,_bij_)}}
- function _bhY_(param$0)
- {var
- _bhZ_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bh0_=caml_call2(Runtime_ocaml_Runtime[98],param,_bhZ_);
- if(_bh0_)
- {var
- _bh1_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30),
- _bh2_=caml_call2(Runtime_ocaml_Runtime[101],param,_bh1_);
- if(_bh2_)
- {var _bh3_=0 === anciennete_logement[0]?0:1;
- if(_bh3_)
- switch(type_pret[0])
- {case 0:var _bh4_=0;break;
- case 1:var _bh4_=1;break;
- case 2:var _bh4_=0;break;
- case 3:var _bh4_=0;break;
- default:var _bh4_=0}
- else
- var _bh4_=_bh3_}
- else
- var _bh4_=_bh2_}
- else
- var _bh4_=_bh0_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w8_,_bh4_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w9_,[0],_bhY_,_bhX_)},
- _a5A_=
- function(param$0)
- {function _bhx_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$161)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_36626)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_44185);
- var
- _bhF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$90),
- _bhG_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhF_),
- _bhH_=caml_call1(Runtime_ocaml_Runtime[41],_bhG_),
- _bhI_=caml_call1(Runtime_ocaml_Runtime[31],cst_7558),
- _bhJ_=caml_call2(Runtime_ocaml_Runtime[65],_bhI_,_bhH_),
- _bhK_=caml_call1(Runtime_ocaml_Runtime[31],cst_51744);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhK_,_bhJ_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$162)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_32686)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_39340);
- var
- _bhL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$91),
- _bhM_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhL_),
- _bhN_=caml_call1(Runtime_ocaml_Runtime[41],_bhM_),
- _bhO_=caml_call1(Runtime_ocaml_Runtime[31],cst_6655),
- _bhP_=caml_call2(Runtime_ocaml_Runtime[65],_bhO_,_bhN_),
- _bhQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_45997);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhQ_,_bhP_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$163)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30514)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36589);
- var
- _bhR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$92),
- _bhS_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhR_),
- _bhT_=caml_call1(Runtime_ocaml_Runtime[41],_bhS_),
- _bhU_=caml_call1(Runtime_ocaml_Runtime[31],cst_6075),
- _bhV_=caml_call2(Runtime_ocaml_Runtime[65],_bhU_,_bhT_),
- _bhW_=caml_call1(Runtime_ocaml_Runtime[31],cst_42665);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhW_,_bhV_)}}
- function _bhy_(param$0)
- {var
- _bhz_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bhA_=caml_call2(Runtime_ocaml_Runtime[98],param,_bhz_);
- if(_bhA_)
- {var
- _bhB_=caml_call3(Runtime_ocaml_Runtime[56],2014,9,30),
- _bhC_=caml_call2(Runtime_ocaml_Runtime[101],param,_bhB_);
- if(_bhC_)
- {var _bhD_=0 === anciennete_logement[0]?1:0;
- if(_bhD_)
- switch(type_pret[0])
- {case 0:var _bhE_=0;break;
- case 1:var _bhE_=1;break;
- case 2:var _bhE_=0;break;
- case 3:var _bhE_=0;break;
- default:var _bhE_=0}
- else
- var _bhE_=_bhD_}
- else
- var _bhE_=_bhC_}
- else
- var _bhE_=_bhA_;
- return caml_call2(Runtime_ocaml_Runtime[29],_w__,_bhE_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_w$_,[0],_bhy_,_bhx_)},
- _a5B_=
- function(param$0)
- {function _bg9_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$164)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28861)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34829$0);
- var
- _bhf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$93),
- _bhg_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhf_),
- _bhh_=caml_call1(Runtime_ocaml_Runtime[41],_bhg_),
- _bhi_=caml_call1(Runtime_ocaml_Runtime[31],cst_5968),
- _bhj_=caml_call2(Runtime_ocaml_Runtime[65],_bhi_,_bhh_),
- _bhk_=caml_call1(Runtime_ocaml_Runtime[31],cst_40796);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhk_,_bhj_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$165)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25728)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30987);
- var
- _bhl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$94),
- _bhm_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhl_),
- _bhn_=caml_call1(Runtime_ocaml_Runtime[41],_bhm_),
- _bho_=caml_call1(Runtime_ocaml_Runtime[31],cst_5258),
- _bhp_=caml_call2(Runtime_ocaml_Runtime[65],_bho_,_bhn_),
- _bhq_=caml_call1(Runtime_ocaml_Runtime[31],cst_36244);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhq_,_bhp_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$166)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24027)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28824);
- var
- _bhr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$95),
- _bhs_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bhr_),
- _bht_=caml_call1(Runtime_ocaml_Runtime[41],_bhs_),
- _bhu_=caml_call1(Runtime_ocaml_Runtime[31],cst_4799),
- _bhv_=caml_call2(Runtime_ocaml_Runtime[65],_bhu_,_bht_),
- _bhw_=caml_call1(Runtime_ocaml_Runtime[31],cst_33623);
- return caml_call2(Runtime_ocaml_Runtime[67],_bhw_,_bhv_)}}
- function _bg__(param$0)
- {var
- _bg$_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bha_=caml_call2(Runtime_ocaml_Runtime[98],param,_bg$_);
- if(_bha_)
- {var
- _bhb_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bhc_=caml_call2(Runtime_ocaml_Runtime[101],param,_bhb_);
- if(_bhc_)
- {var _bhd_=0 === anciennete_logement[0]?0:1;
- if(_bhd_)
- switch(type_pret[0])
- {case 0:var _bhe_=0;break;
- case 1:var _bhe_=1;break;
- case 2:var _bhe_=0;break;
- case 3:var _bhe_=0;break;
- default:var _bhe_=0}
- else
- var _bhe_=_bhd_}
- else
- var _bhe_=_bhc_}
- else
- var _bhe_=_bha_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xa_,_bhe_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xb_,[0],_bg__,_bg9_)},
- _a5C_=
- function(param$0)
- {function _bgJ_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$167)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_35855)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_43255);
- var
- _bgR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$96),
- _bgS_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgR_),
- _bgT_=caml_call1(Runtime_ocaml_Runtime[41],_bgS_),
- _bgU_=caml_call1(Runtime_ocaml_Runtime[31],cst_7399),
- _bgV_=caml_call2(Runtime_ocaml_Runtime[65],_bgU_,_bgT_),
- _bgW_=caml_call1(Runtime_ocaml_Runtime[31],cst_50655);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgW_,_bgV_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$168)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31998)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_38512);
- var
- _bgX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$97),
- _bgY_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgX_),
- _bgZ_=caml_call1(Runtime_ocaml_Runtime[41],_bgY_),
- _bg0_=caml_call1(Runtime_ocaml_Runtime[31],cst_6515),
- _bg1_=caml_call2(Runtime_ocaml_Runtime[65],_bg0_,_bgZ_),
- _bg2_=caml_call1(Runtime_ocaml_Runtime[31],cst_45029);
- return caml_call2(Runtime_ocaml_Runtime[67],_bg2_,_bg1_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$169)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29872)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35819);
- var
- _bg3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$98),
- _bg4_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bg3_),
- _bg5_=caml_call1(Runtime_ocaml_Runtime[41],_bg4_),
- _bg6_=caml_call1(Runtime_ocaml_Runtime[31],cst_5947),
- _bg7_=caml_call2(Runtime_ocaml_Runtime[65],_bg6_,_bg5_),
- _bg8_=caml_call1(Runtime_ocaml_Runtime[31],cst_41767);
- return caml_call2(Runtime_ocaml_Runtime[67],_bg8_,_bg7_)}}
- function _bgK_(param$0)
- {var
- _bgL_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bgM_=caml_call2(Runtime_ocaml_Runtime[98],param,_bgL_);
- if(_bgM_)
- {var
- _bgN_=caml_call3(Runtime_ocaml_Runtime[56],2012,12,31),
- _bgO_=caml_call2(Runtime_ocaml_Runtime[101],param,_bgN_);
- if(_bgO_)
- {var _bgP_=0 === anciennete_logement[0]?1:0;
- if(_bgP_)
- switch(type_pret[0])
- {case 0:var _bgQ_=0;break;
- case 1:var _bgQ_=1;break;
- case 2:var _bgQ_=0;break;
- case 3:var _bgQ_=0;break;
- default:var _bgQ_=0}
- else
- var _bgQ_=_bgP_}
- else
- var _bgQ_=_bgO_}
- else
- var _bgQ_=_bgM_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xc_,_bgQ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xd_,[0],_bgK_,_bgJ_)},
- _a5D_=
- function(param$0)
- {function _bgj_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$170)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28575)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34484);
- var
- _bgr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$99),
- _bgs_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgr_),
- _bgt_=caml_call1(Runtime_ocaml_Runtime[41],_bgs_),
- _bgu_=caml_call1(Runtime_ocaml_Runtime[31],cst_5909),
- _bgv_=caml_call2(Runtime_ocaml_Runtime[65],_bgu_,_bgt_),
- _bgw_=caml_call1(Runtime_ocaml_Runtime[31],cst_40392);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgw_,_bgv_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$171)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25473)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30680);
- var
- _bgx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$100),
- _bgy_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgx_),
- _bgz_=caml_call1(Runtime_ocaml_Runtime[41],_bgy_),
- _bgA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5206),
- _bgB_=caml_call2(Runtime_ocaml_Runtime[65],_bgA_,_bgz_),
- _bgC_=caml_call1(Runtime_ocaml_Runtime[31],cst_35885);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgC_,_bgB_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$172)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23789)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28539);
- var
- _bgD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$101),
- _bgE_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgD_),
- _bgF_=caml_call1(Runtime_ocaml_Runtime[41],_bgE_),
- _bgG_=caml_call1(Runtime_ocaml_Runtime[31],cst_4751),
- _bgH_=caml_call2(Runtime_ocaml_Runtime[65],_bgG_,_bgF_),
- _bgI_=caml_call1(Runtime_ocaml_Runtime[31],cst_33290);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgI_,_bgH_)}}
- function _bgk_(param$0)
- {var
- _bgl_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31),
- _bgm_=caml_call2(Runtime_ocaml_Runtime[98],param,_bgl_);
- if(_bgm_)
- {var
- _bgn_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bgo_=caml_call2(Runtime_ocaml_Runtime[101],param,_bgn_);
- if(_bgo_)
- {var _bgp_=0 === anciennete_logement[0]?0:1;
- if(_bgp_)
- switch(type_pret[0])
- {case 0:var _bgq_=0;break;
- case 1:var _bgq_=1;break;
- case 2:var _bgq_=0;break;
- case 3:var _bgq_=0;break;
- default:var _bgq_=0}
- else
- var _bgq_=_bgp_}
- else
- var _bgq_=_bgo_}
- else
- var _bgq_=_bgm_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xe_,_bgq_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xf_,[0],_bgk_,_bgj_)},
- _a5E_=
- function(param$0)
- {function _bfV_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$173)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_35500)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_42827);
- var
- _bf3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$102),
- _bf4_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bf3_),
- _bf5_=caml_call1(Runtime_ocaml_Runtime[41],_bf4_),
- _bf6_=caml_call1(Runtime_ocaml_Runtime[31],cst_7326),
- _bf7_=caml_call2(Runtime_ocaml_Runtime[65],_bf6_,_bf5_),
- _bf8_=caml_call1(Runtime_ocaml_Runtime[31],cst_50153);
- return caml_call2(Runtime_ocaml_Runtime[67],_bf8_,_bf7_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$174)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31681)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_38131);
- var
- _bf9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$103),
- _bf__=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bf9_),
- _bf$_=caml_call1(Runtime_ocaml_Runtime[41],_bf__),
- _bga_=caml_call1(Runtime_ocaml_Runtime[31],cst_6450),
- _bgb_=caml_call2(Runtime_ocaml_Runtime[65],_bga_,_bf$_),
- _bgc_=caml_call1(Runtime_ocaml_Runtime[31],cst_44583);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgc_,_bgb_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$175)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29576)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35464);
- var
- _bgd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$104),
- _bge_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bgd_),
- _bgf_=caml_call1(Runtime_ocaml_Runtime[41],_bge_),
- _bgg_=caml_call1(Runtime_ocaml_Runtime[31],cst_5888),
- _bgh_=caml_call2(Runtime_ocaml_Runtime[65],_bgg_,_bgf_),
- _bgi_=caml_call1(Runtime_ocaml_Runtime[31],cst_41353);
- return caml_call2(Runtime_ocaml_Runtime[67],_bgi_,_bgh_)}}
- function _bfW_(param$0)
- {var
- _bfX_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31),
- _bfY_=caml_call2(Runtime_ocaml_Runtime[98],param,_bfX_);
- if(_bfY_)
- {var
- _bfZ_=caml_call3(Runtime_ocaml_Runtime[56],2011,12,31),
- _bf0_=caml_call2(Runtime_ocaml_Runtime[101],param,_bfZ_);
- if(_bf0_)
- {var _bf1_=0 === anciennete_logement[0]?1:0;
- if(_bf1_)
- switch(type_pret[0])
- {case 0:var _bf2_=0;break;
- case 1:var _bf2_=1;break;
- case 2:var _bf2_=0;break;
- case 3:var _bf2_=0;break;
- default:var _bf2_=0}
- else
- var _bf2_=_bf1_}
- else
- var _bf2_=_bf0_}
- else
- var _bf2_=_bfY_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xg_,_bf2_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xh_,[0],_bfW_,_bfV_)},
- _a5F_=
- function(param$0)
- {function _bfv_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$176)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28264)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34109);
- var
- _bfD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$105),
- _bfE_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfD_),
- _bfF_=caml_call1(Runtime_ocaml_Runtime[41],_bfE_),
- _bfG_=caml_call1(Runtime_ocaml_Runtime[31],cst_5845),
- _bfH_=caml_call2(Runtime_ocaml_Runtime[65],_bfG_,_bfF_),
- _bfI_=caml_call1(Runtime_ocaml_Runtime[31],cst_39953);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfI_,_bfH_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$177)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25196)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30346);
- var
- _bfJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$106),
- _bfK_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfJ_),
- _bfL_=caml_call1(Runtime_ocaml_Runtime[41],_bfK_),
- _bfM_=caml_call1(Runtime_ocaml_Runtime[31],cst_5149),
- _bfN_=caml_call2(Runtime_ocaml_Runtime[65],_bfM_,_bfL_),
- _bfO_=caml_call1(Runtime_ocaml_Runtime[31],cst_35495);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfO_,_bfN_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$178)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23530)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28228);
- var
- _bfP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$107),
- _bfQ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfP_),
- _bfR_=caml_call1(Runtime_ocaml_Runtime[41],_bfQ_),
- _bfS_=caml_call1(Runtime_ocaml_Runtime[31],cst_4699),
- _bfT_=caml_call2(Runtime_ocaml_Runtime[65],_bfS_,_bfR_),
- _bfU_=caml_call1(Runtime_ocaml_Runtime[31],cst_32928);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfU_,_bfT_)}}
- function _bfw_(param$0)
- {var
- _bfx_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31),
- _bfy_=caml_call2(Runtime_ocaml_Runtime[98],param,_bfx_);
- if(_bfy_)
- {var
- _bfz_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31),
- _bfA_=caml_call2(Runtime_ocaml_Runtime[101],param,_bfz_);
- if(_bfA_)
- {var _bfB_=0 === anciennete_logement[0]?0:1;
- if(_bfB_)
- switch(type_pret[0])
- {case 0:var _bfC_=0;break;
- case 1:var _bfC_=1;break;
- case 2:var _bfC_=0;break;
- case 3:var _bfC_=0;break;
- default:var _bfC_=0}
- else
- var _bfC_=_bfB_}
- else
- var _bfC_=_bfA_}
- else
- var _bfC_=_bfy_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xi_,_bfC_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xj_,[0],_bfw_,_bfv_)},
- _a5G_=
- function(param$0)
- {function _be7_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$179)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_35114)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_42361);
- var
- _bfd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$108),
- _bfe_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfd_),
- _bff_=caml_call1(Runtime_ocaml_Runtime[41],_bfe_),
- _bfg_=caml_call1(Runtime_ocaml_Runtime[31],cst_7246),
- _bfh_=caml_call2(Runtime_ocaml_Runtime[65],_bfg_,_bff_),
- _bfi_=caml_call1(Runtime_ocaml_Runtime[31],cst_49607);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfi_,_bfh_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$180)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31336)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37716);
- var
- _bfj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$109),
- _bfk_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfj_),
- _bfl_=caml_call1(Runtime_ocaml_Runtime[41],_bfk_),
- _bfm_=caml_call1(Runtime_ocaml_Runtime[31],cst_6380),
- _bfn_=caml_call2(Runtime_ocaml_Runtime[65],_bfm_,_bfl_),
- _bfo_=caml_call1(Runtime_ocaml_Runtime[31],cst_44098);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfo_,_bfn_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$181)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29254)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35078);
- var
- _bfp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$110),
- _bfq_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bfp_),
- _bfr_=caml_call1(Runtime_ocaml_Runtime[41],_bfq_),
- _bfs_=caml_call1(Runtime_ocaml_Runtime[31],cst_5824),
- _bft_=caml_call2(Runtime_ocaml_Runtime[65],_bfs_,_bfr_),
- _bfu_=caml_call1(Runtime_ocaml_Runtime[31],cst_40903);
- return caml_call2(Runtime_ocaml_Runtime[67],_bfu_,_bft_)}}
- function _be8_(param$0)
- {var
- _be9_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31),
- _be__=caml_call2(Runtime_ocaml_Runtime[98],param,_be9_);
- if(_be__)
- {var
- _be$_=caml_call3(Runtime_ocaml_Runtime[56],2010,12,31),
- _bfa_=caml_call2(Runtime_ocaml_Runtime[101],param,_be$_);
- if(_bfa_)
- {var _bfb_=0 === anciennete_logement[0]?1:0;
- if(_bfb_)
- switch(type_pret[0])
- {case 0:var _bfc_=0;break;
- case 1:var _bfc_=1;break;
- case 2:var _bfc_=0;break;
- case 3:var _bfc_=0;break;
- default:var _bfc_=0}
- else
- var _bfc_=_bfb_}
- else
- var _bfc_=_bfa_}
- else
- var _bfc_=_be__;
- return caml_call2(Runtime_ocaml_Runtime[29],_xk_,_bfc_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xl_,[0],_be8_,_be7_)},
- _a5H_=
- function(param$0)
- {function _beH_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$182)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28174)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34000);
- var
- _beP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$111),
- _beQ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beP_),
- _beR_=caml_call1(Runtime_ocaml_Runtime[41],_beQ_),
- _beS_=caml_call1(Runtime_ocaml_Runtime[31],cst_5826),
- _beT_=caml_call2(Runtime_ocaml_Runtime[65],_beS_,_beR_),
- _beU_=caml_call1(Runtime_ocaml_Runtime[31],cst_39826);
- return caml_call2(Runtime_ocaml_Runtime[67],_beU_,_beT_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$183)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25116)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30249);
- var
- _beV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$112),
- _beW_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beV_),
- _beX_=caml_call1(Runtime_ocaml_Runtime[41],_beW_),
- _beY_=caml_call1(Runtime_ocaml_Runtime[31],cst_5133),
- _beZ_=caml_call2(Runtime_ocaml_Runtime[65],_beY_,_beX_),
- _be0_=caml_call1(Runtime_ocaml_Runtime[31],cst_35382);
- return caml_call2(Runtime_ocaml_Runtime[67],_be0_,_beZ_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$184)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23455)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28138);
- var
- _be1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$113),
- _be2_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_be1_),
- _be3_=caml_call1(Runtime_ocaml_Runtime[41],_be2_),
- _be4_=caml_call1(Runtime_ocaml_Runtime[31],cst_4684),
- _be5_=caml_call2(Runtime_ocaml_Runtime[65],_be4_,_be3_),
- _be6_=caml_call1(Runtime_ocaml_Runtime[31],cst_32823);
- return caml_call2(Runtime_ocaml_Runtime[67],_be6_,_be5_)}}
- function _beI_(param$0)
- {var
- _beJ_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31),
- _beK_=caml_call2(Runtime_ocaml_Runtime[98],param,_beJ_);
- if(_beK_)
- {var
- _beL_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31),
- _beM_=caml_call2(Runtime_ocaml_Runtime[101],param,_beL_);
- if(_beM_)
- {var _beN_=0 === anciennete_logement[0]?0:1;
- if(_beN_)
- switch(type_pret[0])
- {case 0:var _beO_=0;break;
- case 1:var _beO_=1;break;
- case 2:var _beO_=0;break;
- case 3:var _beO_=0;break;
- default:var _beO_=0}
- else
- var _beO_=_beN_}
- else
- var _beO_=_beM_}
- else
- var _beO_=_beK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xm_,_beO_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xn_,[0],_beI_,_beH_)},
- _a5I_=
- function(param$0)
- {function _beh_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$185)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_35002)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_42226);
- var
- _bep_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$114),
- _beq_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bep_),
- _ber_=caml_call1(Runtime_ocaml_Runtime[41],_beq_),
- _bes_=caml_call1(Runtime_ocaml_Runtime[31],cst_7223),
- _bet_=caml_call2(Runtime_ocaml_Runtime[65],_bes_,_ber_),
- _beu_=caml_call1(Runtime_ocaml_Runtime[31],cst_49449);
- return caml_call2(Runtime_ocaml_Runtime[67],_beu_,_bet_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$186)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31236)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37596);
- var
- _bev_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$115),
- _bew_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bev_),
- _bex_=caml_call1(Runtime_ocaml_Runtime[41],_bew_),
- _bey_=caml_call1(Runtime_ocaml_Runtime[31],cst_6360),
- _bez_=caml_call2(Runtime_ocaml_Runtime[65],_bey_,_bex_),
- _beA_=caml_call1(Runtime_ocaml_Runtime[31],cst_43957);
- return caml_call2(Runtime_ocaml_Runtime[67],_beA_,_bez_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$187)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29161)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34966);
- var
- _beB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$116),
- _beC_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beB_),
- _beD_=caml_call1(Runtime_ocaml_Runtime[41],_beC_),
- _beE_=caml_call1(Runtime_ocaml_Runtime[31],cst_5805),
- _beF_=caml_call2(Runtime_ocaml_Runtime[65],_beE_,_beD_),
- _beG_=caml_call1(Runtime_ocaml_Runtime[31],cst_40773);
- return caml_call2(Runtime_ocaml_Runtime[67],_beG_,_beF_)}}
- function _bei_(param$0)
- {var
- _bej_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31),
- _bek_=caml_call2(Runtime_ocaml_Runtime[98],param,_bej_);
- if(_bek_)
- {var
- _bel_=caml_call3(Runtime_ocaml_Runtime[56],2009,12,31),
- _bem_=caml_call2(Runtime_ocaml_Runtime[101],param,_bel_);
- if(_bem_)
- {var _ben_=0 === anciennete_logement[0]?1:0;
- if(_ben_)
- switch(type_pret[0])
- {case 0:var _beo_=0;break;
- case 1:var _beo_=1;break;
- case 2:var _beo_=0;break;
- case 3:var _beo_=0;break;
- default:var _beo_=0}
- else
- var _beo_=_ben_}
- else
- var _beo_=_bem_}
- else
- var _beo_=_bek_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xo_,_beo_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xp_,[0],_bei_,_beh_)},
- _a5J_=
- function(param$0)
- {function _bdT_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$188)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27367)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33026);
- var
- _bd1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$117),
- _bd2_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bd1_),
- _bd3_=caml_call1(Runtime_ocaml_Runtime[41],_bd2_),
- _bd4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5659),
- _bd5_=caml_call2(Runtime_ocaml_Runtime[65],_bd4_,_bd3_),
- _bd6_=caml_call1(Runtime_ocaml_Runtime[31],cst_38685);
- return caml_call2(Runtime_ocaml_Runtime[67],_bd6_,_bd5_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$189)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24396)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29382);
- var
- _bd7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$118),
- _bd8_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bd7_),
- _bd9_=caml_call1(Runtime_ocaml_Runtime[41],_bd8_),
- _bd__=caml_call1(Runtime_ocaml_Runtime[31],cst_4986$0),
- _bd$_=caml_call2(Runtime_ocaml_Runtime[65],_bd__,_bd9_),
- _bea_=caml_call1(Runtime_ocaml_Runtime[31],cst_34368);
- return caml_call2(Runtime_ocaml_Runtime[67],_bea_,_bd$_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$190)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22783)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_27332);
- var
- _beb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$119),
- _bec_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_beb_),
- _bed_=caml_call1(Runtime_ocaml_Runtime[41],_bec_),
- _bee_=caml_call1(Runtime_ocaml_Runtime[31],cst_4550),
- _bef_=caml_call2(Runtime_ocaml_Runtime[65],_bee_,_bed_),
- _beg_=caml_call1(Runtime_ocaml_Runtime[31],cst_31882);
- return caml_call2(Runtime_ocaml_Runtime[67],_beg_,_bef_)}}
- function _bdU_(param$0)
- {var
- _bdV_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31),
- _bdW_=caml_call2(Runtime_ocaml_Runtime[98],param,_bdV_);
- if(_bdW_)
- {var
- _bdX_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31),
- _bdY_=caml_call2(Runtime_ocaml_Runtime[101],param,_bdX_);
- if(_bdY_)
- {var _bdZ_=0 === anciennete_logement[0]?0:1;
- if(_bdZ_)
- switch(type_pret[0])
- {case 0:var _bd0_=0;break;
- case 1:var _bd0_=1;break;
- case 2:var _bd0_=0;break;
- case 3:var _bd0_=0;break;
- default:var _bd0_=0}
- else
- var _bd0_=_bdZ_}
- else
- var _bd0_=_bdY_}
- else
- var _bd0_=_bdW_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xq_,_bd0_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xr_,[0],_bdU_,_bdT_)},
- _a5K_=
- function(param$0)
- {function _bdt_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$191)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_33999)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_41016);
- var
- _bdB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$120),
- _bdC_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdB_),
- _bdD_=caml_call1(Runtime_ocaml_Runtime[41],_bdC_),
- _bdE_=caml_call1(Runtime_ocaml_Runtime[31],cst_7016),
- _bdF_=caml_call2(Runtime_ocaml_Runtime[65],_bdE_,_bdD_),
- _bdG_=caml_call1(Runtime_ocaml_Runtime[31],cst_48032);
- return caml_call2(Runtime_ocaml_Runtime[67],_bdG_,_bdF_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$192)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30341)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36519);
- var
- _bdH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$121),
- _bdI_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdH_),
- _bdJ_=caml_call1(Runtime_ocaml_Runtime[41],_bdI_),
- _bdK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6178),
- _bdL_=caml_call2(Runtime_ocaml_Runtime[65],_bdK_,_bdJ_),
- _bdM_=caml_call1(Runtime_ocaml_Runtime[31],cst_42697);
- return caml_call2(Runtime_ocaml_Runtime[67],_bdM_,_bdL_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$193)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28325)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33964);
- var
- _bdN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$122),
- _bdO_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdN_),
- _bdP_=caml_call1(Runtime_ocaml_Runtime[41],_bdO_),
- _bdQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5639),
- _bdR_=caml_call2(Runtime_ocaml_Runtime[65],_bdQ_,_bdP_),
- _bdS_=caml_call1(Runtime_ocaml_Runtime[31],cst_39605);
- return caml_call2(Runtime_ocaml_Runtime[67],_bdS_,_bdR_)}}
- function _bdu_(param$0)
- {var
- _bdv_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31),
- _bdw_=caml_call2(Runtime_ocaml_Runtime[98],param,_bdv_);
- if(_bdw_)
- {var
- _bdx_=caml_call3(Runtime_ocaml_Runtime[56],2008,12,31),
- _bdy_=caml_call2(Runtime_ocaml_Runtime[101],param,_bdx_);
- if(_bdy_)
- {var _bdz_=0 === anciennete_logement[0]?1:0;
- if(_bdz_)
- switch(type_pret[0])
- {case 0:var _bdA_=0;break;
- case 1:var _bdA_=1;break;
- case 2:var _bdA_=0;break;
- case 3:var _bdA_=0;break;
- default:var _bdA_=0}
- else
- var _bdA_=_bdz_}
- else
- var _bdA_=_bdy_}
- else
- var _bdA_=_bdw_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xs_,_bdA_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xt_,[0],_bdu_,_bdt_)},
- _a5L_=
- function(param$0)
- {function _bc5_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$194)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26632)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32139);
- var
- _bdb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$123),
- _bdc_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdb_),
- _bdd_=caml_call1(Runtime_ocaml_Runtime[41],_bdc_),
- _bde_=caml_call1(Runtime_ocaml_Runtime[31],cst_5507),
- _bdf_=caml_call2(Runtime_ocaml_Runtime[65],_bde_,_bdd_),
- _bdg_=caml_call1(Runtime_ocaml_Runtime[31],cst_37646);
- return caml_call2(Runtime_ocaml_Runtime[67],_bdg_,_bdf_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$195)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23741)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28593);
- var
- _bdh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$124),
- _bdi_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdh_),
- _bdj_=caml_call1(Runtime_ocaml_Runtime[41],_bdi_),
- _bdk_=caml_call1(Runtime_ocaml_Runtime[31],cst_4852),
- _bdl_=caml_call2(Runtime_ocaml_Runtime[65],_bdk_,_bdj_),
- _bdm_=caml_call1(Runtime_ocaml_Runtime[31],cst_33445);
- return caml_call2(Runtime_ocaml_Runtime[67],_bdm_,_bdl_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$196)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22171)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36598);
- var
- _bdn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$125),
- _bdo_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bdn_),
- _bdp_=caml_call1(Runtime_ocaml_Runtime[41],_bdo_),
- _bdq_=caml_call1(Runtime_ocaml_Runtime[31],cst_4428),
- _bdr_=caml_call2(Runtime_ocaml_Runtime[65],_bdq_,_bdp_),
- _bds_=caml_call1(Runtime_ocaml_Runtime[31],cst_31026);
- return caml_call2(Runtime_ocaml_Runtime[67],_bds_,_bdr_)}}
- function _bc6_(param$0)
- {var
- _bc7_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31),
- _bc8_=caml_call2(Runtime_ocaml_Runtime[98],param,_bc7_);
- if(_bc8_)
- {var
- _bc9_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31),
- _bc__=caml_call2(Runtime_ocaml_Runtime[101],param,_bc9_);
- if(_bc__)
- {var _bc$_=0 === anciennete_logement[0]?0:1;
- if(_bc$_)
- switch(type_pret[0])
- {case 0:var _bda_=0;break;
- case 1:var _bda_=1;break;
- case 2:var _bda_=0;break;
- case 3:var _bda_=0;break;
- default:var _bda_=0}
- else
- var _bda_=_bc$_}
- else
- var _bda_=_bc__}
- else
- var _bda_=_bc8_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xu_,_bda_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xv_,[0],_bc6_,_bc5_)},
- _a5M_=
- function(param$0)
- {function _bcF_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$197)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_33026$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_39914);
- var
- _bcN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$126),
- _bcO_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcN_),
- _bcP_=caml_call1(Runtime_ocaml_Runtime[41],_bcO_),
- _bcQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_6828),
- _bcR_=caml_call2(Runtime_ocaml_Runtime[65],_bcQ_,_bcP_),
- _bcS_=caml_call1(Runtime_ocaml_Runtime[31],cst_46742);
- return caml_call2(Runtime_ocaml_Runtime[67],_bcS_,_bcR_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$198)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29526)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35538);
- var
- _bcT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$127),
- _bcU_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcT_),
- _bcV_=caml_call1(Runtime_ocaml_Runtime[41],_bcU_),
- _bcW_=caml_call1(Runtime_ocaml_Runtime[31],cst_6012),
- _bcX_=caml_call2(Runtime_ocaml_Runtime[65],_bcW_,_bcV_),
- _bcY_=caml_call1(Runtime_ocaml_Runtime[31],cst_41550);
- return caml_call2(Runtime_ocaml_Runtime[67],_bcY_,_bcX_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$199)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27564)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33052);
- var
- _bcZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$128),
- _bc0_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcZ_),
- _bc1_=caml_call1(Runtime_ocaml_Runtime[41],_bc0_),
- _bc2_=caml_call1(Runtime_ocaml_Runtime[31],cst_5488),
- _bc3_=caml_call2(Runtime_ocaml_Runtime[65],_bc2_,_bc1_),
- _bc4_=caml_call1(Runtime_ocaml_Runtime[31],cst_38541);
- return caml_call2(Runtime_ocaml_Runtime[67],_bc4_,_bc3_)}}
- function _bcG_(param$0)
- {var
- _bcH_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31),
- _bcI_=caml_call2(Runtime_ocaml_Runtime[98],param,_bcH_);
- if(_bcI_)
- {var
- _bcJ_=caml_call3(Runtime_ocaml_Runtime[56],2007,12,31),
- _bcK_=caml_call2(Runtime_ocaml_Runtime[101],param,_bcJ_);
- if(_bcK_)
- {var _bcL_=0 === anciennete_logement[0]?1:0;
- if(_bcL_)
- switch(type_pret[0])
- {case 0:var _bcM_=0;break;
- case 1:var _bcM_=1;break;
- case 2:var _bcM_=0;break;
- case 3:var _bcM_=0;break;
- default:var _bcM_=0}
- else
- var _bcM_=_bcL_}
- else
- var _bcM_=_bcK_}
- else
- var _bcM_=_bcI_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xw_,_bcM_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xx_,[0],_bcG_,_bcF_)},
- _a5N_=
- function(param$0)
- {function _bcf_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$200)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25907)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31264);
- var
- _bcn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$129),
- _bco_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcn_),
- _bcp_=caml_call1(Runtime_ocaml_Runtime[41],_bco_),
- _bcq_=caml_call1(Runtime_ocaml_Runtime[31],cst_5357),
- _bcr_=caml_call2(Runtime_ocaml_Runtime[65],_bcq_,_bcp_),
- _bcs_=caml_call1(Runtime_ocaml_Runtime[31],cst_36621);
- return caml_call2(Runtime_ocaml_Runtime[67],_bcs_,_bcr_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$201)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23094)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_27814);
- var
- _bct_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$130),
- _bcu_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bct_),
- _bcv_=caml_call1(Runtime_ocaml_Runtime[41],_bcu_),
- _bcw_=caml_call1(Runtime_ocaml_Runtime[31],cst_4720),
- _bcx_=caml_call2(Runtime_ocaml_Runtime[65],_bcw_,_bcv_),
- _bcy_=caml_call1(Runtime_ocaml_Runtime[31],cst_32534);
- return caml_call2(Runtime_ocaml_Runtime[67],_bcy_,_bcx_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$202)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_21567)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_25874);
- var
- _bcz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$131),
- _bcA_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bcz_),
- _bcB_=caml_call1(Runtime_ocaml_Runtime[41],_bcA_),
- _bcC_=caml_call1(Runtime_ocaml_Runtime[31],cst_4307),
- _bcD_=caml_call2(Runtime_ocaml_Runtime[65],_bcC_,_bcB_),
- _bcE_=caml_call1(Runtime_ocaml_Runtime[31],cst_30881);
- return caml_call2(Runtime_ocaml_Runtime[67],_bcE_,_bcD_)}}
- function _bcg_(param$0)
- {var
- _bch_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31),
- _bci_=caml_call2(Runtime_ocaml_Runtime[98],param,_bch_);
- if(_bci_)
- {var
- _bcj_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31),
- _bck_=caml_call2(Runtime_ocaml_Runtime[101],param,_bcj_);
- if(_bck_)
- {var _bcl_=0 === anciennete_logement[0]?0:1;
- if(_bcl_)
- switch(type_pret[0])
- {case 0:var _bcm_=0;break;
- case 1:var _bcm_=1;break;
- case 2:var _bcm_=0;break;
- case 3:var _bcm_=0;break;
- default:var _bcm_=0}
- else
- var _bcm_=_bcl_}
- else
- var _bcm_=_bck_}
- else
- var _bcm_=_bci_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xy_,_bcm_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xz_,[0],_bcg_,_bcf_)},
- _a5O_=
- function(param$0)
- {function _bbR_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$203)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_32185)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_38827);
- var
- _bbZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$132),
- _bb0_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbZ_),
- _bb1_=caml_call1(Runtime_ocaml_Runtime[41],_bb0_),
- _bb2_=caml_call1(Runtime_ocaml_Runtime[31],cst_6642),
- _bb3_=caml_call2(Runtime_ocaml_Runtime[65],_bb2_,_bb1_),
- _bb4_=caml_call1(Runtime_ocaml_Runtime[31],cst_45469);
- return caml_call2(Runtime_ocaml_Runtime[67],_bb4_,_bb3_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$204)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28722)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34570$0);
- var
- _bb5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$133),
- _bb6_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bb5_),
- _bb7_=caml_call1(Runtime_ocaml_Runtime[41],_bb6_),
- _bb8_=caml_call1(Runtime_ocaml_Runtime[31],cst_5848),
- _bb9_=caml_call2(Runtime_ocaml_Runtime[65],_bb8_,_bb7_),
- _bb__=caml_call1(Runtime_ocaml_Runtime[31],cst_40418);
- return caml_call2(Runtime_ocaml_Runtime[67],_bb__,_bb9_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$205)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26813)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32152);
- var
- _bb$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$134),
- _bca_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bb$_),
- _bcb_=caml_call1(Runtime_ocaml_Runtime[41],_bca_),
- _bcc_=caml_call1(Runtime_ocaml_Runtime[31],cst_5339),
- _bcd_=caml_call2(Runtime_ocaml_Runtime[65],_bcc_,_bcb_),
- _bce_=caml_call1(Runtime_ocaml_Runtime[31],cst_37491);
- return caml_call2(Runtime_ocaml_Runtime[67],_bce_,_bcd_)}}
- function _bbS_(param$0)
- {var
- _bbT_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31),
- _bbU_=caml_call2(Runtime_ocaml_Runtime[98],param,_bbT_);
- if(_bbU_)
- {var
- _bbV_=caml_call3(Runtime_ocaml_Runtime[56],2006,12,31),
- _bbW_=caml_call2(Runtime_ocaml_Runtime[101],param,_bbV_);
- if(_bbW_)
- {var _bbX_=0 === anciennete_logement[0]?1:0;
- if(_bbX_)
- switch(type_pret[0])
- {case 0:var _bbY_=0;break;
- case 1:var _bbY_=1;break;
- case 2:var _bbY_=0;break;
- case 3:var _bbY_=0;break;
- default:var _bbY_=0}
- else
- var _bbY_=_bbX_}
- else
- var _bbY_=_bbW_}
- else
- var _bbY_=_bbU_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xA_,_bbY_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xB_,[0],_bbS_,_bbR_)},
- _a5P_=
- function(param$0)
- {function _bbr_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$206)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25449)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30711);
- var
- _bbz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$135),
- _bbA_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbz_),
- _bbB_=caml_call1(Runtime_ocaml_Runtime[41],_bbA_),
- _bbC_=caml_call1(Runtime_ocaml_Runtime[31],cst_5262),
- _bbD_=caml_call2(Runtime_ocaml_Runtime[65],_bbC_,_bbB_),
- _bbE_=caml_call1(Runtime_ocaml_Runtime[31],cst_35973);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbE_,_bbD_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$207)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22686)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_27323);
- var
- _bbF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$136),
- _bbG_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbF_),
- _bbH_=caml_call1(Runtime_ocaml_Runtime[41],_bbG_),
- _bbI_=caml_call1(Runtime_ocaml_Runtime[31],cst_4637),
- _bbJ_=caml_call2(Runtime_ocaml_Runtime[65],_bbI_,_bbH_),
- _bbK_=caml_call1(Runtime_ocaml_Runtime[31],cst_31960);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbK_,_bbJ_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$208)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_21186)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_25417);
- var
- _bbL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$137),
- _bbM_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbL_),
- _bbN_=caml_call1(Runtime_ocaml_Runtime[41],_bbM_),
- _bbO_=caml_call1(Runtime_ocaml_Runtime[31],cst_4231),
- _bbP_=caml_call2(Runtime_ocaml_Runtime[65],_bbO_,_bbN_),
- _bbQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_26948);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbQ_,_bbP_)}}
- function _bbs_(param$0)
- {var
- _bbt_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30),
- _bbu_=caml_call2(Runtime_ocaml_Runtime[98],param,_bbt_);
- if(_bbu_)
- {var
- _bbv_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31),
- _bbw_=caml_call2(Runtime_ocaml_Runtime[101],param,_bbv_);
- if(_bbw_)
- {var _bbx_=0 === anciennete_logement[0]?0:1;
- if(_bbx_)
- switch(type_pret[0])
- {case 0:var _bby_=0;break;
- case 1:var _bby_=1;break;
- case 2:var _bby_=0;break;
- case 3:var _bby_=0;break;
- default:var _bby_=0}
- else
- var _bby_=_bbx_}
- else
- var _bby_=_bbw_}
- else
- var _bby_=_bbu_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xC_,_bby_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xD_,[0],_bbs_,_bbr_)},
- _a5Q_=
- function(param$0)
- {function _ba3_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$209)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31616)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_38141);
- var
- _ba$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$138),
- _bba_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_ba$_),
- _bbb_=caml_call1(Runtime_ocaml_Runtime[41],_bba_),
- _bbc_=caml_call1(Runtime_ocaml_Runtime[31],cst_6525),
- _bbd_=caml_call2(Runtime_ocaml_Runtime[65],_bbc_,_bbb_),
- _bbe_=caml_call1(Runtime_ocaml_Runtime[31],cst_44666);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbe_,_bbd_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$210)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28214)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33959);
- var
- _bbf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$139),
- _bbg_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbf_),
- _bbh_=caml_call1(Runtime_ocaml_Runtime[41],_bbg_),
- _bbi_=caml_call1(Runtime_ocaml_Runtime[31],cst_5745),
- _bbj_=caml_call2(Runtime_ocaml_Runtime[65],_bbi_,_bbh_),
- _bbk_=caml_call1(Runtime_ocaml_Runtime[31],cst_39704);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbk_,_bbj_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$211)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26339)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31584);
- var
- _bbl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$140),
- _bbm_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bbl_),
- _bbn_=caml_call1(Runtime_ocaml_Runtime[41],_bbm_),
- _bbo_=caml_call1(Runtime_ocaml_Runtime[31],cst_5245),
- _bbp_=caml_call2(Runtime_ocaml_Runtime[65],_bbo_,_bbn_),
- _bbq_=caml_call1(Runtime_ocaml_Runtime[31],cst_36829);
- return caml_call2(Runtime_ocaml_Runtime[67],_bbq_,_bbp_)}}
- function _ba4_(param$0)
- {var
- _ba5_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30),
- _ba6_=caml_call2(Runtime_ocaml_Runtime[98],param,_ba5_);
- if(_ba6_)
- {var
- _ba7_=caml_call3(Runtime_ocaml_Runtime[56],2005,8,31),
- _ba8_=caml_call2(Runtime_ocaml_Runtime[101],param,_ba7_);
- if(_ba8_)
- {var _ba9_=0 === anciennete_logement[0]?1:0;
- if(_ba9_)
- switch(type_pret[0])
- {case 0:var _ba__=0;break;
- case 1:var _ba__=1;break;
- case 2:var _ba__=0;break;
- case 3:var _ba__=0;break;
- default:var _ba__=0}
- else
- var _ba__=_ba9_}
- else
- var _ba__=_ba8_}
- else
- var _ba__=_ba6_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xE_,_ba__)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xF_,[0],_ba4_,_ba3_)},
- _a5R_=
- function(param$0)
- {function _baD_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$212)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25147)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30347);
- var
- _baL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$141),
- _baM_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baL_),
- _baN_=caml_call1(Runtime_ocaml_Runtime[41],_baM_),
- _baO_=caml_call1(Runtime_ocaml_Runtime[31],cst_5200),
- _baP_=caml_call2(Runtime_ocaml_Runtime[65],_baO_,_baN_),
- _baQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35547);
- return caml_call2(Runtime_ocaml_Runtime[67],_baQ_,_baP_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$213)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22417)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26999);
- var
- _baR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$142),
- _baS_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baR_),
- _baT_=caml_call1(Runtime_ocaml_Runtime[41],_baS_),
- _baU_=caml_call1(Runtime_ocaml_Runtime[31],cst_4582),
- _baV_=caml_call2(Runtime_ocaml_Runtime[65],_baU_,_baT_),
- _baW_=caml_call1(Runtime_ocaml_Runtime[31],cst_31581);
- return caml_call2(Runtime_ocaml_Runtime[67],_baW_,_baV_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$214)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_20935)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_25116$0);
- var
- _baX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$143),
- _baY_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_baX_),
- _baZ_=caml_call1(Runtime_ocaml_Runtime[41],_baY_),
- _ba0_=caml_call1(Runtime_ocaml_Runtime[31],cst_4181),
- _ba1_=caml_call2(Runtime_ocaml_Runtime[65],_ba0_,_baZ_),
- _ba2_=caml_call1(Runtime_ocaml_Runtime[31],cst_29297);
- return caml_call2(Runtime_ocaml_Runtime[67],_ba2_,_ba1_)}}
- function _baE_(param$0)
- {var
- _baF_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30),
- _baG_=caml_call2(Runtime_ocaml_Runtime[98],param,_baF_);
- if(_baG_)
- {var
- _baH_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30),
- _baI_=caml_call2(Runtime_ocaml_Runtime[101],param,_baH_);
- if(_baI_)
- {var _baJ_=0 === anciennete_logement[0]?0:1;
- if(_baJ_)
- switch(type_pret[0])
- {case 0:var _baK_=0;break;
- case 1:var _baK_=1;break;
- case 2:var _baK_=0;break;
- case 3:var _baK_=0;break;
- default:var _baK_=0}
- else
- var _baK_=_baJ_}
- else
- var _baK_=_baI_}
- else
- var _baK_=_baG_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xG_,_baK_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xH_,[0],_baE_,_baD_)},
- _a5S_=
- function(param$0)
- {function _bad_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$215)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31241)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37689);
- var
- _bal_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$144),
- _bam_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bal_),
- _ban_=caml_call1(Runtime_ocaml_Runtime[41],_bam_),
- _bao_=caml_call1(Runtime_ocaml_Runtime[31],cst_6448),
- _bap_=caml_call2(Runtime_ocaml_Runtime[65],_bao_,_ban_),
- _baq_=caml_call1(Runtime_ocaml_Runtime[31],cst_44137);
- return caml_call2(Runtime_ocaml_Runtime[67],_baq_,_bap_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$216)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27879)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33556);
- var
- _bar_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$145),
- _bas_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bar_),
- _bat_=caml_call1(Runtime_ocaml_Runtime[41],_bas_),
- _bau_=caml_call1(Runtime_ocaml_Runtime[31],cst_5677),
- _bav_=caml_call2(Runtime_ocaml_Runtime[65],_bau_,_bat_),
- _baw_=caml_call1(Runtime_ocaml_Runtime[31],cst_39233);
- return caml_call2(Runtime_ocaml_Runtime[67],_baw_,_bav_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$217)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26027)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31210);
- var
- _bax_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$146),
- _bay_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_bax_),
- _baz_=caml_call1(Runtime_ocaml_Runtime[41],_bay_),
- _baA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5183),
- _baB_=caml_call2(Runtime_ocaml_Runtime[65],_baA_,_baz_),
- _baC_=caml_call1(Runtime_ocaml_Runtime[31],cst_36393);
- return caml_call2(Runtime_ocaml_Runtime[67],_baC_,_baB_)}}
- function _bae_(param$0)
- {var
- _baf_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30),
- _bag_=caml_call2(Runtime_ocaml_Runtime[98],param,_baf_);
- if(_bag_)
- {var
- _bah_=caml_call3(Runtime_ocaml_Runtime[56],2003,6,30),
- _bai_=caml_call2(Runtime_ocaml_Runtime[101],param,_bah_);
- if(_bai_)
- {var _baj_=0 === anciennete_logement[0]?1:0;
- if(_baj_)
- switch(type_pret[0])
- {case 0:var _bak_=0;break;
- case 1:var _bak_=1;break;
- case 2:var _bak_=0;break;
- case 3:var _bak_=0;break;
- default:var _bak_=0}
- else
- var _bak_=_baj_}
- else
- var _bak_=_bai_}
- else
- var _bak_=_bag_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xI_,_bak_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xJ_,[0],_bae_,_bad_)},
- _a5T_=
- function(param$0)
- {function _a$P_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$218)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24849)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29987);
- var
- _a$X_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$147),
- _a$Y_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$X_),
- _a$Z_=caml_call1(Runtime_ocaml_Runtime[41],_a$Y_),
- _a$0_=caml_call1(Runtime_ocaml_Runtime[31],cst_5138),
- _a$1_=caml_call2(Runtime_ocaml_Runtime[65],_a$0_,_a$Z_),
- _a$2_=caml_call1(Runtime_ocaml_Runtime[31],cst_35125);
- return caml_call2(Runtime_ocaml_Runtime[67],_a$2_,_a$1_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$219)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22151)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26679);
- var
- _a$3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$148),
- _a$4_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$3_),
- _a$5_=caml_call1(Runtime_ocaml_Runtime[41],_a$4_),
- _a$6_=caml_call1(Runtime_ocaml_Runtime[31],cst_4528),
- _a$7_=caml_call2(Runtime_ocaml_Runtime[65],_a$6_,_a$5_),
- _a$8_=caml_call1(Runtime_ocaml_Runtime[31],cst_31207);
- return caml_call2(Runtime_ocaml_Runtime[67],_a$8_,_a$7_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$220)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_20687)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_24818);
- var
- _a$9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$149),
- _a$__=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$9_),
- _a$$_=caml_call1(Runtime_ocaml_Runtime[41],_a$__),
- _baa_=caml_call1(Runtime_ocaml_Runtime[31],cst_4131),
- _bab_=caml_call2(Runtime_ocaml_Runtime[65],_baa_,_a$$_),
- _bac_=caml_call1(Runtime_ocaml_Runtime[31],cst_28949);
- return caml_call2(Runtime_ocaml_Runtime[67],_bac_,_bab_)}}
- function _a$Q_(param$0)
- {var
- _a$R_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1),
- _a$S_=caml_call2(Runtime_ocaml_Runtime[98],param,_a$R_);
- if(_a$S_)
- {var
- _a$T_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30),
- _a$U_=caml_call2(Runtime_ocaml_Runtime[101],param,_a$T_);
- if(_a$U_)
- {var _a$V_=0 === anciennete_logement[0]?0:1;
- if(_a$V_)
- switch(type_pret[0])
- {case 0:var _a$W_=0;break;
- case 1:var _a$W_=1;break;
- case 2:var _a$W_=0;break;
- case 3:var _a$W_=0;break;
- default:var _a$W_=0}
- else
- var _a$W_=_a$V_}
- else
- var _a$W_=_a$U_}
- else
- var _a$W_=_a$S_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xK_,_a$W_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xL_,[0],_a$Q_,_a$P_)},
- _a5U_=
- function(param$0)
- {function _a$o_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$221)))
- var
- _a$w_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_163000)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_196700);
- else
- var
- _a$x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$150),
- _a$y_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$x_),
- _a$z_=caml_call1(Runtime_ocaml_Runtime[41],_a$y_),
- _a$A_=caml_call1(Runtime_ocaml_Runtime[31],cst_33700),
- _a$B_=caml_call2(Runtime_ocaml_Runtime[65],_a$A_,_a$z_),
- _a$C_=caml_call1(Runtime_ocaml_Runtime[31],cst_230400),
- _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$C_,_a$B_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$222)))
- var
- _a$w_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_145300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_175000);
- else
- var
- _a$D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$151),
- _a$E_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$D_),
- _a$F_=caml_call1(Runtime_ocaml_Runtime[41],_a$E_),
- _a$G_=caml_call1(Runtime_ocaml_Runtime[31],cst_29700),
- _a$H_=caml_call2(Runtime_ocaml_Runtime[65],_a$G_,_a$F_),
- _a$I_=caml_call1(Runtime_ocaml_Runtime[31],cst_204700),
- _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$I_,_a$H_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$223)))
- var
- _a$w_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_135700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_162800);
- else
- var
- _a$J_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$152),
- _a$K_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$J_),
- _a$L_=caml_call1(Runtime_ocaml_Runtime[41],_a$K_),
- _a$M_=caml_call1(Runtime_ocaml_Runtime[31],cst_27100),
- _a$N_=caml_call2(Runtime_ocaml_Runtime[65],_a$M_,_a$L_),
- _a$O_=caml_call1(Runtime_ocaml_Runtime[31],cst_189900),
- _a$w_=caml_call2(Runtime_ocaml_Runtime[67],_a$O_,_a$N_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a$w_,taux_francs_vers_euros)}
- function _a$p_(param$0)
- {var
- _a$q_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1),
- _a$r_=caml_call2(Runtime_ocaml_Runtime[98],param,_a$q_);
- if(_a$r_)
- {var
- _a$s_=caml_call3(Runtime_ocaml_Runtime[56],2001,12,31),
- _a$t_=caml_call2(Runtime_ocaml_Runtime[101],param,_a$s_);
- if(_a$t_)
- {var _a$u_=0 === anciennete_logement[0]?0:1;
- if(_a$u_)
- switch(type_pret[0])
- {case 0:var _a$v_=0;break;
- case 1:var _a$v_=1;break;
- case 2:var _a$v_=0;break;
- case 3:var _a$v_=0;break;
- default:var _a$v_=0}
- else
- var _a$v_=_a$u_}
- else
- var _a$v_=_a$t_}
- else
- var _a$v_=_a$r_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xM_,_a$v_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xN_,[0],_a$p_,_a$o_)},
- _a5V_=
- function(param$0)
- {function _a_0_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$224)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30871)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37243);
- var
- _a_8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$153),
- _a_9_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_8_),
- _a___=caml_call1(Runtime_ocaml_Runtime[41],_a_9_),
- _a_$_=caml_call1(Runtime_ocaml_Runtime[31],cst_6372),
- _a$a_=caml_call2(Runtime_ocaml_Runtime[65],_a_$_,_a___),
- _a$b_=caml_call1(Runtime_ocaml_Runtime[31],cst_43615);
- return caml_call2(Runtime_ocaml_Runtime[67],_a$b_,_a$a_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$225)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27548)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33148);
- var
- _a$c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$154),
- _a$d_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$c_),
- _a$e_=caml_call1(Runtime_ocaml_Runtime[41],_a$d_),
- _a$f_=caml_call1(Runtime_ocaml_Runtime[31],cst_5610),
- _a$g_=caml_call2(Runtime_ocaml_Runtime[65],_a$f_,_a$e_),
- _a$h_=caml_call1(Runtime_ocaml_Runtime[31],cst_38768);
- return caml_call2(Runtime_ocaml_Runtime[67],_a$h_,_a$g_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$226)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25718)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30840);
- var
- _a$i_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$155),
- _a$j_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a$i_),
- _a$k_=caml_call1(Runtime_ocaml_Runtime[41],_a$j_),
- _a$l_=caml_call1(Runtime_ocaml_Runtime[31],cst_5122),
- _a$m_=caml_call2(Runtime_ocaml_Runtime[65],_a$l_,_a$k_),
- _a$n_=caml_call1(Runtime_ocaml_Runtime[31],cst_35962);
- return caml_call2(Runtime_ocaml_Runtime[67],_a$n_,_a$m_)}}
- function _a_1_(param$0)
- {var
- _a_2_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1),
- _a_3_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_2_);
- if(_a_3_)
- {var
- _a_4_=caml_call3(Runtime_ocaml_Runtime[56],2002,6,30),
- _a_5_=caml_call2(Runtime_ocaml_Runtime[101],param,_a_4_);
- if(_a_5_)
- {var _a_6_=0 === anciennete_logement[0]?1:0;
- if(_a_6_)
- switch(type_pret[0])
- {case 0:var _a_7_=0;break;
- case 1:var _a_7_=1;break;
- case 2:var _a_7_=0;break;
- case 3:var _a_7_=0;break;
- default:var _a_7_=0}
- else
- var _a_7_=_a_6_}
- else
- var _a_7_=_a_5_}
- else
- var _a_7_=_a_3_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xO_,_a_7_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xP_,[0],_a_1_,_a_0_)},
- _a5W_=
- function(param$0)
- {function _a_z_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$227)))
- var
- _a_H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_202500)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_244300);
- else
- var
- _a_I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$156),
- _a_J_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_I_),
- _a_K_=caml_call1(Runtime_ocaml_Runtime[41],_a_J_),
- _a_L_=caml_call1(Runtime_ocaml_Runtime[31],cst_41800),
- _a_M_=caml_call2(Runtime_ocaml_Runtime[65],_a_L_,_a_K_),
- _a_N_=caml_call1(Runtime_ocaml_Runtime[31],cst_286100),
- _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_N_,_a_M_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$228)))
- var
- _a_H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_180700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_217500);
- else
- var
- _a_O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$157),
- _a_P_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_O_),
- _a_Q_=caml_call1(Runtime_ocaml_Runtime[41],_a_P_),
- _a_R_=caml_call1(Runtime_ocaml_Runtime[31],cst_36800),
- _a_S_=caml_call2(Runtime_ocaml_Runtime[65],_a_R_,_a_Q_),
- _a_T_=caml_call1(Runtime_ocaml_Runtime[31],cst_254300),
- _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_T_,_a_S_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$229)))
- var
- _a_H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_168700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_202300);
- else
- var
- _a_U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$158),
- _a_V_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_U_),
- _a_W_=caml_call1(Runtime_ocaml_Runtime[41],_a_V_),
- _a_X_=caml_call1(Runtime_ocaml_Runtime[31],cst_33600),
- _a_Y_=caml_call2(Runtime_ocaml_Runtime[65],_a_X_,_a_W_),
- _a_Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_235900),
- _a_H_=caml_call2(Runtime_ocaml_Runtime[67],_a_Z_,_a_Y_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a_H_,taux_francs_vers_euros)}
- function _a_A_(param$0)
- {var
- _a_B_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1),
- _a_C_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_B_);
- if(_a_C_)
- {var
- _a_D_=caml_call3(Runtime_ocaml_Runtime[56],2001,12,31),
- _a_E_=caml_call2(Runtime_ocaml_Runtime[101],param,_a_D_);
- if(_a_E_)
- {var _a_F_=0 === anciennete_logement[0]?1:0;
- if(_a_F_)
- switch(type_pret[0])
- {case 0:var _a_G_=0;break;
- case 1:var _a_G_=1;break;
- case 2:var _a_G_=0;break;
- case 3:var _a_G_=0;break;
- default:var _a_G_=0}
- else
- var _a_G_=_a_F_}
- else
- var _a_G_=_a_E_}
- else
- var _a_G_=_a_C_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xQ_,_a_G_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xR_,[0],_a_A_,_a_z_)},
- _a5X_=
- function(param$0)
- {function _a9__(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$230)))
- var
- _a_g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_161100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_194400);
- else
- var
- _a_h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$159),
- _a_i_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_h_),
- _a_j_=caml_call1(Runtime_ocaml_Runtime[41],_a_i_),
- _a_k_=caml_call1(Runtime_ocaml_Runtime[31],cst_33300),
- _a_l_=caml_call2(Runtime_ocaml_Runtime[65],_a_k_,_a_j_),
- _a_m_=caml_call1(Runtime_ocaml_Runtime[31],cst_227700),
- _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_m_,_a_l_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$231)))
- var
- _a_g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_143600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_172900);
- else
- var
- _a_n_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$160),
- _a_o_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_n_),
- _a_p_=caml_call1(Runtime_ocaml_Runtime[41],_a_o_),
- _a_q_=caml_call1(Runtime_ocaml_Runtime[31],cst_29300),
- _a_r_=caml_call2(Runtime_ocaml_Runtime[65],_a_q_,_a_p_),
- _a_s_=caml_call1(Runtime_ocaml_Runtime[31],cst_202200),
- _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_s_,_a_r_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$232)))
- var
- _a_g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_134100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_160900);
- else
- var
- _a_t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$161),
- _a_u_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a_t_),
- _a_v_=caml_call1(Runtime_ocaml_Runtime[41],_a_u_),
- _a_w_=caml_call1(Runtime_ocaml_Runtime[31],cst_26800),
- _a_x_=caml_call2(Runtime_ocaml_Runtime[65],_a_w_,_a_v_),
- _a_y_=caml_call1(Runtime_ocaml_Runtime[31],cst_187700),
- _a_g_=caml_call2(Runtime_ocaml_Runtime[67],_a_y_,_a_x_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a_g_,taux_francs_vers_euros)}
- function _a9$_(param$0)
- {var
- _a_a_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30),
- _a_b_=caml_call2(Runtime_ocaml_Runtime[98],param,_a_a_);
- if(_a_b_)
- {var
- _a_c_=caml_call3(Runtime_ocaml_Runtime[56],2001,6,30),
- _a_d_=caml_call2(Runtime_ocaml_Runtime[99],param,_a_c_);
- if(_a_d_)
- {var _a_e_=0 === anciennete_logement[0]?0:1;
- if(_a_e_)
- switch(type_pret[0])
- {case 0:var _a_f_=0;break;
- case 1:var _a_f_=1;break;
- case 2:var _a_f_=0;break;
- case 3:var _a_f_=0;break;
- default:var _a_f_=0}
- else
- var _a_f_=_a_e_}
- else
- var _a_f_=_a_d_}
- else
- var _a_f_=_a_b_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xS_,_a_f_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xT_,[0],_a9$_,_a9__)},
- _a5Y_=
- function(param$0)
- {function _a9J_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$233)))
- var
- _a9R_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_200100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_141400);
- else
- var
- _a9S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$162),
- _a9T_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9S_),
- _a9U_=caml_call1(Runtime_ocaml_Runtime[41],_a9T_),
- _a9V_=caml_call1(Runtime_ocaml_Runtime[31],cst_41300),
- _a9W_=caml_call2(Runtime_ocaml_Runtime[65],_a9V_,_a9U_),
- _a9X_=caml_call1(Runtime_ocaml_Runtime[31],cst_282700),
- _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a9X_,_a9W_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$234)))
- var
- _a9R_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_178600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_215000);
- else
- var
- _a9Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$163),
- _a9Z_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9Y_),
- _a90_=caml_call1(Runtime_ocaml_Runtime[41],_a9Z_),
- _a91_=caml_call1(Runtime_ocaml_Runtime[31],cst_36400),
- _a92_=caml_call2(Runtime_ocaml_Runtime[65],_a91_,_a90_),
- _a93_=caml_call1(Runtime_ocaml_Runtime[31],cst_251400),
- _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a93_,_a92_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$235)))
- var
- _a9R_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_166700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_199900);
- else
- var
- _a94_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$164),
- _a95_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a94_),
- _a96_=caml_call1(Runtime_ocaml_Runtime[41],_a95_),
- _a97_=caml_call1(Runtime_ocaml_Runtime[31],cst_33200),
- _a98_=caml_call2(Runtime_ocaml_Runtime[65],_a97_,_a96_),
- _a99_=caml_call1(Runtime_ocaml_Runtime[31],cst_233100),
- _a9R_=caml_call2(Runtime_ocaml_Runtime[67],_a99_,_a98_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a9R_,taux_francs_vers_euros)}
- function _a9K_(param$0)
- {var
- _a9L_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30),
- _a9M_=caml_call2(Runtime_ocaml_Runtime[98],param,_a9L_);
- if(_a9M_)
- {var
- _a9N_=caml_call3(Runtime_ocaml_Runtime[56],2001,6,30),
- _a9O_=caml_call2(Runtime_ocaml_Runtime[99],param,_a9N_);
- if(_a9O_)
- {var _a9P_=0 === anciennete_logement[0]?1:0;
- if(_a9P_)
- switch(type_pret[0])
- {case 0:var _a9Q_=0;break;
- case 1:var _a9Q_=1;break;
- case 2:var _a9Q_=0;break;
- case 3:var _a9Q_=0;break;
- default:var _a9Q_=0}
- else
- var _a9Q_=_a9P_}
- else
- var _a9Q_=_a9O_}
- else
- var _a9Q_=_a9M_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xU_,_a9Q_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xV_,[0],_a9K_,_a9J_)},
- _a5Z_=
- function(param$0)
- {function _a9i_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$236)))
- var
- _a9q_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_159500)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_192500);
- else
- var
- _a9r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$165),
- _a9s_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9r_),
- _a9t_=caml_call1(Runtime_ocaml_Runtime[41],_a9s_),
- _a9u_=caml_call1(Runtime_ocaml_Runtime[31],cst_33000),
- _a9v_=caml_call2(Runtime_ocaml_Runtime[65],_a9u_,_a9t_),
- _a9w_=caml_call1(Runtime_ocaml_Runtime[31],cst_225500),
- _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9w_,_a9v_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$237)))
- var
- _a9q_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_142200)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_171200);
- else
- var
- _a9x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$166),
- _a9y_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9x_),
- _a9z_=caml_call1(Runtime_ocaml_Runtime[41],_a9y_),
- _a9A_=caml_call1(Runtime_ocaml_Runtime[31],cst_29000),
- _a9B_=caml_call2(Runtime_ocaml_Runtime[65],_a9A_,_a9z_),
- _a9C_=caml_call1(Runtime_ocaml_Runtime[31],cst_200200),
- _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9C_,_a9B_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$238)))
- var
- _a9q_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_132800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_159300);
- else
- var
- _a9D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$167),
- _a9E_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9D_),
- _a9F_=caml_call1(Runtime_ocaml_Runtime[41],_a9E_),
- _a9G_=caml_call1(Runtime_ocaml_Runtime[31],cst_26500),
- _a9H_=caml_call2(Runtime_ocaml_Runtime[65],_a9G_,_a9F_),
- _a9I_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800),
- _a9q_=caml_call2(Runtime_ocaml_Runtime[67],_a9I_,_a9H_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a9q_,taux_francs_vers_euros)}
- function _a9j_(param$0)
- {var
- _a9k_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a9l_=caml_call2(Runtime_ocaml_Runtime[98],param,_a9k_);
- if(_a9l_)
- {var
- _a9m_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30),
- _a9n_=caml_call2(Runtime_ocaml_Runtime[101],param,_a9m_);
- if(_a9n_)
- {var _a9o_=0 === anciennete_logement[0]?0:1;
- if(_a9o_)
- switch(type_pret[0])
- {case 0:var _a9p_=0;break;
- case 1:var _a9p_=1;break;
- case 2:var _a9p_=0;break;
- case 3:var _a9p_=0;break;
- default:var _a9p_=0}
- else
- var _a9p_=_a9o_}
- else
- var _a9p_=_a9n_}
- else
- var _a9p_=_a9l_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xW_,_a9p_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xX_,[0],_a9j_,_a9i_)},
- _a50_=
- function(param$0)
- {function _a8T_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$239)))
- var
- _a81_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_198100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_239000);
- else
- var
- _a82_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$168),
- _a83_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a82_),
- _a84_=caml_call1(Runtime_ocaml_Runtime[41],_a83_),
- _a85_=caml_call1(Runtime_ocaml_Runtime[31],cst_40900),
- _a86_=caml_call2(Runtime_ocaml_Runtime[65],_a85_,_a84_),
- _a87_=caml_call1(Runtime_ocaml_Runtime[31],cst_279900),
- _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a87_,_a86_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$240)))
- var
- _a81_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_176800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_212800);
- else
- var
- _a88_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$169),
- _a89_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a88_),
- _a8__=caml_call1(Runtime_ocaml_Runtime[41],_a89_),
- _a8$_=caml_call1(Runtime_ocaml_Runtime[31],cst_36000),
- _a9a_=caml_call2(Runtime_ocaml_Runtime[65],_a8$_,_a8__),
- _a9b_=caml_call1(Runtime_ocaml_Runtime[31],cst_248800),
- _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a9b_,_a9a_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$241)))
- var
- _a81_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_165000)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_197900);
- else
- var
- _a9c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$170),
- _a9d_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a9c_),
- _a9e_=caml_call1(Runtime_ocaml_Runtime[41],_a9d_),
- _a9f_=caml_call1(Runtime_ocaml_Runtime[31],cst_32900),
- _a9g_=caml_call2(Runtime_ocaml_Runtime[65],_a9f_,_a9e_),
- _a9h_=caml_call1(Runtime_ocaml_Runtime[31],cst_230800),
- _a81_=caml_call2(Runtime_ocaml_Runtime[67],_a9h_,_a9g_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a81_,taux_francs_vers_euros)}
- function _a8U_(param$0)
- {var
- _a8V_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a8W_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8V_);
- if(_a8W_)
- {var
- _a8X_=caml_call3(Runtime_ocaml_Runtime[56],2000,6,30),
- _a8Y_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8X_);
- if(_a8Y_)
- {var _a8Z_=0 === anciennete_logement[0]?1:0;
- if(_a8Z_)
- switch(type_pret[0])
- {case 0:var _a80_=0;break;
- case 1:var _a80_=1;break;
- case 2:var _a80_=0;break;
- case 3:var _a80_=0;break;
- default:var _a80_=0}
- else
- var _a80_=_a8Z_}
- else
- var _a80_=_a8Y_}
- else
- var _a80_=_a8W_;
- return caml_call2(Runtime_ocaml_Runtime[29],_xY_,_a80_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_xZ_,[0],_a8U_,_a8T_)},
- _a51_=
- function(param$0)
- {function _a8D_(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$242)))
- var
- _a8M_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_86900)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_97100);
- else
- var
- _a8N_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$171),
- _a8O_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8N_),
- _a8P_=caml_call1(Runtime_ocaml_Runtime[41],_a8O_),
- _a8Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_10200),
- _a8R_=caml_call2(Runtime_ocaml_Runtime[65],_a8Q_,_a8P_),
- _a8S_=caml_call1(Runtime_ocaml_Runtime[31],cst_107300),
- _a8M_=caml_call2(Runtime_ocaml_Runtime[67],_a8S_,_a8R_);
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a8M_,taux_francs_vers_euros)}
- function _a8E_(param$0)
- {var
- _a8F_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30),
- _a8G_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8F_);
- if(_a8G_)
- {var
- _a8H_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a8I_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8H_);
- if(_a8I_)
- {if(0 === anciennete_logement[0])
- var _a8J_=0;
- else
- var
- ameliore_par_occupant=anciennete_logement[1],
- _a8L_=0 === ameliore_par_occupant[0]?1:0,
- _a8J_=_a8L_;
- if(_a8J_)
- switch(type_pret[0])
- {case 0:var _a8K_=0;break;
- case 1:var _a8K_=1;break;
- case 2:var _a8K_=0;break;
- case 3:var _a8K_=0;break;
- default:var _a8K_=0}
- else
- var _a8K_=_a8J_}
- else
- var _a8K_=_a8I_}
- else
- var _a8K_=_a8G_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x0_,_a8K_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x1_,[0],_a8E_,_a8D_)},
- _a52_=
- function(param$0)
- {function _a8b_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$243)))
- var
- _a8k_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$0);
- else
- var
- _a8l_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$172),
- _a8m_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8l_),
- _a8n_=caml_call1(Runtime_ocaml_Runtime[41],_a8m_),
- _a8o_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700),
- _a8p_=caml_call2(Runtime_ocaml_Runtime[65],_a8o_,_a8n_),
- _a8q_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200),
- _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8q_,_a8p_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$244)))
- var
- _a8k_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_223900);
- else
- var
- _a8r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$173),
- _a8s_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8r_),
- _a8t_=caml_call1(Runtime_ocaml_Runtime[41],_a8s_),
- _a8u_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900),
- _a8v_=caml_call2(Runtime_ocaml_Runtime[65],_a8u_,_a8t_),
- _a8w_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800),
- _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8w_,_a8v_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$245)))
- var
- _a8k_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_208200);
- else
- var
- _a8x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$174),
- _a8y_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a8x_),
- _a8z_=caml_call1(Runtime_ocaml_Runtime[41],_a8y_),
- _a8A_=caml_call1(Runtime_ocaml_Runtime[31],cst_34600),
- _a8B_=caml_call2(Runtime_ocaml_Runtime[65],_a8A_,_a8z_),
- _a8C_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800),
- _a8k_=caml_call2(Runtime_ocaml_Runtime[67],_a8C_,_a8B_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a8k_,taux_francs_vers_euros)}
- function _a8c_(param$0)
- {var
- _a8d_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30),
- _a8e_=caml_call2(Runtime_ocaml_Runtime[98],param,_a8d_);
- if(_a8e_)
- {var
- _a8f_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a8g_=caml_call2(Runtime_ocaml_Runtime[101],param,_a8f_);
- if(_a8g_)
- {if(0 === anciennete_logement[0])
- var _a8h_=0;
- else
- var
- ameliore_par_occupant=anciennete_logement[1],
- _a8j_=0 === ameliore_par_occupant[0]?0:1,
- _a8h_=_a8j_;
- if(_a8h_)
- switch(type_pret[0])
- {case 0:var _a8i_=0;break;
- case 1:var _a8i_=1;break;
- case 2:var _a8i_=0;break;
- case 3:var _a8i_=0;break;
- default:var _a8i_=0}
- else
- var _a8i_=_a8h_}
- else
- var _a8i_=_a8g_}
- else
- var _a8i_=_a8e_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x2_,_a8i_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x3_,[0],_a8c_,_a8b_)},
- _a53_=
- function(param$0)
- {function _a7M_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$246)))
- var
- _a7U_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_251500);
- else
- var
- _a7V_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$175),
- _a7W_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7V_),
- _a7X_=caml_call1(Runtime_ocaml_Runtime[41],_a7W_),
- _a7Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000),
- _a7Z_=caml_call2(Runtime_ocaml_Runtime[65],_a7Y_,_a7X_),
- _a70_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500),
- _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a70_,_a7Z_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$247)))
- var
- _a7U_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$0);
- else
- var
- _a71_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$176),
- _a72_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a71_),
- _a73_=caml_call1(Runtime_ocaml_Runtime[41],_a72_),
- _a74_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$0),
- _a75_=caml_call2(Runtime_ocaml_Runtime[65],_a74_,_a73_),
- _a76_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$0),
- _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a76_,_a75_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$248)))
- var
- _a7U_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$0);
- else
- var
- _a77_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$177),
- _a78_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a77_),
- _a79_=caml_call1(Runtime_ocaml_Runtime[41],_a78_),
- _a7__=caml_call1(Runtime_ocaml_Runtime[31],cst_34600$0),
- _a7$_=caml_call2(Runtime_ocaml_Runtime[65],_a7__,_a79_),
- _a8a_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$0),
- _a7U_=caml_call2(Runtime_ocaml_Runtime[67],_a8a_,_a7$_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a7U_,taux_francs_vers_euros)}
- function _a7N_(param$0)
- {var
- _a7O_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30),
- _a7P_=caml_call2(Runtime_ocaml_Runtime[98],param,_a7O_);
- if(_a7P_)
- {var
- _a7Q_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a7R_=caml_call2(Runtime_ocaml_Runtime[101],param,_a7Q_);
- if(_a7R_)
- {var _a7S_=0 === anciennete_logement[0]?1:0;
- if(_a7S_)
- switch(type_pret[0])
- {case 0:var _a7T_=0;break;
- case 1:var _a7T_=1;break;
- case 2:var _a7T_=0;break;
- case 3:var _a7T_=0;break;
- default:var _a7T_=0}
- else
- var _a7T_=_a7S_}
- else
- var _a7T_=_a7R_}
- else
- var _a7T_=_a7P_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x4_,_a7T_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x5_,[0],_a7N_,_a7M_)},
- _a54_=
- function(param$0)
- {function _a7n_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$249)))
- var
- _a7t_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_148100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_178700);
- else
- var
- _a7u_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$178),
- _a7v_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7u_),
- _a7w_=caml_call1(Runtime_ocaml_Runtime[41],_a7v_),
- _a7x_=caml_call1(Runtime_ocaml_Runtime[31],cst_30600),
- _a7y_=caml_call2(Runtime_ocaml_Runtime[65],_a7x_,_a7w_),
- _a7z_=caml_call1(Runtime_ocaml_Runtime[31],cst_209300),
- _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7z_,_a7y_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$250)))
- var
- _a7t_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_158900);
- else
- var
- _a7A_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$179),
- _a7B_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7A_),
- _a7C_=caml_call1(Runtime_ocaml_Runtime[41],_a7B_),
- _a7D_=caml_call1(Runtime_ocaml_Runtime[31],cst_26900),
- _a7E_=caml_call2(Runtime_ocaml_Runtime[65],_a7D_,_a7C_),
- _a7F_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800$0),
- _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7F_,_a7E_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$251)))
- var
- _a7t_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_123300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_147900);
- else
- var
- _a7G_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$180),
- _a7H_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7G_),
- _a7I_=caml_call1(Runtime_ocaml_Runtime[41],_a7H_),
- _a7J_=caml_call1(Runtime_ocaml_Runtime[31],cst_24600),
- _a7K_=caml_call2(Runtime_ocaml_Runtime[65],_a7J_,_a7I_),
- _a7L_=caml_call1(Runtime_ocaml_Runtime[31],cst_172500),
- _a7t_=caml_call2(Runtime_ocaml_Runtime[67],_a7L_,_a7K_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a7t_,taux_francs_vers_euros)}
- function _a7o_(param$0)
- {var
- _a7p_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a7q_=caml_call2(Runtime_ocaml_Runtime[98],param,_a7p_);
- if(_a7q_)
- {var _a7r_=0 === anciennete_logement[0]?0:1;
- if(_a7r_)
- switch(type_pret[0])
- {case 0:var _a7s_=1;break;
- case 1:var _a7s_=0;break;
- case 2:var _a7s_=0;break;
- case 3:var _a7s_=0;break;
- default:var _a7s_=0}
- else
- var _a7s_=_a7r_}
- else
- var _a7s_=_a7q_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x6_,_a7s_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x7_,[0],_a7o_,_a7n_)},
- _a55_=
- function(param$0)
- {function _a60_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$252)))
- var
- _a66_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_184000)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_220000);
- else
- var
- _a67_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$181),
- _a68_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a67_),
- _a69_=caml_call1(Runtime_ocaml_Runtime[41],_a68_),
- _a6__=caml_call1(Runtime_ocaml_Runtime[31],cst_38000),
- _a6$_=caml_call2(Runtime_ocaml_Runtime[65],_a6__,_a69_),
- _a7a_=caml_call1(Runtime_ocaml_Runtime[31],cst_260000),
- _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7a_,_a6$_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$253)))
- var
- _a66_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_164200)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_197700);
- else
- var
- _a7b_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$182),
- _a7c_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7b_),
- _a7d_=caml_call1(Runtime_ocaml_Runtime[41],_a7c_),
- _a7e_=caml_call1(Runtime_ocaml_Runtime[31],cst_33500),
- _a7f_=caml_call2(Runtime_ocaml_Runtime[65],_a7e_,_a7d_),
- _a7g_=caml_call1(Runtime_ocaml_Runtime[31],cst_231200),
- _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7g_,_a7f_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$254)))
- var
- _a66_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_153200)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_183700);
- else
- var
- _a7h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$183),
- _a7i_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a7h_),
- _a7j_=caml_call1(Runtime_ocaml_Runtime[41],_a7i_),
- _a7k_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$0),
- _a7l_=caml_call2(Runtime_ocaml_Runtime[65],_a7k_,_a7j_),
- _a7m_=caml_call1(Runtime_ocaml_Runtime[31],cst_214200),
- _a66_=caml_call2(Runtime_ocaml_Runtime[67],_a7m_,_a7l_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a66_,taux_francs_vers_euros)}
- function _a61_(param$0)
- {var
- _a62_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a63_=caml_call2(Runtime_ocaml_Runtime[98],param,_a62_);
- if(_a63_)
- {var _a64_=0 === anciennete_logement[0]?1:0;
- if(_a64_)
- switch(type_pret[0])
- {case 0:var _a65_=1;break;
- case 1:var _a65_=0;break;
- case 2:var _a65_=0;break;
- case 3:var _a65_=0;break;
- default:var _a65_=0}
- else
- var _a65_=_a64_}
- else
- var _a65_=_a63_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x8_,_a65_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x9_,[0],_a61_,_a60_)},
- _a56_=
- function(param$0)
- {function _a6z_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$255)))
- var
- _a6H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$1);
- else
- var
- _a6I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$184),
- _a6J_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6I_),
- _a6K_=caml_call1(Runtime_ocaml_Runtime[41],_a6J_),
- _a6L_=caml_call1(Runtime_ocaml_Runtime[31],cst_37400),
- _a6M_=caml_call2(Runtime_ocaml_Runtime[65],_a6L_,_a6K_),
- _a6N_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200$0),
- _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6N_,_a6M_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$256)))
- var
- _a6H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_146900)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_180100);
- else
- var
- _a6O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$185),
- _a6P_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6O_),
- _a6Q_=caml_call1(Runtime_ocaml_Runtime[41],_a6P_),
- _a6R_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$1),
- _a6S_=caml_call2(Runtime_ocaml_Runtime[65],_a6R_,_a6Q_),
- _a6T_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600),
- _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6T_,_a6S_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$257)))
- var
- _a6H_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_167600);
- else
- var
- _a6U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$186),
- _a6V_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6U_),
- _a6W_=caml_call1(Runtime_ocaml_Runtime[41],_a6V_),
- _a6X_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900),
- _a6Y_=caml_call2(Runtime_ocaml_Runtime[65],_a6X_,_a6W_),
- _a6Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500),
- _a6H_=caml_call2(Runtime_ocaml_Runtime[67],_a6Z_,_a6Y_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a6H_,taux_francs_vers_euros)}
- function _a6A_(param$0)
- {var
- _a6B_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30),
- _a6C_=caml_call2(Runtime_ocaml_Runtime[98],param,_a6B_);
- if(_a6C_)
- {var
- _a6D_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a6E_=caml_call2(Runtime_ocaml_Runtime[101],param,_a6D_);
- if(_a6E_)
- {var _a6F_=0 === anciennete_logement[0]?0:1;
- if(_a6F_)
- switch(type_pret[0])
- {case 0:var _a6G_=1;break;
- case 1:var _a6G_=0;break;
- case 2:var _a6G_=0;break;
- case 3:var _a6G_=0;break;
- default:var _a6G_=0}
- else
- var _a6G_=_a6F_}
- else
- var _a6G_=_a6E_}
- else
- var _a6G_=_a6C_;
- return caml_call2(Runtime_ocaml_Runtime[29],_x__,_a6G_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_x$_,[0],_a6A_,_a6z_)},
- _a57_=
- [0,
- function(param$0)
- {function _a5__(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$258)))
- var
- _a6g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_251500$0);
- else
- var
- _a6h_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$187),
- _a6i_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6h_),
- _a6j_=caml_call1(Runtime_ocaml_Runtime[41],_a6i_),
- _a6k_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000$0),
- _a6l_=caml_call2(Runtime_ocaml_Runtime[65],_a6k_,_a6j_),
- _a6m_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500$0),
- _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6m_,_a6l_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$259)))
- var
- _a6g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$1);
- else
- var
- _a6n_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$188),
- _a6o_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6n_),
- _a6p_=caml_call1(Runtime_ocaml_Runtime[41],_a6o_),
- _a6q_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$1),
- _a6r_=caml_call2(Runtime_ocaml_Runtime[65],_a6q_,_a6p_),
- _a6s_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$1),
- _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6s_,_a6r_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$260)))
- var
- _a6g_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$1);
- else
- var
- _a6t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$189),
- _a6u_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_a6t_),
- _a6v_=caml_call1(Runtime_ocaml_Runtime[41],_a6u_),
- _a6w_=caml_call1(Runtime_ocaml_Runtime[31],cst_35600),
- _a6x_=caml_call2(Runtime_ocaml_Runtime[65],_a6w_,_a6v_),
- _a6y_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$1),
- _a6g_=caml_call2(Runtime_ocaml_Runtime[67],_a6y_,_a6x_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_a6g_,taux_francs_vers_euros)}
- function _a5$_(param$0)
- {var
- _a6a_=caml_call3(Runtime_ocaml_Runtime[56],1992,6,30),
- _a6b_=caml_call2(Runtime_ocaml_Runtime[98],param,_a6a_);
- if(_a6b_)
- {var
- _a6c_=caml_call3(Runtime_ocaml_Runtime[56],1994,11,27),
- _a6d_=caml_call2(Runtime_ocaml_Runtime[101],param,_a6c_);
- if(_a6d_)
- {var _a6e_=0 === anciennete_logement[0]?1:0;
- if(_a6e_)
- switch(type_pret[0])
- {case 0:var _a6f_=1;break;
- case 1:var _a6f_=0;break;
- case 2:var _a6f_=0;break;
- case 3:var _a6f_=0;break;
- default:var _a6f_=0}
- else
- var _a6f_=_a6e_}
- else
- var _a6f_=_a6d_}
- else
- var _a6f_=_a6b_;
- return caml_call2(Runtime_ocaml_Runtime[29],_ya_,_a6f_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_yb_,[0],_a5$_,_a5__)},
- _a56_,
- _a55_,
- _a54_,
- _a53_,
- _a52_,
- _a51_,
- _a50_,
- _a5Z_,
- _a5Y_,
- _a5X_,
- _a5W_,
- _a5V_,
- _a5U_,
- _a5T_,
- _a5S_,
- _a5R_,
- _a5Q_,
- _a5P_,
- _a5O_,
- _a5N_,
- _a5M_,
- _a5L_,
- _a5K_,
- _a5J_,
- _a5I_,
- _a5H_,
- _a5G_,
- _a5F_,
- _a5E_,
- _a5D_,
- _a5C_,
- _a5B_,
- _a5A_,
- _a5z_,
- _a5y_,
- _a5x_,
- _a5w_,
- _a5v_,
- _a5u_,
- _a5t_,
- _a5s_,
- _a5r_],
- _a58_=caml_call4(Runtime_ocaml_Runtime[62],_yc_,_a57_,_a5q_,_a5p_);
- return _a58_}
- catch(_a59_)
- {_a59_ = caml_wrap_exception(_a59_);
- if(_a59_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_wR_];
- throw _a59_}}
- var
- calcul_plafond_mensualite_d832=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yd_,Runtime_ocaml_Runtime[10],_a1u_);
- try
- {var
- _a1v_=function(param){return calcul_nombre_parts_dot_n_nomb},
- _a1w_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yf_,1)},
- _a1x_=caml_call4(Runtime_ocaml_Runtime[62],_yg_,[0],_a1w_,_a1v_)}
- catch(_a5o_)
- {_a5o_ = caml_wrap_exception(_a5o_);
- if(_a5o_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ye_];
- throw _a5o_}
- var
- n_nombre_parts_d832_11=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yh_,Runtime_ocaml_Runtime[15],_a1x_);
- function _a1y_(param)
- {try
- {var
- _a5e_=
- function(param$0)
- {return caml_call2
- (Runtime_ocaml_Runtime[68],mensualite_principale,param)},
- _a5f_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_yj_,1)},
- _a5g_=
- [0,
- function(param$0)
- {function _a5j_(param$0)
- {var
- _a5n_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- mensualite_principale,
- montant_forfaitaire_charges_d8);
- return caml_call2(Runtime_ocaml_Runtime[68],_a5n_,param)}
- function _a5k_(param)
- {var
- _a5l_=caml_call3(Runtime_ocaml_Runtime[56],1999,6,30),
- _a5m_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_a5l_);
- return caml_call2(Runtime_ocaml_Runtime[29],_yk_,_a5m_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_yl_,[0],_a5k_,_a5j_)}],
- _a5h_=caml_call4(Runtime_ocaml_Runtime[62],_ym_,_a5g_,_a5f_,_a5e_);
- return _a5h_}
- catch(_a5i_)
- {_a5i_ = caml_wrap_exception(_a5i_);
- if(_a5i_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_yi_];
- throw _a5i_}}
- var
- depense_nette_minimale_d832_10=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yn_,Runtime_ocaml_Runtime[10],_a1y_);
- try
- {var
- _a1z_=
- function(param)
- {var
- _a5b_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yp_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _a5c_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _yq_,
- calcul_plafond_mensualite_d832),
- _a5b_),
- _a5d_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yr_,
- Runtime_ocaml_Runtime[13],
- _a5c_);
- return caml_call2(Runtime_ocaml_Runtime[27],_ys_,_a5d_)},
- _a1A_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yt_,1)},
- _a1B_=
- [0,
- function(param)
- {function _a4X_(param)
- {var
- _a4Z_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yu_,
- Runtime_ocaml_Runtime[16],
- date_entree_logement),
- _a40_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _yv_,
- calcul_plafond_mensualite_d832),
- _a4Z_),
- _a41_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yw_,
- Runtime_ocaml_Runtime[13],
- _a40_),
- _a42_=caml_call2(Runtime_ocaml_Runtime[27],_yx_,_a41_),
- _a43_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yy_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _a44_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _yz_,
- calcul_plafond_mensualite_d832),
- _a43_),
- _a45_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yA_,
- Runtime_ocaml_Runtime[13],
- _a44_),
- _a46_=caml_call2(Runtime_ocaml_Runtime[27],_yB_,_a45_);
- if(caml_call2(Runtime_ocaml_Runtime[73],_a46_,_a42_))
- {var
- _a47_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yC_,
- Runtime_ocaml_Runtime[16],
- date_entree_logement),
- _a48_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _yD_,
- calcul_plafond_mensualite_d832),
- _a47_),
- _a49_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yE_,
- Runtime_ocaml_Runtime[13],
- _a48_);
- return caml_call2(Runtime_ocaml_Runtime[27],_yF_,_a49_)}
- var
- _a4__=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yG_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _a4$_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _yH_,
- calcul_plafond_mensualite_d832),
- _a4__),
- _a5a_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _yI_,
- Runtime_ocaml_Runtime[13],
- _a4$_);
- return caml_call2(Runtime_ocaml_Runtime[27],_yJ_,_a5a_)}
- function _a4Y_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _yK_,
- local_habite_premiere_fois_ben)}
- return caml_call4(Runtime_ocaml_Runtime[62],_yL_,[0],_a4Y_,_a4X_)}],
- _a1C_=caml_call4(Runtime_ocaml_Runtime[62],_yM_,_a1B_,_a1A_,_a1z_)}
- catch(_a4W_)
- {_a4W_ = caml_wrap_exception(_a4W_);
- if(_a4W_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_yo_];
- throw _a4W_}
- var
- plafond_mensualite_d832_10_3_b=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yN_,Runtime_ocaml_Runtime[13],_a1C_);
- try
- {var
- _a1D_=function(param){return ressources_menage_arrondies},
- _a1E_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yP_,1)},
- _a1F_=caml_call4(Runtime_ocaml_Runtime[62],_yQ_,[0],_a1E_,_a1D_),
- calcul_equivalence_loyer_minim$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yR_,Runtime_ocaml_Runtime[13],_a1F_)}
- catch(_a4V_)
- {_a4V_ = caml_wrap_exception(_a4V_);
- if(_a4V_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_yO_];
- throw _a4V_}
- try
- {var
- _a1G_=function(param){return 0},
- _a1H_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yT_,1)},
- _a1I_=caml_call4(Runtime_ocaml_Runtime[62],_yU_,[0],_a1H_,_a1G_),
- calcul_equivalence_loyer_minim$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yV_,Runtime_ocaml_Runtime[12],_a1I_)}
- catch(_a4U_)
- {_a4U_ = caml_wrap_exception(_a4U_);
- if(_a4U_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_yS_];
- throw _a4U_}
- try
- {var
- _a1J_=function(param){return n_nombre_parts_d832_11},
- _a1K_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yX_,1)},
- _a1L_=caml_call4(Runtime_ocaml_Runtime[62],_yY_,[0],_a1K_,_a1J_),
- calcul_equivalence_loyer_minim$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_yZ_,Runtime_ocaml_Runtime[15],_a1L_)}
- catch(_a4T_)
- {_a4T_ = caml_wrap_exception(_a4T_);
- if(_a4T_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_yW_];
- throw _a4T_}
- var
- _a1M_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_y0_,calcul_equivalence_loyer_minim),
- [0,
- calcul_equivalence_loyer_minim$0,
- calcul_equivalence_loyer_minim$1,
- calcul_equivalence_loyer_minim$2]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_y1_,_a1M_),
- calcul_equivalence_loyer_minim$3=result$1[1];
- try
- {var
- _a1N_=
- function(param)
- {var
- _a4Q_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- coefficient_multiplicateur_d83,
- n_nombre_parts_d832_11),
- _a4R_=
- caml_call2
- (Runtime_ocaml_Runtime[66],ressources_menage_arrondies,_a4Q_),
- _a4S_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$2);
- return caml_call2(Runtime_ocaml_Runtime[86],_a4S_,_a4R_)},
- _a1O_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_y3_,1)},
- _a1P_=caml_call4(Runtime_ocaml_Runtime[62],_y4_,[0],_a1O_,_a1N_)}
- catch(_a4P_)
- {_a4P_ = caml_wrap_exception(_a4P_);
- if(_a4P_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_y2_];
- throw _a4P_}
- var
- coefficient_prise_en_charge_d8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_y5_,Runtime_ocaml_Runtime[15],_a1P_);
- function _a1Q_(param)
- {try
- {var
- _a4B_=
- function(param$0)
- {var
- _a4F_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- ressources_menage_avec_d832_18,
- coefficient_multiplicateur_d83$1),
- _a4G_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _y7_,
- Runtime_ocaml_Runtime[13],
- param),
- _a4H_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _y8_,
- depense_nette_minimale_d832_10),
- _a4G_),
- _a4I_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _y9_,
- Runtime_ocaml_Runtime[13],
- _a4H_),
- _a4J_=caml_call2(Runtime_ocaml_Runtime[27],_y__,_a4I_);
- if(caml_call2(Runtime_ocaml_Runtime[71],_a4J_,_a4F_))
- {var
- _a4K_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _y$_,
- Runtime_ocaml_Runtime[13],
- param),
- _a4L_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _za_,
- depense_nette_minimale_d832_10),
- _a4K_),
- _a4M_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zb_,
- Runtime_ocaml_Runtime[13],
- _a4L_),
- _a4N_=caml_call2(Runtime_ocaml_Runtime[27],_zc_,_a4M_),
- _a4O_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- ressources_menage_avec_d832_18,
- coefficient_multiplicateur_d83$1);
- return caml_call2(Runtime_ocaml_Runtime[68],_a4O_,_a4N_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$261)},
- _a4C_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_zd_,1)},
- _a4D_=caml_call4(Runtime_ocaml_Runtime[62],_ze_,[0],_a4C_,_a4B_);
- return _a4D_}
- catch(_a4E_)
- {_a4E_ = caml_wrap_exception(_a4E_);
- if(_a4E_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_y6_];
- throw _a4E_}}
- var
- abattement_depense_nette_minim=
- caml_call3
- (Runtime_ocaml_Runtime[28],_zf_,Runtime_ocaml_Runtime[10],_a1Q_);
- try
- {var
- _a1R_=function(param){throw Runtime_ocaml_Runtime[2]},
- _a1S_=function(param){return 0},
- _a1T_=
- [0,
- function(param)
- {function _a4o_(param)
- {if(copropriete)
- {var _a4A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$5);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- plafond_mensualite_d832_10_3_b,
- _a4A_)}
- return plafond_mensualite_d832_10_3_b}
- function _a4p_(param)
- {var
- _a4y_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _a4z_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_a4y_);
- return caml_call2(Runtime_ocaml_Runtime[29],_zh_,_a4z_)}
- var
- _a4q_=
- [0,
- function(param)
- {function _a4r_(param)
- {if(copropriete)
- {var _a4x_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- plafond_mensualite_d832_10_3_b,
- _a4x_)}
- return plafond_mensualite_d832_10_3_b}
- function _a4s_(param)
- {var
- _a4t_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _a4u_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_a4t_);
- if(_a4u_)
- var
- _a4v_=caml_call3(Runtime_ocaml_Runtime[56],2020,10,1),
- _a4w_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_a4v_);
- else
- var _a4w_=_a4u_;
- return caml_call2(Runtime_ocaml_Runtime[29],_zi_,_a4w_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_zj_,[0],_a4s_,_a4r_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_zk_,_a4q_,_a4p_,_a4o_)}],
- _a1U_=caml_call4(Runtime_ocaml_Runtime[62],_zl_,_a1T_,_a1S_,_a1R_)}
- catch(_a4n_)
- {_a4n_ = caml_wrap_exception(_a4n_);
- if(_a4n_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_zg_];
- throw _a4n_}
- var
- plafond_mensualite_d832_10_3_c=
- caml_call3
- (Runtime_ocaml_Runtime[28],_zm_,Runtime_ocaml_Runtime[13],_a1U_);
- try
- {var
- _a1V_=function(param){throw Runtime_ocaml_Runtime[2]},
- _a1W_=function(param){return 0},
- _a1X_=
- function(param)
- {function _a4k_(param){return calcul_equivalence_loyer_minim$3}
- function _a4l_(param)
- {switch(type_travaux_logement[0])
- {case 0:var _a4m_=0;break;
- case 1:var _a4m_=1;break;
- default:var _a4m_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_zo_,_a4m_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_zp_,[0],_a4l_,_a4k_)},
- _a1Y_=
- [0,
- function(param)
- {function _a30_(param)
- {var
- _a34_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$14),
- _a35_=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1),
- _a36_=
- caml_call2
- (Runtime_ocaml_Runtime[88],_a35_,n_nombre_parts_d832_11),
- _a37_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[92],_a37_,_a36_))
- var
- _a38_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _a39_=
- caml_call2
- (Runtime_ocaml_Runtime[88],
- _a38_,
- taux_tranche_inferieure_d832_1);
- else
- var
- _a4i_=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1),
- _a4j_=
- caml_call2
- (Runtime_ocaml_Runtime[88],_a4i_,n_nombre_parts_d832_11),
- _a39_=
- caml_call2
- (Runtime_ocaml_Runtime[88],
- _a4j_,
- taux_tranche_inferieure_d832_1);
- var
- _a3__=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1),
- _a3$_=
- caml_call2
- (Runtime_ocaml_Runtime[88],_a3__,n_nombre_parts_d832_11),
- _a4a_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies);
- if(caml_call2(Runtime_ocaml_Runtime[91],_a4a_,_a3$_))
- var
- _a4b_=
- caml_call1
- (Runtime_ocaml_Runtime[45],montant_limite_tranches_d832_1),
- _a4c_=
- caml_call2
- (Runtime_ocaml_Runtime[88],_a4b_,n_nombre_parts_d832_11),
- _a4d_=
- caml_call1
- (Runtime_ocaml_Runtime[45],ressources_menage_arrondies),
- _a4e_=caml_call2(Runtime_ocaml_Runtime[86],_a4d_,_a4c_),
- _a4f_=
- caml_call2
- (Runtime_ocaml_Runtime[88],
- _a4e_,
- taux_tranche_superieure_d832_1);
- else
- var _a4f_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$262);
- var
- _a4g_=caml_call2(Runtime_ocaml_Runtime[85],_a4f_,_a39_),
- _a4h_=caml_call2(Runtime_ocaml_Runtime[89],_a4g_,_a34_);
- return caml_call1(Runtime_ocaml_Runtime[33],_a4h_)}
- function _a31_(param)
- {switch(type_travaux_logement[0])
- {case 0:var _a32_=1;break;
- case 1:var _a32_=0;break;
- default:var _a32_=0}
- if(_a32_)
- var _a33_=_a32_;
- else
- switch(type_travaux_logement[0])
- {case 0:var _a33_=0;break;
- case 1:var _a33_=0;break;
- default:var _a33_=1}
- return caml_call2(Runtime_ocaml_Runtime[29],_zq_,_a33_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_zr_,[0],_a31_,_a30_)},
- _a1X_],
- _a1Z_=caml_call4(Runtime_ocaml_Runtime[62],_zs_,_a1Y_,_a1W_,_a1V_)}
- catch(_a3Z_)
- {_a3Z_ = caml_wrap_exception(_a3Z_);
- if(_a3Z_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_zn_];
- throw _a3Z_}
- var
- mensualite_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_zt_,Runtime_ocaml_Runtime[13],_a1Z_);
- try
- {var
- _a10_=
- function(param)
- {var
- _a3T_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$7),
- _a3U_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$8),
- _a3V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$2),
- _a3W_=
- caml_call2
- (Runtime_ocaml_Runtime[86],
- coefficient_prise_en_charge_d8,
- _a3V_),
- _a3X_=caml_call2(Runtime_ocaml_Runtime[88],_a3W_,_a3U_),
- _a3Y_=caml_call1(Runtime_ocaml_Runtime[44],_a3X_);
- return caml_call2(Runtime_ocaml_Runtime[89],_a3Y_,_a3T_)},
- _a11_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zv_,1)},
- _a12_=caml_call4(Runtime_ocaml_Runtime[62],_zw_,[0],_a11_,_a10_)}
- catch(_a3S_)
- {_a3S_ = caml_wrap_exception(_a3S_);
- if(_a3S_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_zu_];
- throw _a3S_}
- var
- coefficient_prise_en_charge_d8$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_zx_,Runtime_ocaml_Runtime[15],_a12_);
- function _a13_(param)
- {try
- {var
- _a3o_=
- function(param$0)
- {var
- _a3s_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$263),
- _a3t_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zz_,
- Runtime_ocaml_Runtime[13],
- param),
- _a3u_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zA_,
- traitement_aide_finale_minorat),
- _a3t_),
- _a3v_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zB_,
- Runtime_ocaml_Runtime[13],
- _a3u_),
- _a3w_=caml_call2(Runtime_ocaml_Runtime[27],_zC_,_a3v_),
- _a3x_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zD_,
- Runtime_ocaml_Runtime[13],
- _a3w_),
- _a3y_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zE_,
- abattement_depense_nette_minim),
- _a3x_),
- _a3z_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zF_,
- Runtime_ocaml_Runtime[13],
- _a3y_),
- _a3A_=caml_call2(Runtime_ocaml_Runtime[27],_zG_,_a3z_),
- _a3B_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zH_,
- Runtime_ocaml_Runtime[13],
- param),
- _a3C_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zI_,
- traitement_aide_finale_minorat),
- _a3B_),
- _a3D_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zJ_,
- Runtime_ocaml_Runtime[13],
- _a3C_),
- _a3E_=caml_call2(Runtime_ocaml_Runtime[27],_zK_,_a3D_),
- _a3F_=caml_call2(Runtime_ocaml_Runtime[68],_a3E_,_a3A_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_a3F_,_a3s_))
- {var
- _a3G_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zL_,
- Runtime_ocaml_Runtime[13],
- param),
- _a3H_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zM_,
- traitement_aide_finale_minorat),
- _a3G_),
- _a3I_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zN_,
- Runtime_ocaml_Runtime[13],
- _a3H_),
- _a3J_=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_a3I_),
- _a3K_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zP_,
- Runtime_ocaml_Runtime[13],
- _a3J_),
- _a3L_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zQ_,
- abattement_depense_nette_minim),
- _a3K_),
- _a3M_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zR_,
- Runtime_ocaml_Runtime[13],
- _a3L_),
- _a3N_=caml_call2(Runtime_ocaml_Runtime[27],_zS_,_a3M_),
- _a3O_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zT_,
- Runtime_ocaml_Runtime[13],
- param),
- _a3P_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _zU_,
- traitement_aide_finale_minorat),
- _a3O_),
- _a3Q_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _zV_,
- Runtime_ocaml_Runtime[13],
- _a3P_),
- _a3R_=caml_call2(Runtime_ocaml_Runtime[27],_zW_,_a3Q_);
- return caml_call2(Runtime_ocaml_Runtime[68],_a3R_,_a3N_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$264)},
- _a3p_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_zX_,1)},
- _a3q_=caml_call4(Runtime_ocaml_Runtime[62],_zY_,[0],_a3p_,_a3o_);
- return _a3q_}
- catch(_a3r_)
- {_a3r_ = caml_wrap_exception(_a3r_);
- if(_a3r_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_zy_];
- throw _a3r_}}
- var
- traitement_aide_finale_abattem=
- caml_call3
- (Runtime_ocaml_Runtime[28],_zZ_,Runtime_ocaml_Runtime[10],_a13_);
- try
- {var
- _a14_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[74],
- mensualite_principale,
- plafond_mensualite_d832_10_3_c)
- ?plafond_mensualite_d832_10_3_c
- :mensualite_principale},
- _a15_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_z1_,1)},
- _a16_=caml_call4(Runtime_ocaml_Runtime[62],_z2_,[0],_a15_,_a14_)}
- catch(_a3n_)
- {_a3n_ = caml_wrap_exception(_a3n_);
- if(_a3n_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_z0_];
- throw _a3n_}
- var
- mensualite_eligible=
- caml_call3
- (Runtime_ocaml_Runtime[28],_z3_,Runtime_ocaml_Runtime[13],_a16_);
- try
- {var
- _a17_=
- function(param)
- {var _a3m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$3);
- return caml_call2
- (Runtime_ocaml_Runtime[91],
- coefficient_prise_en_charge_d8$0,
- _a3m_)
- ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$4)
- :coefficient_prise_en_charge_d8$0},
- _a18_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_z5_,1)},
- _a19_=caml_call4(Runtime_ocaml_Runtime[62],_z6_,[0],_a18_,_a17_)}
- catch(_a3l_)
- {_a3l_ = caml_wrap_exception(_a3l_);
- if(_a3l_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_z4_];
- throw _a3l_}
- var
- coefficient_prise_en_charge_d8$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_z7_,Runtime_ocaml_Runtime[15],_a19_);
- function _a1__(param)
- {try
- {var
- _a2v_=
- function(param$0)
- {var
- _a2z_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$265),
- _a2A_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _z9_,
- Runtime_ocaml_Runtime[13],
- param),
- _a2B_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _z__,
- traitement_aide_finale_abattem),
- _a2A_),
- _a2C_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _z$_,
- Runtime_ocaml_Runtime[13],
- _a2B_),
- _a2D_=caml_call2(Runtime_ocaml_Runtime[27],_Aa_,_a2C_),
- _a2E_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ab_,
- Runtime_ocaml_Runtime[13],
- _a2D_),
- _a2F_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ac_,
- contributions_sociales_dot_mon),
- _a2E_),
- _a2G_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ad_,
- Runtime_ocaml_Runtime[13],
- _a2F_),
- _a2H_=caml_call2(Runtime_ocaml_Runtime[27],_Ae_,_a2G_),
- _a2I_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$3),
- _a2J_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Af_,
- Runtime_ocaml_Runtime[13],
- param),
- _a2K_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ag_,
- traitement_aide_finale_abattem),
- _a2J_),
- _a2L_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ah_,
- Runtime_ocaml_Runtime[13],
- _a2K_),
- _a2M_=caml_call2(Runtime_ocaml_Runtime[27],_Ai_,_a2L_),
- _a2N_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Aj_,
- Runtime_ocaml_Runtime[13],
- _a2M_),
- _a2O_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ak_,
- contributions_sociales_dot_mon),
- _a2N_),
- _a2P_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Al_,
- Runtime_ocaml_Runtime[13],
- _a2O_),
- _a2Q_=caml_call2(Runtime_ocaml_Runtime[27],_Am_,_a2P_),
- _a2R_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _An_,
- Runtime_ocaml_Runtime[13],
- param),
- _a2S_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ao_,
- traitement_aide_finale_abattem),
- _a2R_),
- _a2T_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ap_,
- Runtime_ocaml_Runtime[13],
- _a2S_),
- _a2U_=caml_call2(Runtime_ocaml_Runtime[27],_Aq_,_a2T_),
- _a2V_=caml_call2(Runtime_ocaml_Runtime[68],_a2U_,_a2Q_),
- _a2W_=caml_call2(Runtime_ocaml_Runtime[68],_a2V_,_a2I_),
- _a2X_=caml_call1(Runtime_ocaml_Runtime[38],_a2W_),
- _a2Y_=caml_call2(Runtime_ocaml_Runtime[67],_a2X_,_a2H_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_a2Y_,_a2z_))
- {var
- _a2Z_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ar_,
- Runtime_ocaml_Runtime[13],
- param),
- _a20_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _As_,
- traitement_aide_finale_abattem),
- _a2Z_),
- _a21_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _At_,
- Runtime_ocaml_Runtime[13],
- _a20_),
- _a22_=caml_call2(Runtime_ocaml_Runtime[27],_Au_,_a21_),
- _a23_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Av_,
- Runtime_ocaml_Runtime[13],
- _a22_),
- _a24_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Aw_,
- contributions_sociales_dot_mon),
- _a23_),
- _a25_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ax_,
- Runtime_ocaml_Runtime[13],
- _a24_),
- _a26_=caml_call2(Runtime_ocaml_Runtime[27],_Ay_,_a25_),
- _a27_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$4),
- _a28_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Az_,
- Runtime_ocaml_Runtime[13],
- param),
- _a29_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _AA_,
- traitement_aide_finale_abattem),
- _a28_),
- _a2__=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AB_,
- Runtime_ocaml_Runtime[13],
- _a29_),
- _a2$_=caml_call2(Runtime_ocaml_Runtime[27],_AC_,_a2__),
- _a3a_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AD_,
- Runtime_ocaml_Runtime[13],
- _a2$_),
- _a3b_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _AE_,
- contributions_sociales_dot_mon),
- _a3a_),
- _a3c_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AF_,
- Runtime_ocaml_Runtime[13],
- _a3b_),
- _a3d_=caml_call2(Runtime_ocaml_Runtime[27],_AG_,_a3c_),
- _a3e_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AH_,
- Runtime_ocaml_Runtime[13],
- param),
- _a3f_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _AI_,
- traitement_aide_finale_abattem),
- _a3e_),
- _a3g_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AJ_,
- Runtime_ocaml_Runtime[13],
- _a3f_),
- _a3h_=caml_call2(Runtime_ocaml_Runtime[27],_AK_,_a3g_),
- _a3i_=caml_call2(Runtime_ocaml_Runtime[68],_a3h_,_a3d_),
- _a3j_=caml_call2(Runtime_ocaml_Runtime[68],_a3i_,_a27_),
- _a3k_=caml_call1(Runtime_ocaml_Runtime[38],_a3j_);
- return caml_call2(Runtime_ocaml_Runtime[67],_a3k_,_a26_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$266)},
- _a2w_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_AL_,1)},
- _a2x_=caml_call4(Runtime_ocaml_Runtime[62],_AM_,[0],_a2w_,_a2v_);
- return _a2x_}
- catch(_a2y_)
- {_a2y_ = caml_wrap_exception(_a2y_);
- if(_a2y_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_z8_];
- throw _a2y_}}
- var
- traitement_aide_finale_contrib=
- caml_call3
- (Runtime_ocaml_Runtime[28],_AN_,Runtime_ocaml_Runtime[10],_a1__);
- try
- {var
- _a1$_=
- function(param)
- {var
- _a2p_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$267),
- _a2q_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- mensualite_eligible,
- montant_forfaitaire_charges_d8),
- _a2r_=
- caml_call2(Runtime_ocaml_Runtime[68],_a2q_,mensualite_minimale),
- _a2s_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- _a2r_,
- coefficient_prise_en_charge_d8$1);
- if(caml_call2(Runtime_ocaml_Runtime[73],_a2s_,_a2p_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$268);
- var
- _a2t_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- mensualite_eligible,
- montant_forfaitaire_charges_d8),
- _a2u_=
- caml_call2(Runtime_ocaml_Runtime[68],_a2t_,mensualite_minimale);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- _a2u_,
- coefficient_prise_en_charge_d8$1)},
- _a2a_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AP_,1)},
- _a2b_=caml_call4(Runtime_ocaml_Runtime[62],_AQ_,[0],_a2a_,_a1$_)}
- catch(_a2o_)
- {_a2o_ = caml_wrap_exception(_a2o_);
- if(_a2o_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_AO_];
- throw _a2o_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_AR_,Runtime_ocaml_Runtime[13],_a2b_);
- function _a2c_(param)
- {try
- {var
- _a2d_=
- function(param$0)
- {var
- _a2h_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AT_,
- Runtime_ocaml_Runtime[13],
- param),
- _a2i_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _AU_,
- traitement_aide_finale_contrib),
- _a2h_),
- _a2j_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AV_,
- Runtime_ocaml_Runtime[13],
- _a2i_),
- _a2k_=caml_call2(Runtime_ocaml_Runtime[27],_AW_,_a2j_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _a2k_,
- montant_minimal_aide_d832_10))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$269);
- var
- _a2l_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AX_,
- Runtime_ocaml_Runtime[13],
- param),
- _a2m_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _AY_,
- traitement_aide_finale_contrib),
- _a2l_),
- _a2n_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _AZ_,
- Runtime_ocaml_Runtime[13],
- _a2m_);
- return caml_call2(Runtime_ocaml_Runtime[27],_A0_,_a2n_)},
- _a2e_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_A1_,1)},
- _a2f_=caml_call4(Runtime_ocaml_Runtime[62],_A2_,[0],_a2e_,_a2d_);
- return _a2f_}
- catch(_a2g_)
- {_a2g_ = caml_wrap_exception(_a2g_);
- if(_a2g_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_AS_];
- throw _a2g_}}
- var
- traitement_aide_finale_montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_A3_,Runtime_ocaml_Runtime[10],_a2c_);
- return [0,
- mensualite_eligible,
- mensualite_minimale,
- coefficient_prise_en_charge_d8$1,
- aide_finale_formule,
- traitement_aide_finale_montant]}
- function eligibilite_aides_personnelle_(eligibilite_aides_personnelle_)
- {var
- menage=eligibilite_aides_personnelle_[1],
- demandeur=eligibilite_aides_personnelle_[2],
- date_courante=eligibilite_aides_personnelle_[3],
- condition_logement_residence_p=eligibilite_aides_personnelle_[4],
- condition_logement_surface=eligibilite_aides_personnelle_[5];
- function _aV6_(param)
- {try
- {var
- _a0H_=function(param){return 0},
- _a0I_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_A5_,1)},
- _a0J_=caml_call4(Runtime_ocaml_Runtime[62],_A6_,[0],_a0I_,_a0H_);
- return _a0J_}
- catch(_a0K_)
- {_a0K_ = caml_wrap_exception(_a0K_);
- if(_a0K_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_A4_];
- throw _a0K_}}
- caml_call3
- (Runtime_ocaml_Runtime[28],_A7_,Runtime_ocaml_Runtime[10],_aV6_);
- try
- {var
- _aV7_=function(param){return 0},
- _aV8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A9_,1)},
- _aV9_=caml_call4(Runtime_ocaml_Runtime[62],_A__,[0],_aV8_,_aV7_)}
- catch(_a0G_)
- {_a0G_ = caml_wrap_exception(_a0G_);
- if(_a0G_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_A8_];
- throw _a0G_}
- var
- condition_peuplement_logement_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_A$_,Runtime_ocaml_Runtime[12],_aV9_);
- try
- {var
- _aV__=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1)},
- _aV$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bb_,1)},
- _aWa_=caml_call4(Runtime_ocaml_Runtime[62],_Bc_,[0],_aV$_,_aV__)}
- catch(_a0F_)
- {_a0F_ = caml_wrap_exception(_a0F_);
- if(_a0F_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ba_];
- throw _a0F_}
- var
- seuil_l822_3_parts_propriete=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bd_,Runtime_ocaml_Runtime[15],_aWa_);
- try
- {var
- _aWb_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1$0)},
- _aWc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bf_,1)},
- _aWd_=caml_call4(Runtime_ocaml_Runtime[62],_Bg_,[0],_aWc_,_aWb_)}
- catch(_a0E_)
- {_a0E_ = caml_wrap_exception(_a0E_);
- if(_a0E_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Be_];
- throw _a0E_}
- var
- seuil_l822_3_parts_usufruit=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bh_,Runtime_ocaml_Runtime[15],_aWd_);
- try
- {var
- _aWe_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_3000000)},
- _aWf_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bj_,1)},
- _aWg_=caml_call4(Runtime_ocaml_Runtime[62],_Bk_,[0],_aWf_,_aWe_)}
- catch(_a0D_)
- {_a0D_ = caml_wrap_exception(_a0D_);
- if(_a0D_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Bi_];
- throw _a0D_}
- var
- seuil_l822_5_patrimoine=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bl_,Runtime_ocaml_Runtime[13],_aWg_);
- try
- {var
- _aWh_=
- function(param)
- {var _a0C_=0 === menage[2][4][0]?1:0;
- return _a0C_?_a0C_:0 === menage[2][6][0]?1:0},
- _aWi_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bn_,1)},
- _aWj_=caml_call4(Runtime_ocaml_Runtime[62],_Bo_,[0],_aWi_,_aWh_)}
- catch(_a0B_)
- {_a0B_ = caml_wrap_exception(_a0B_);
- if(_a0B_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Bm_];
- throw _a0B_}
- var
- usufruit_ou_propriete_famille=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bp_,Runtime_ocaml_Runtime[12],_aWj_);
- try
- {var
- _aWk_=
- function(param)
- {var
- _a0x_=caml_call1(Runtime_ocaml_Runtime[113],menage[3]),
- _a0y_=menage[4];
- switch(menage[5][0])
- {case 0:
- var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$190);
- break;
- case 1:
- var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$34);break;
- case 2:
- var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$35);break;
- case 3:
- var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$36);break;
- case 4:
- var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$191);
- break;
- default:var _a0z_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$37)}
- var _a0A_=caml_call2(Runtime_ocaml_Runtime[75],_a0z_,_a0y_);
- return caml_call2(Runtime_ocaml_Runtime[75],_a0A_,_a0x_)},
- _aWl_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Br_,1)},
- _aWm_=caml_call4(Runtime_ocaml_Runtime[62],_Bs_,[0],_aWl_,_aWk_)}
- catch(_a0w_)
- {_a0w_ = caml_wrap_exception(_a0w_);
- if(_a0w_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Bq_];
- throw _a0w_}
- var
- nombre_personnes_logement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bt_,Runtime_ocaml_Runtime[14],_aWm_);
- try
- {var
- _aWn_=function(param){return 0},
- _aWo_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bv_,1)},
- _aWp_=
- [0,
- function(param)
- {function _a0u_(param){return 1}
- function _a0v_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_Bw_,1 - menage[2][7])}
- return caml_call4(Runtime_ocaml_Runtime[62],_Bx_,[0],_a0v_,_a0u_)}],
- _aWq_=caml_call4(Runtime_ocaml_Runtime[62],_By_,_aWp_,_aWo_,_aWn_)}
- catch(_a0t_)
- {_a0t_ = caml_wrap_exception(_a0t_);
- if(_a0t_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Bu_];
- throw _a0t_}
- var
- condition_non_ouverture_l822_9=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Bz_,Runtime_ocaml_Runtime[12],_aWq_);
- try
- {var
- _aWr_=function(param){return 0},
- _aWs_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BB_,1)},
- _aWt_=
- [0,
- function(param)
- {function _a0r_(param){return 1}
- function _a0s_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_BC_,menage[6])}
- return caml_call4(Runtime_ocaml_Runtime[62],_BD_,[0],_a0s_,_a0r_)}],
- _aWu_=caml_call4(Runtime_ocaml_Runtime[62],_BE_,_aWt_,_aWs_,_aWr_)}
- catch(_a0q_)
- {_a0q_ = caml_wrap_exception(_a0q_);
- if(_a0q_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_BA_];
- throw _a0q_}
- var
- condition_non_ouverture_l822_8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_BF_,Runtime_ocaml_Runtime[12],_aWu_);
- try
- {var
- _aWv_=
- function(param)
- {var
- _a0l_=caml_call1(Runtime_ocaml_Runtime[46],cst_9),
- _a0m_=caml_call1(Runtime_ocaml_Runtime[113],menage[3]),
- _a0n_=caml_call2(Runtime_ocaml_Runtime[75],menage[4],_a0m_),
- _a0o_=caml_call2(Runtime_ocaml_Runtime[78],_a0n_,_a0l_);
- switch(menage[5][0])
- {case 0:
- var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$0);break;
- case 1:
- var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$2);break;
- case 2:
- var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$3);break;
- case 3:
- var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$4);break;
- case 4:
- var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$1);break;
- default:var _a0p_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$5)}
- return caml_call2(Runtime_ocaml_Runtime[75],_a0p_,_a0o_)},
- _aWw_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BH_,1)},
- _aWx_=caml_call4(Runtime_ocaml_Runtime[62],_BI_,[0],_aWw_,_aWv_)}
- catch(_a0k_)
- {_a0k_ = caml_wrap_exception(_a0k_);
- if(_a0k_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_BG_];
- throw _a0k_}
- var
- condition_logement_surface_min=
- caml_call3
- (Runtime_ocaml_Runtime[28],_BJ_,Runtime_ocaml_Runtime[14],_aWx_);
- try
- {var
- _aWy_=function(param){return 0},
- _aWz_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BL_,1)},
- _aWA_=
- [0,
- function(param)
- {function _aZ$_(param){return 0}
- function _a0a_(param)
- {var _a0j_=0 === menage[2][5][0]?1:0;
- return caml_call2(Runtime_ocaml_Runtime[29],_BM_,_a0j_)}
- var
- _a0b_=
- [0,
- function(param)
- {function _a0c_(param){return 1}
- function _a0d_(param)
- {var _a0e_=menage[2][5];
- if(0 === _a0e_[0])
- var _a0f_=1;
- else
- var
- personne=_a0e_[1],
- _a0g_=caml_call1(Runtime_ocaml_Runtime[46],cst_30),
- _a0h_=
- caml_call2(Runtime_ocaml_Runtime[82],personne[1],_a0g_),
- _a0i_=_a0h_ || personne[2],
- _a0f_=_a0i_;
- return caml_call2(Runtime_ocaml_Runtime[29],_BN_,_a0f_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_BO_,[0],_a0d_,_a0c_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_BP_,_a0b_,_a0a_,_aZ$_)}],
- _aWB_=caml_call4(Runtime_ocaml_Runtime[62],_BQ_,_aWA_,_aWz_,_aWy_)}
- catch(_aZ__)
- {_aZ__ = caml_wrap_exception(_aZ__);
- if(_aZ__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_BK_];
- throw _aZ__}
- var
- condition_logement_location_ti=
- caml_call3
- (Runtime_ocaml_Runtime[28],_BR_,Runtime_ocaml_Runtime[12],_aWB_);
- try
- {var
- _aWC_=
- function(param)
- {function _aZ5_(param){return 0}
- function _aZ6_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_BT_,1)}
- var
- _aZ7_=
- [0,
- function(param)
- {function _aZ8_(param){return 1}
- function _aZ9_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_BU_,menage[2][1])}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_BV_,[0],_aZ9_,_aZ8_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_BW_,_aZ7_,_aZ6_,_aZ5_)},
- _aWD_=function(param){return 1},
- _aWE_=
- [0,
- function(param)
- {return caml_call1(condition_logement_residence_p,0)}],
- _aWF_=caml_call4(Runtime_ocaml_Runtime[62],_BX_,_aWE_,_aWD_,_aWC_)}
- catch(_aZ4_)
- {_aZ4_ = caml_wrap_exception(_aZ4_);
- if(_aZ4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_BS_];
- throw _aZ4_}
- var
- condition_logement_residence_p$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_BY_,Runtime_ocaml_Runtime[12],_aWF_);
- try
- {var
- _aWG_=function(param){return demandeur[3]},
- _aWH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B0_,1)},
- _aWI_=caml_call4(Runtime_ocaml_Runtime[62],_B1_,[0],_aWH_,_aWG_),
- ouverture_droits_retraite_dot_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_B2_,Runtime_ocaml_Runtime[16],_aWI_)}
- catch(_aZ3_)
- {_aZ3_ = caml_wrap_exception(_aZ3_);
- if(_aZ3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_BZ_];
- throw _aZ3_}
- var
- _aWJ_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_B3_,ouverture_droits_retraite),
- [0,ouverture_droits_retraite_dot_]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_B4_,_aWJ_),
- ouverture_droits_retraite_dot_$0=result[1];
- try
- {var
- _aWK_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[67],demandeur[6][1],demandeur[6][2])},
- _aWL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B6_,1)},
- _aWM_=caml_call4(Runtime_ocaml_Runtime[62],_B7_,[0],_aWL_,_aWK_)}
- catch(_aZ2_)
- {_aZ2_ = caml_wrap_exception(_aZ2_);
- if(_aZ2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_B5_];
- throw _aZ2_}
- var
- patrimoine_total_demandeur=
- caml_call3
- (Runtime_ocaml_Runtime[28],_B8_,Runtime_ocaml_Runtime[13],_aWM_);
- try
- {var
- _aWN_=function(param){return 0},
- _aWO_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B__,1)},
- _aWP_=
- [0,
- function(param)
- {function _aZZ_(param){return 1}
- function _aZ0_(param)
- {var _aZ1_=0 === demandeur[5][0]?1:demandeur[1];
- return caml_call2(Runtime_ocaml_Runtime[29],_B$_,_aZ1_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Ca_,[0],_aZ0_,_aZZ_)}],
- _aWQ_=caml_call4(Runtime_ocaml_Runtime[62],_Cb_,_aWP_,_aWO_,_aWN_)}
- catch(_aZY_)
- {_aZY_ = caml_wrap_exception(_aZY_);
- if(_aZY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_B9_];
- throw _aZY_}
- var
- condition_nationalite=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Cc_,Runtime_ocaml_Runtime[12],_aWQ_);
- try
- {var
- _aWR_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aWS_=function(param){return 0},
- _aWT_=
- function(param)
- {function _aZS_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1088175)}
- function _aZT_(param)
- {var
- _aZU_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _aZV_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZU_);
- if(_aZV_)
- var
- _aZW_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _aZX_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZW_);
- else
- var _aZX_=_aZV_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Ce_,_aZX_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Cf_,[0],_aZT_,_aZS_)},
- _aWU_=
- function(param)
- {function _aZM_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1100144)}
- function _aZN_(param)
- {var
- _aZO_=caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _aZP_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZO_);
- if(_aZP_)
- var
- _aZQ_=caml_call3(Runtime_ocaml_Runtime[56],2023,1,1),
- _aZR_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZQ_);
- else
- var _aZR_=_aZP_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Cg_,_aZR_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Ch_,[0],_aZN_,_aZM_)},
- _aWV_=
- function(param)
- {function _aZG_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1083840)}
- function _aZH_(param)
- {var
- _aZI_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,4),
- _aZJ_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZI_);
- if(_aZJ_)
- var
- _aZK_=caml_call3(Runtime_ocaml_Runtime[56],2021,1,1),
- _aZL_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZK_);
- else
- var _aZL_=_aZJ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,_aZL_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Cj_,[0],_aZH_,_aZG_)},
- _aWW_=
- function(param)
- {function _aZA_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1041840)}
- function _aZB_(param)
- {var
- _aZC_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _aZD_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZC_);
- if(_aZD_)
- var
- _aZE_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aZF_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZE_);
- else
- var _aZF_=_aZD_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Ck_,_aZF_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Cl_,[0],_aZB_,_aZA_)},
- _aWX_=
- [0,
- function(param)
- {function _aZu_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_999840)}
- function _aZv_(param)
- {var
- _aZw_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,4),
- _aZx_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aZw_);
- if(_aZx_)
- var
- _aZy_=caml_call3(Runtime_ocaml_Runtime[56],2019,1,1),
- _aZz_=
- caml_call2(Runtime_ocaml_Runtime[101],date_courante,_aZy_);
- else
- var _aZz_=_aZx_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Cm_,_aZz_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Cn_,[0],_aZv_,_aZu_)},
- _aWW_,
- _aWV_,
- _aWU_,
- _aWT_],
- _aWY_=caml_call4(Runtime_ocaml_Runtime[62],_Co_,_aWX_,_aWS_,_aWR_)}
- catch(_aZt_)
- {_aZt_ = caml_wrap_exception(_aZt_);
- if(_aZt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Cd_];
- throw _aZt_}
- var
- plafond_individuel_l815_9_secu=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Cp_,Runtime_ocaml_Runtime[13],_aWY_);
- try
- {var
- _aWZ_=function(param){return 0},
- _aW0_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cr_,1)},
- _aW1_=
- [0,
- function(param)
- {function _aZr_(param){return 1}
- function _aZs_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _Cs_,
- condition_peuplement_logement_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Ct_,[0],_aZs_,_aZr_)}],
- _aW2_=caml_call4(Runtime_ocaml_Runtime[62],_Cu_,_aW1_,_aW0_,_aWZ_)}
- catch(_aZq_)
- {_aZq_ = caml_wrap_exception(_aZq_);
- if(_aZq_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Cq_];
- throw _aZq_}
- var
- condition_non_ouverture_l822_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Cv_,Runtime_ocaml_Runtime[12],_aW2_);
- try
- {var
- _aW3_=function(param){return 0},
- _aW4_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cx_,1)},
- _aW5_=
- [0,
- function(param)
- {function _aZd_(param){return 1}
- function _aZe_(param)
- {switch(menage[2][3][0])
- {case 0:var _aZp_=1;break;
- case 1:var _aZp_=1;break;
- case 2:var _aZp_=menage[2][1];break;
- case 3:var _aZp_=1;break;
- default:var _aZp_=1}
- return caml_call2(Runtime_ocaml_Runtime[29],_Cy_,_aZp_)}
- var
- _aZf_=
- [0,
- function(param)
- {function _aZg_(param){return 0}
- function _aZh_(param)
- {switch(menage[2][3][0])
- {case 0:
- var
- usufruit_ou_propriete_famille$0=
- usufruit_ou_propriete_famille;
- break;
- case 1:var usufruit_ou_propriete_famille$0=0;break;
- case 2:var usufruit_ou_propriete_famille$0=0;break;
- case 3:var usufruit_ou_propriete_famille$0=0;break;
- default:var usufruit_ou_propriete_famille$0=0}
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _Cz_,
- usufruit_ou_propriete_famille$0)}
- var
- _aZi_=
- [0,
- function(param)
- {function _aZj_(param){return 1}
- function _aZk_(param)
- {if(usufruit_ou_propriete_famille)
- {var _aZl_=menage[2][4];
- if(0 === _aZl_[0])
- var parts=_aZl_[1],parts$0=parts;
- else
- var parts$0=caml_call1(Runtime_ocaml_Runtime[39],cst_0$271);
- var
- _aZm_=
- caml_call2
- (Runtime_ocaml_Runtime[94],
- parts$0,
- seuil_l822_3_parts_propriete);
- if(_aZm_)
- {var _aZn_=menage[2][6];
- if(0 === _aZn_[0])
- var parts$1=_aZn_[1],parts$2=parts$1;
- else
- var parts$2=caml_call1(Runtime_ocaml_Runtime[39],cst_0$270);
- var
- _aZo_=
- caml_call2
- (Runtime_ocaml_Runtime[94],
- parts$2,
- seuil_l822_3_parts_usufruit)}
- else
- var _aZo_=_aZm_}
- else
- var _aZo_=usufruit_ou_propriete_famille;
- return caml_call2(Runtime_ocaml_Runtime[29],_CA_,_aZo_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CB_,[0],_aZk_,_aZj_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CC_,_aZi_,_aZh_,_aZg_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CD_,_aZf_,_aZe_,_aZd_)}],
- _aW6_=caml_call4(Runtime_ocaml_Runtime[62],_CE_,_aW5_,_aW4_,_aW3_)}
- catch(_aZc_)
- {_aZc_ = caml_wrap_exception(_aZc_);
- if(_aZc_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Cw_];
- throw _aZc_}
- var
- condition_logement_mode_occupa=
- caml_call3
- (Runtime_ocaml_Runtime[28],_CF_,Runtime_ocaml_Runtime[12],_aW6_);
- try
- {var
- _aW7_=
- function(param)
- {function _aY5_(param){return 0}
- function _aY6_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_CH_,1)}
- var
- _aY7_=
- [0,
- function(param)
- {function _aY8_(param){return 1}
- function _aY9_(param)
- {var
- _aY__=caml_call1(Runtime_ocaml_Runtime[46],cst_70),
- switch$0=0;
- if
- (caml_call2
- (Runtime_ocaml_Runtime[81],
- condition_logement_surface_min,
- _aY__))
- {var _aY$_=caml_call1(Runtime_ocaml_Runtime[46],cst_8);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[81],nombre_personnes_logement,_aY$_))
- {var
- _aZa_=caml_call1(Runtime_ocaml_Runtime[46],cst_70$0),
- _aZb_=
- caml_call2(Runtime_ocaml_Runtime[81],menage[2][8],_aZa_);
- switch$0 = 1}}
- if(! switch$0)
- var
- _aZb_=
- caml_call2
- (Runtime_ocaml_Runtime[81],
- menage[2][8],
- condition_logement_surface_min);
- return caml_call2(Runtime_ocaml_Runtime[29],_CI_,_aZb_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CJ_,[0],_aY9_,_aY8_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CK_,_aY7_,_aY6_,_aY5_)},
- _aW8_=function(param){return 1},
- _aW9_=
- [0,function(param){return caml_call1(condition_logement_surface,0)}],
- _aW__=caml_call4(Runtime_ocaml_Runtime[62],_CL_,_aW9_,_aW8_,_aW7_)}
- catch(_aY4_)
- {_aY4_ = caml_wrap_exception(_aY4_);
- if(_aY4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_CG_];
- throw _aY4_}
- var
- condition_logement_surface$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_CM_,Runtime_ocaml_Runtime[12],_aW__);
- try
- {var
- _aW$_=function(param){return ouverture_droits_retraite_dot_$0},
- _aXa_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CO_,1)},
- _aXb_=caml_call4(Runtime_ocaml_Runtime[62],_CP_,[0],_aXa_,_aW$_)}
- catch(_aY3_)
- {_aY3_ = caml_wrap_exception(_aY3_);
- if(_aY3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_CN_];
- throw _aY3_}
- var
- age_l161_17_2_secu=
- caml_call3
- (Runtime_ocaml_Runtime[28],_CQ_,Runtime_ocaml_Runtime[17],_aXb_);
- try
- {var
- _aXc_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[74],
- patrimoine_total_demandeur,
- seuil_l822_5_patrimoine)
- ?patrimoine_total_demandeur
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$272)},
- _aXd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CS_,1)},
- _aXe_=
- [0,
- function(param)
- {function _aYP_(param){return demandeur[6][2]}
- function _aYQ_(param)
- {var
- _aY2_=
- caml_call2
- (Runtime_ocaml_Runtime[72],
- patrimoine_total_demandeur,
- seuil_l822_5_patrimoine);
- return caml_call2(Runtime_ocaml_Runtime[29],_CT_,_aY2_)}
- var
- _aYR_=
- [0,
- function(param)
- {function _aYS_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$273)}
- function _aYT_(param)
- {var _aYX_=menage[1],_aYY_=0;
- function _aYZ_(acc,prestation)
- {if(acc)
- var acc$0=acc;
- else
- var
- _aY1_=caml_equal(prestation,_CU_),
- acc$0=_aY1_ || caml_equal(prestation,_CV_);
- return acc$0}
- var _aY0_=caml_call3(Stdlib_Array[17],_aYZ_,_aYY_,_aYX_);
- return caml_call2(Runtime_ocaml_Runtime[29],_CW_,_aY0_)}
- var
- _aYU_=
- [0,
- function(param)
- {function _aYV_(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$274)}
- function _aYW_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_CX_,menage[2][2])}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CY_,[0],_aYW_,_aYV_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_CZ_,_aYU_,_aYT_,_aYS_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_C0_,_aYR_,_aYQ_,_aYP_)}],
- _aXf_=caml_call4(Runtime_ocaml_Runtime[62],_C1_,_aXe_,_aXd_,_aXc_)}
- catch(_aYO_)
- {_aYO_ = caml_wrap_exception(_aYO_);
- if(_aYO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_CR_];
- throw _aYO_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_C2_,Runtime_ocaml_Runtime[13],_aXf_);
- try
- {var
- _aXg_=function(param){return 0},
- _aXh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C4_,1)},
- _aXi_=
- [0,
- function(param)
- {function _aYJ_(param){return 1}
- function _aYK_(param)
- {var
- condition_logement_surface=
- condition_logement_residence_p$0
- ?condition_logement_mode_occupa
- ?condition_logement_location_ti
- ?condition_logement_surface$0
- :condition_logement_location_ti
- :condition_logement_mode_occupa
- :condition_logement_residence_p$0;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_C5_,condition_logement_surface)}
- var
- _aYL_=
- [0,
- function(param)
- {function _aYM_(param){return 0}
- function _aYN_(param)
- {var
- condition_non_ouverture_l822_8$0=
- condition_non_ouverture_l822_8
- ||
- condition_non_ouverture_l822_9
- ||
- condition_non_ouverture_l822_1;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _C6_,
- condition_non_ouverture_l822_8$0)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_C7_,[0],_aYN_,_aYM_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_C8_,_aYL_,_aYK_,_aYJ_)}],
- _aXj_=caml_call4(Runtime_ocaml_Runtime[62],_C9_,_aXi_,_aXh_,_aXg_)}
- catch(_aYI_)
- {_aYI_ = caml_wrap_exception(_aYI_);
- if(_aYI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_C3_];
- throw _aYI_}
- var
- eligibilite_logement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_C__,Runtime_ocaml_Runtime[12],_aXj_);
- try
- {var
- _aXk_=
- function(param)
- {var _aYH_=caml_call3(Runtime_ocaml_Runtime[59],5,0,0);
- return caml_call2
- (Runtime_ocaml_Runtime[102],age_l161_17_2_secu,_aYH_)},
- _aXl_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Da_,1)},
- _aXm_=caml_call4(Runtime_ocaml_Runtime[62],_Db_,[0],_aXl_,_aXk_)}
- catch(_aYG_)
- {_aYG_ = caml_wrap_exception(_aYG_);
- if(_aYG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_C$_];
- throw _aYG_}
- var
- age_l351_8_1_secu=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Dc_,Runtime_ocaml_Runtime[17],_aXm_);
- try
- {var
- _aXn_=function(param){return 0},
- _aXo_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_De_,1)},
- _aXp_=
- [0,
- function(param)
- {function _aYE_(param){return 1}
- function _aYF_(param)
- {var
- eligibilite_logement$0=
- condition_nationalite
- ?condition_logement_mode_occupa
- ?eligibilite_logement
- :condition_logement_mode_occupa
- :condition_nationalite;
- return caml_call2
- (Runtime_ocaml_Runtime[29],_Df_,eligibilite_logement$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Dg_,[0],_aYF_,_aYE_)}],
- _aXq_=caml_call4(Runtime_ocaml_Runtime[62],_Dh_,_aXp_,_aXo_,_aXn_)}
- catch(_aYD_)
- {_aYD_ = caml_wrap_exception(_aYD_);
- if(_aYD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Dd_];
- throw _aYD_}
- var
- eligibilite=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Di_,Runtime_ocaml_Runtime[12],_aXq_);
- function _aXr_(param)
- {try
- {var
- _aYi_=function(param){return 0},
- _aYj_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Dk_,1)},
- _aYk_=
- [0,
- function(param$0)
- {function _aYn_(param){return 1}
- function _aYo_(param$0)
- {if(0 === param[0])
- var _aYp_=0;
- else
- {var parent=param[1],_aYq_=caml_equal(parent[4],_Dm_);
- if(_aYq_)
- {var
- _aYr_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25),
- _aYs_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- plafond_individuel_l815_9_secu,
- _aYr_),
- _aYt_=caml_call2(Runtime_ocaml_Runtime[71],parent[2],_aYs_);
- if(_aYt_)
- {var
- _aYu_=
- caml_call2
- (Runtime_ocaml_Runtime[95],parent[1],age_l351_8_1_secu),
- _aYv_=
- caml_call2(Runtime_ocaml_Runtime[99],_aYu_,date_courante);
- if(_aYv_)
- var _aYw_=_aYv_;
- else
- {var _aYA_=parent[7];
- if(_aYA_)
- var
- _aYB_=caml_call3(Runtime_ocaml_Runtime[59],65,0,0),
- _aYC_=caml_call2(Runtime_ocaml_Runtime[95],parent[1],_aYB_),
- _aYw_=
- caml_call2(Runtime_ocaml_Runtime[99],_aYC_,date_courante);
- else
- var _aYw_=_aYA_}
- if(_aYw_)
- var _aYx_=_aYw_;
- else
- var
- _aYy_=
- caml_call2
- (Runtime_ocaml_Runtime[95],parent[1],age_l161_17_2_secu),
- _aYz_=
- caml_call2(Runtime_ocaml_Runtime[99],_aYy_,date_courante),
- _aYx_=_aYz_?parent[6]:_aYz_}
- else
- var _aYx_=_aYt_}
- else
- var _aYx_=_aYq_;
- var _aYp_=_aYx_}
- return caml_call2(Runtime_ocaml_Runtime[29],_Dl_,_aYp_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Dn_,[0],_aYo_,_aYn_)}],
- _aYl_=caml_call4(Runtime_ocaml_Runtime[62],_Do_,_aYk_,_aYj_,_aYi_);
- return _aYl_}
- catch(_aYm_)
- {_aYm_ = caml_wrap_exception(_aYm_);
- if(_aYm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Dj_];
- throw _aYm_}}
- var
- condition_2_r823_4=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Dp_,Runtime_ocaml_Runtime[10],_aXr_);
- function _aXs_(param)
- {try
- {var
- _aXW_=function(param){return 0},
- _aXX_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Dr_,1)},
- _aXY_=
- function(param$0)
- {function _aYe_(param){return 1}
- function _aYf_(param$0)
- {if(0 === param[0])
- var
- enfant=param[1],
- _aYg_=caml_call1(Runtime_ocaml_Runtime[46],cst_21),
- _aYh_=caml_call2(Runtime_ocaml_Runtime[82],enfant[8],_aYg_);
- else
- var _aYh_=0;
- return caml_call2(Runtime_ocaml_Runtime[29],_Ds_,_aYh_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Dt_,[0],_aYf_,_aYe_)},
- _aXZ_=
- [0,
- function(param$0)
- {function _aX2_(param){return 1}
- function _aX3_(param$0)
- {var
- _aYa_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Du_,
- embed_personne_a_charge,
- param),
- _aYb_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Dv_,condition_2_r823_4),
- _aYa_),
- _aYc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Dw_,
- Runtime_ocaml_Runtime[12],
- _aYb_),
- _aYd_=caml_call2(Runtime_ocaml_Runtime[27],_Dx_,_aYc_);
- return caml_call2(Runtime_ocaml_Runtime[29],_Dy_,_aYd_)}
- var
- _aX4_=
- [0,
- function(param$0)
- {function _aX5_(param){return 1}
- function _aX6_(param$0)
- {if(0 === param[0])
- var _aX7_=0;
- else
- {var parent=param[1],_aX8_=parent[5];
- if(_aX8_)
- var
- _aX9_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25$0),
- _aX__=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- plafond_individuel_l815_9_secu,
- _aX9_),
- _aX$_=caml_call2(Runtime_ocaml_Runtime[71],parent[2],_aX__);
- else
- var _aX$_=_aX8_;
- var _aX7_=_aX$_}
- return caml_call2(Runtime_ocaml_Runtime[29],_Dz_,_aX7_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_DA_,[0],_aX6_,_aX5_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_DB_,_aX4_,_aX3_,_aX2_)},
- _aXY_],
- _aX0_=caml_call4(Runtime_ocaml_Runtime[62],_DC_,_aXZ_,_aXX_,_aXW_);
- return _aX0_}
- catch(_aX1_)
- {_aX1_ = caml_wrap_exception(_aX1_);
- if(_aX1_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Dq_];
- throw _aX1_}}
- var
- prise_en_compte_personne_a_cha=
- caml_call3
- (Runtime_ocaml_Runtime[28],_DD_,Runtime_ocaml_Runtime[10],_aXs_);
- try
- {var
- _aXt_=
- function(param)
- {var _aXR_=menage[3];
- function _aXS_(personne_a_charge)
- {var
- _aXT_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _DF_,
- embed_personne_a_charge,
- personne_a_charge),
- _aXU_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _DG_,
- prise_en_compte_personne_a_cha),
- _aXT_),
- _aXV_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _DH_,
- Runtime_ocaml_Runtime[12],
- _aXU_);
- return caml_call2(Runtime_ocaml_Runtime[27],_DI_,_aXV_)}
- return caml_call2(Runtime_ocaml_Runtime[112],_aXS_,_aXR_)},
- _aXu_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DJ_,1)},
- _aXv_=caml_call4(Runtime_ocaml_Runtime[62],_DK_,[0],_aXu_,_aXt_)}
- catch(_aXQ_)
- {_aXQ_ = caml_wrap_exception(_aXQ_);
- if(_aXQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DE_];
- throw _aXQ_}
- var
- _aXw_=caml_call1(Runtime_ocaml_Runtime[18],embed_personne_a_charge),
- personnes_a_charge_prises_en_c=
- caml_call3(Runtime_ocaml_Runtime[28],_DL_,_aXw_,_aXv_);
- try
- {var
- _aXx_=
- function(param)
- {function _aXM_(personne_a_charge)
- {if(0 === personne_a_charge[0])
- {var enfant=personne_a_charge[1];return 0 === enfant[9][0]?0:1}
- return 0}
- var
- _aXN_=
- caml_call2
- (Runtime_ocaml_Runtime[112],
- _aXM_,
- personnes_a_charge_prises_en_c);
- function _aXO_(personne_a_charge)
- {if(0 === personne_a_charge[0])
- {var enfant=personne_a_charge[1],_aXP_=enfant[9];
- if(0 === _aXP_[0])
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$275);
- var coeff=_aXP_[1];
- return coeff}
- return caml_call1(Runtime_ocaml_Runtime[39],cst_0$276)}
- return caml_call2(Stdlib_Array[15],_aXO_,_aXN_)},
- _aXy_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DN_,1)},
- _aXz_=caml_call4(Runtime_ocaml_Runtime[62],_DO_,[0],_aXy_,_aXx_)}
- catch(_aXL_)
- {_aXL_ = caml_wrap_exception(_aXL_);
- if(_aXL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DM_];
- throw _aXL_}
- var
- _aXA_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]),
- coefficents_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],_DP_,_aXA_,_aXz_);
- try
- {var
- _aXB_=
- function(param)
- {return caml_call1
- (Runtime_ocaml_Runtime[113],personnes_a_charge_prises_en_c)},
- _aXC_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DR_,1)},
- _aXD_=caml_call4(Runtime_ocaml_Runtime[62],_DS_,[0],_aXC_,_aXB_)}
- catch(_aXK_)
- {_aXK_ = caml_wrap_exception(_aXK_);
- if(_aXK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DQ_];
- throw _aXK_}
- var
- nombre_personnes_a_charge_pris=
- caml_call3
- (Runtime_ocaml_Runtime[28],_DT_,Runtime_ocaml_Runtime[14],_aXD_);
- try
- {var
- _aXE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2),
- _aXF_=
- caml_call2
- (Runtime_ocaml_Runtime[94],seuil_l822_3_parts_usufruit,_aXE_)}
- catch(_aXJ_)
- {_aXJ_ = caml_wrap_exception(_aXJ_);
- if(_aXJ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DU_];
- throw _aXJ_}
- if(_aXF_)
- {try
- {var
- _aXG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0),
- _aXH_=
- caml_call2
- (Runtime_ocaml_Runtime[94],seuil_l822_3_parts_propriete,_aXG_)}
- catch(_aXI_)
- {_aXI_ = caml_wrap_exception(_aXI_);
- if(_aXI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DV_];
- throw _aXI_}
- if(_aXH_)
- return [0,
- date_courante,
- eligibilite,
- nombre_personnes_a_charge_pris,
- coefficents_enfants_garde_alte,
- condition_2_r823_4];
- throw [0,Runtime_ocaml_Runtime[3],_DW_]}
- throw [0,Runtime_ocaml_Runtime[3],_DX_]}
- function ressources_aides_personnelle_l(ressources_aides_personnelle_l)
- {var
- ressources_demandeur=ressources_aides_personnelle_l[1],
- ressources_conjoint=ressources_aides_personnelle_l[2],
- personnes_vivant_habituellemen=ressources_aides_personnelle_l[3],
- demandeur_exerce_activite_remu=ressources_aides_personnelle_l[4],
- conjoint_exerce_activite_remun=ressources_aides_personnelle_l[5],
- personnes_a_charge=ressources_aides_personnelle_l[6],
- situation_familiale=ressources_aides_personnelle_l[7],
- mode_occupation=ressources_aides_personnelle_l[8],
- condition_age_bourse_enseignem=ressources_aides_personnelle_l[9],
- demandeur_poursuit_des_etudes=ressources_aides_personnelle_l[10],
- date_demande_ou_reexamen_droit=ressources_aides_personnelle_l[11],
- paiement_logement_distinct_pro=ressources_aides_personnelle_l[12];
- try
- {var
- _aU8_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aU9_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DZ_,0)},
- _aU__=caml_call4(Runtime_ocaml_Runtime[62],_D0_,[0],_aU9_,_aU8_)}
- catch(_aV5_)
- {_aV5_ = caml_wrap_exception(_aV5_);
- if(_aV5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_DY_];
- throw _aV5_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_D1_,Runtime_ocaml_Runtime[13],_aU__);
- try
- {var
- _aU$_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_258900)},
- _aVa_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D3_,1)},
- _aVb_=caml_call4(Runtime_ocaml_Runtime[62],_D4_,[0],_aVa_,_aU$_)}
- catch(_aV4_)
- {_aV4_ = caml_wrap_exception(_aV4_);
- if(_aV4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_D2_];
- throw _aV4_}
- var
- montant_forfaitaire_r_822_8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_D5_,Runtime_ocaml_Runtime[13],_aVb_);
- try
- {var
- _aVc_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_9500)},
- _aVd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D7_,1)},
- _aVe_=caml_call4(Runtime_ocaml_Runtime[62],_D8_,[0],_aVd_,_aVc_)}
- catch(_aV3_)
- {_aV3_ = caml_wrap_exception(_aV3_);
- if(_aV3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_D6_];
- throw _aV3_}
- var
- montant_forfaitaire_r_822_7=
- caml_call3
- (Runtime_ocaml_Runtime[28],_D9_,Runtime_ocaml_Runtime[13],_aVe_);
- try
- {var
- _aVf_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aVg_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D$_,0)},
- _aVh_=caml_call4(Runtime_ocaml_Runtime[62],_Ea_,[0],_aVg_,_aVf_)}
- catch(_aV2_)
- {_aV2_ = caml_wrap_exception(_aV2_);
- if(_aV2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_D__];
- throw _aV2_}
- var
- ressources_forfaitaires_r822_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Eb_,Runtime_ocaml_Runtime[13],_aVh_);
- try
- {var
- _aVi_=
- function(param)
- {var _aV0_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$277);
- function _aV1_(acc,personne)
- {return caml_call2(Runtime_ocaml_Runtime[67],acc,personne[2])}
- return caml_call3
- (Stdlib_Array[17],
- _aV1_,
- _aV0_,
- personnes_vivant_habituellemen)},
- _aVj_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ed_,1)},
- _aVk_=caml_call4(Runtime_ocaml_Runtime[62],_Ee_,[0],_aVj_,_aVi_)}
- catch(_aVZ_)
- {_aVZ_ = caml_wrap_exception(_aVZ_);
- if(_aVZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ec_];
- throw _aVZ_}
- var
- ressources_personnes_vivant_ha=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ef_,Runtime_ocaml_Runtime[13],_aVk_);
- try
- {var
- _aVl_=
- function(param)
- {switch(situation_familiale[0])
- {case 0:
- var _aVT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$278);
- if
- (caml_equal
- (caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge),
- _aVT_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$279);
- var
- _aVU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$38),
- _aVV_=
- caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge);
- return caml_call2(Runtime_ocaml_Runtime[82],_aVV_,_aVU_)
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_135000);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$280);
- case 2:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$281);
- case 3:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$282);
- case 4:
- var _aVW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$283);
- if
- (caml_equal
- (caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge),
- _aVW_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$284);
- var
- _aVX_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$39),
- _aVY_=
- caml_call1(Runtime_ocaml_Runtime[113],personnes_a_charge);
- return caml_call2(Runtime_ocaml_Runtime[82],_aVY_,_aVX_)
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_135000$0);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$285)}},
- _aVm_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Eh_,1)},
- _aVn_=caml_call4(Runtime_ocaml_Runtime[62],_Ei_,[0],_aVm_,_aVl_)}
- catch(_aVS_)
- {_aVS_ = caml_wrap_exception(_aVS_);
- if(_aVS_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Eg_];
- throw _aVS_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ej_,Runtime_ocaml_Runtime[13],_aVn_);
- try
- {var
- _aVo_=function(param){return date_demande_ou_reexamen_droit},
- _aVp_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_El_,1)},
- _aVq_=caml_call4(Runtime_ocaml_Runtime[62],_Em_,[0],_aVp_,_aVo_),
- base_mensuelle_allocations_fam=
- caml_call3
- (Runtime_ocaml_Runtime[28],_En_,Runtime_ocaml_Runtime[16],_aVq_)}
- catch(_aVR_)
- {_aVR_ = caml_wrap_exception(_aVR_);
- if(_aVR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ek_];
- throw _aVR_}
- var
- _aVr_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Eo_,base_mensuelle_allocations_fam$5),
- [0,base_mensuelle_allocations_fam]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Ep_,_aVr_),
- base_mensuelle_allocations_fam$0=result[1];
- try
- {var
- _aVs_=
- function(param)
- {return 0 === paiement_logement_distinct_pro[0]
- ?montant_forfaitaire_r_822_8
- :caml_call1(Runtime_ocaml_Runtime[31],cst_0$286)},
- _aVt_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Er_,1)},
- _aVu_=caml_call4(Runtime_ocaml_Runtime[62],_Es_,[0],_aVt_,_aVs_)}
- catch(_aVQ_)
- {_aVQ_ = caml_wrap_exception(_aVQ_);
- if(_aVQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Eq_];
- throw _aVQ_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_Et_,Runtime_ocaml_Runtime[13],_aVu_);
- try
- {var
- _aVv_=
- function(param)
- {var
- _aVP_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- ressources_demandeur,
- ressources_conjoint);
- return caml_call2
- (Runtime_ocaml_Runtime[67],
- _aVP_,
- ressources_personnes_vivant_ha)},
- _aVw_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ev_,1)},
- _aVx_=
- [0,
- function(param)
- {function _aVM_(param){return ressources_forfaitaires_r822_2}
- function _aVN_(param)
- {switch(mode_occupation[0])
- {case 0:var _aVO_=1;break;
- case 1:var _aVO_=0;break;
- case 2:var _aVO_=0;break;
- case 3:var _aVO_=0;break;
- default:var _aVO_=0}
- var
- demandeur_poursuit_des_etudes$0=
- _aVO_
- ?condition_age_bourse_enseignem
- ?demandeur_poursuit_des_etudes
- :condition_age_bourse_enseignem
- :_aVO_;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _Ew_,
- demandeur_poursuit_des_etudes$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Ex_,[0],_aVN_,_aVM_)}],
- _aVy_=caml_call4(Runtime_ocaml_Runtime[62],_Ey_,_aVx_,_aVw_,_aVv_)}
- catch(_aVL_)
- {_aVL_ = caml_wrap_exception(_aVL_);
- if(_aVL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Eu_];
- throw _aVL_}
- var
- ressources_prises_en_compte=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ez_,Runtime_ocaml_Runtime[13],_aVy_);
- try
- {var
- _aVz_=
- function(param)
- {if
- (demandeur_exerce_activite_remu
- &&
- conjoint_exerce_activite_remun)
- {var
- _aVI_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$15),
- _aVJ_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- base_mensuelle_allocations_fam$0,
- _aVI_),
- _aVK_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- ressources_conjoint,
- ressources_conjoint);
- if(caml_call2(Runtime_ocaml_Runtime[72],_aVK_,_aVJ_))
- return montant_forfaitaire_r_822_7}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$287)},
- _aVA_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EB_,1)},
- _aVB_=caml_call4(Runtime_ocaml_Runtime[62],_EC_,[0],_aVA_,_aVz_)}
- catch(_aVH_)
- {_aVH_ = caml_wrap_exception(_aVH_);
- if(_aVH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EA_];
- throw _aVH_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_ED_,Runtime_ocaml_Runtime[13],_aVB_);
- try
- {var
- _aVC_=1,
- _aVD_=
- function(acc,personne){var _aVG_=acc?personne[1]:acc;return _aVG_},
- _aVE_=
- caml_call3
- (Stdlib_Array[17],_aVD_,_aVC_,personnes_vivant_habituellemen)}
- catch(_aVF_)
- {_aVF_ = caml_wrap_exception(_aVF_);
- if(_aVF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EE_];
- throw _aVF_}
- if(_aVE_)return [0,ressources_prises_en_compte];
- throw [0,Runtime_ocaml_Runtime[3],_EF_]}
- function eligibilite_prestations_famili(eligibilite_prestations_famili)
- {var
- date_courante=eligibilite_prestations_famili[1],
- residence=eligibilite_prestations_famili[3];
- try
- {var
- _aT0_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[46],cst_20$0)},
- _aT1_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EH_,1)},
- _aT2_=caml_call4(Runtime_ocaml_Runtime[62],_EI_,[0],_aT1_,_aT0_)}
- catch(_aU7_)
- {_aU7_ = caml_wrap_exception(_aU7_);
- if(_aU7_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EG_];
- throw _aU7_}
- var
- age_l512_3_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_EJ_,Runtime_ocaml_Runtime[14],_aT2_);
- try
- {var
- _aT3_=function(param){return date_courante},
- _aT4_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EL_,1)},
- _aT5_=caml_call4(Runtime_ocaml_Runtime[62],_EM_,[0],_aT4_,_aT3_),
- smic_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_EN_,Runtime_ocaml_Runtime[16],_aT5_)}
- catch(_aU6_)
- {_aU6_ = caml_wrap_exception(_aU6_);
- if(_aU6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EK_];
- throw _aU6_}
- try
- {var
- _aT6_=function(param){return residence},
- _aT7_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EP_,1)},
- _aT8_=caml_call4(Runtime_ocaml_Runtime[62],_EQ_,[0],_aT7_,_aT6_),
- smic_dot_residence=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ER_,embed_collectivite$0,_aT8_)}
- catch(_aU5_)
- {_aU5_ = caml_wrap_exception(_aU5_);
- if(_aU5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EO_];
- throw _aU5_}
- var
- _aT9_=
- caml_call1
- (caml_call2(Runtime_ocaml_Runtime[26],_ES_,smic$1),
- [0,smic_dot_date_courante,smic_dot_residence]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_ET_,_aT9_),
- smic_dot_brut_horaire=result[1];
- try
- {var
- _aT__=function(param){return 0},
- _aT$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EV_,1)},
- _aUa_=
- [0,
- function(param)
- {function _aUX_(param){return 1}
- function _aUY_(param)
- {var _aUZ_=caml_equal(residence,_EW_);
- if(_aUZ_)
- var _aU0_=_aUZ_;
- else
- {var _aU1_=caml_equal(residence,_EY_);
- if(_aU1_)
- var _aU0_=_aU1_;
- else
- {var _aU2_=caml_equal(residence,_EZ_);
- if(_aU2_)
- var _aU0_=_aU2_;
- else
- {var _aU3_=caml_equal(residence,_E0_);
- if(_aU3_)
- var _aU0_=_aU3_;
- else
- var
- _aU4_=caml_equal(residence,_E1_),
- _aU0_=_aU4_ || caml_equal(residence,_E2_)}}}
- return caml_call2(Runtime_ocaml_Runtime[29],_EX_,_aU0_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_E3_,[0],_aUY_,_aUX_)}],
- _aUb_=caml_call4(Runtime_ocaml_Runtime[62],_E4_,_aUa_,_aT$_,_aT__)}
- catch(_aUW_)
- {_aUW_ = caml_wrap_exception(_aUW_);
- if(_aUW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_EU_];
- throw _aUW_}
- var
- regime_outre_mer_l751_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_E5_,Runtime_ocaml_Runtime[12],_aUb_);
- try
- {var
- _aUc_=
- function(param)
- {var
- _aUT_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$1),
- _aUU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$1),
- _aUV_=
- caml_call2
- (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_aUU_);
- return caml_call2(Runtime_ocaml_Runtime[65],_aUV_,_aUT_)},
- _aUd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E7_,1)},
- _aUe_=
- [0,
- function(param)
- {function _aUO_(param)
- {var
- _aUQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$2),
- _aUR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$2),
- _aUS_=
- caml_call2
- (Runtime_ocaml_Runtime[65],smic_dot_brut_horaire,_aUR_);
- return caml_call2(Runtime_ocaml_Runtime[65],_aUS_,_aUQ_)}
- function _aUP_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_E8_,regime_outre_mer_l751_1)}
- return caml_call4(Runtime_ocaml_Runtime[62],_E9_,[0],_aUP_,_aUO_)}],
- _aUf_=caml_call4(Runtime_ocaml_Runtime[62],_E__,_aUe_,_aUd_,_aUc_)}
- catch(_aUN_)
- {_aUN_ = caml_wrap_exception(_aUN_);
- if(_aUN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_E6_];
- throw _aUN_}
- var
- plafond_l512_3_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_E$_,Runtime_ocaml_Runtime[13],_aUf_);
- function _aUg_(param)
- {try
- {var
- _aUB_=function(param){return 0},
- _aUC_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Fb_,1)},
- _aUD_=
- [0,
- function(param$0)
- {function _aUG_(param){return 1}
- function _aUH_(param$0)
- {switch(param[2][0])
- {case 0:var _aUI_=1;break;
- case 1:var _aUI_=0;break;
- default:var _aUI_=0}
- if(_aUI_)
- var _aUJ_=_aUI_;
- else
- {switch(param[2][0])
- {case 0:var _aUL_=0;break;
- case 1:var _aUL_=1;break;
- default:var _aUL_=0}
- if(_aUL_)
- var _aUJ_=_aUL_;
- else
- {switch(param[2][0])
- {case 0:var _aUM_=0;break;
- case 1:var _aUM_=0;break;
- default:var _aUM_=1}
- var _aUJ_=_aUM_}}
- var
- _aUK_=
- _aUJ_
- ?caml_call2
- (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2)
- :_aUJ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Fc_,_aUK_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Fd_,[0],_aUH_,_aUG_)}],
- _aUE_=caml_call4(Runtime_ocaml_Runtime[62],_Fe_,_aUD_,_aUC_,_aUB_);
- return _aUE_}
- catch(_aUF_)
- {_aUF_ = caml_wrap_exception(_aUF_);
- if(_aUF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Fa_];
- throw _aUF_}}
- var
- conditions_hors_age=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ff_,Runtime_ocaml_Runtime[10],_aUg_);
- function _aUh_(param)
- {try
- {var
- _aUi_=function(param){return 0},
- _aUj_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Fh_,1)},
- _aUk_=
- [0,
- function(param$0)
- {function _aUn_(param){throw Runtime_ocaml_Runtime[2]}
- function _aUo_(param){return 0}
- var
- _aUp_=
- [0,
- function(param$0)
- {function _aUq_(param){return 1}
- function _aUr_(param$0)
- {switch(param[2][0])
- {case 0:var _aUy_=1;break;
- case 1:var _aUy_=0;break;
- default:var _aUy_=0}
- if(_aUy_)
- var _aUz_=_aUy_;
- else
- {switch(param[2][0])
- {case 0:var _aUA_=0;break;
- case 1:var _aUA_=1;break;
- default:var _aUA_=0}
- var _aUz_=_aUA_}
- return caml_call2(Runtime_ocaml_Runtime[29],_Fi_,_aUz_)}
- var
- _aUs_=
- [0,
- function(param$0)
- {function _aUt_(param){return 1}
- function _aUu_(param$0)
- {switch(param[2][0])
- {case 0:var _aUv_=0;break;
- case 1:var _aUv_=0;break;
- default:var _aUv_=1}
- if(_aUv_)
- var
- _aUw_=
- caml_call2
- (Runtime_ocaml_Runtime[71],param[3],plafond_l512_3_2),
- _aUx_=
- _aUw_
- ?caml_call2(Runtime_ocaml_Runtime[84],param[5],age_l512_3_2)
- :_aUw_;
- else
- var _aUx_=_aUv_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Fj_,_aUx_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Fk_,[0],_aUu_,_aUt_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Fl_,_aUs_,_aUr_,_aUq_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Fm_,_aUp_,_aUo_,_aUn_)}],
- _aUl_=caml_call4(Runtime_ocaml_Runtime[62],_Fn_,_aUk_,_aUj_,_aUi_);
- return _aUl_}
- catch(_aUm_)
- {_aUm_ = caml_wrap_exception(_aUm_);
- if(_aUm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Fg_];
- throw _aUm_}}
- var
- droit_ouvert=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Fo_,Runtime_ocaml_Runtime[10],_aUh_);
- return [0,
- droit_ouvert,
- conditions_hors_age,
- age_l512_3_2,
- regime_outre_mer_l751_1]}
- function calcul_allocation_logement_loc(calcul_allocation_logement_loc)
- {var
- loyer_principal=calcul_allocation_logement_loc[1],
- ressources_menage_arrondies=calcul_allocation_logement_loc[2],
- beneficiaire_aide_adulte_ou_en=calcul_allocation_logement_loc[3],
- date_courante=calcul_allocation_logement_loc[4],
- nombre_personnes_a_charge=calcul_allocation_logement_loc[5],
- situation_familiale_calcul_apl=calcul_allocation_logement_loc[6],
- zone=calcul_allocation_logement_loc[7],
- logement_est_chambre=calcul_allocation_logement_loc[8],
- agees_ou_handicap_adultes_hebe=calcul_allocation_logement_loc[9],
- type_aide=calcul_allocation_logement_loc[10],
- colocation=calcul_allocation_logement_loc[11],
- reduction_loyer_solidarite=calcul_allocation_logement_loc[12],
- logement_meuble_d842_2=calcul_allocation_logement_loc[13],
- changement_logement_d842_4=calcul_allocation_logement_loc[14];
- try
- {var
- _aSO_=function(param){return loyer_principal},
- _aSP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fq_,1)},
- _aSQ_=
- [0,
- function(param)
- {function _aTV_(param)
- {var
- _aTX_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$19),
- _aTY_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$40),
- _aTZ_=caml_call2(Runtime_ocaml_Runtime[89],_aTY_,_aTX_);
- return caml_call2
- (Runtime_ocaml_Runtime[65],loyer_principal,_aTZ_)}
- function _aTW_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_Fr_,logement_meuble_d842_2)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Fs_,[0],_aTW_,_aTV_)}],
- _aSR_=caml_call4(Runtime_ocaml_Runtime[62],_Ft_,_aSQ_,_aSP_,_aSO_),
- calcul_apl_locatif_dot_loyer_p=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Fu_,Runtime_ocaml_Runtime[13],_aSR_)}
- catch(_aTU_)
- {_aTU_ = caml_wrap_exception(_aTU_);
- if(_aTU_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Fp_];
- throw _aTU_}
- try
- {var
- _aSS_=function(param){return ressources_menage_arrondies},
- _aST_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fw_,1)},
- _aSU_=caml_call4(Runtime_ocaml_Runtime[62],_Fx_,[0],_aST_,_aSS_),
- calcul_apl_locatif_dot_ressour=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Fy_,Runtime_ocaml_Runtime[13],_aSU_)}
- catch(_aTT_)
- {_aTT_ = caml_wrap_exception(_aTT_);
- if(_aTT_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Fv_];
- throw _aTT_}
- try
- {var
- _aSV_=function(param){return beneficiaire_aide_adulte_ou_en},
- _aSW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FA_,1)},
- _aSX_=caml_call4(Runtime_ocaml_Runtime[62],_FB_,[0],_aSW_,_aSV_),
- calcul_apl_locatif_dot_benefic=
- caml_call3
- (Runtime_ocaml_Runtime[28],_FC_,Runtime_ocaml_Runtime[12],_aSX_)}
- catch(_aTS_)
- {_aTS_ = caml_wrap_exception(_aTS_);
- if(_aTS_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Fz_];
- throw _aTS_}
- try
- {var
- _aSY_=function(param){return date_courante},
- _aSZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FE_,1)},
- _aS0_=caml_call4(Runtime_ocaml_Runtime[62],_FF_,[0],_aSZ_,_aSY_),
- calcul_apl_locatif_dot_date_co=
- caml_call3
- (Runtime_ocaml_Runtime[28],_FG_,Runtime_ocaml_Runtime[16],_aS0_)}
- catch(_aTR_)
- {_aTR_ = caml_wrap_exception(_aTR_);
- if(_aTR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FD_];
- throw _aTR_}
- try
- {var
- _aS1_=function(param){return nombre_personnes_a_charge},
- _aS2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FI_,1)},
- _aS3_=caml_call4(Runtime_ocaml_Runtime[62],_FJ_,[0],_aS2_,_aS1_),
- calcul_apl_locatif_dot_nombre_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_FK_,Runtime_ocaml_Runtime[14],_aS3_)}
- catch(_aTQ_)
- {_aTQ_ = caml_wrap_exception(_aTQ_);
- if(_aTQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FH_];
- throw _aTQ_}
- try
- {var
- _aS4_=function(param){return situation_familiale_calcul_apl},
- _aS5_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FM_,1)},
- _aS6_=caml_call4(Runtime_ocaml_Runtime[62],_FN_,[0],_aS5_,_aS4_),
- calcul_apl_locatif_dot_situati=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _FO_,
- embed_situation_familiale_calc,
- _aS6_)}
- catch(_aTP_)
- {_aTP_ = caml_wrap_exception(_aTP_);
- if(_aTP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FL_];
- throw _aTP_}
- try
- {var
- _aS7_=function(param){return zone},
- _aS8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FQ_,1)},
- _aS9_=caml_call4(Runtime_ocaml_Runtime[62],_FR_,[0],_aS8_,_aS7_),
- calcul_apl_locatif_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_FS_,embed_zone_d_habitation,_aS9_)}
- catch(_aTO_)
- {_aTO_ = caml_wrap_exception(_aTO_);
- if(_aTO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FP_];
- throw _aTO_}
- try
- {var
- _aS__=function(param){return logement_est_chambre},
- _aS$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FU_,1)},
- _aTa_=caml_call4(Runtime_ocaml_Runtime[62],_FV_,[0],_aS$_,_aS__),
- calcul_apl_locatif_dot_logemen=
- caml_call3
- (Runtime_ocaml_Runtime[28],_FW_,Runtime_ocaml_Runtime[12],_aTa_)}
- catch(_aTN_)
- {_aTN_ = caml_wrap_exception(_aTN_);
- if(_aTN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FT_];
- throw _aTN_}
- try
- {var
- _aTb_=function(param){return agees_ou_handicap_adultes_hebe},
- _aTc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FY_,1)},
- _aTd_=caml_call4(Runtime_ocaml_Runtime[62],_FZ_,[0],_aTc_,_aTb_),
- calcul_apl_locatif_dot_agees_o=
- caml_call3
- (Runtime_ocaml_Runtime[28],_F0_,Runtime_ocaml_Runtime[12],_aTd_)}
- catch(_aTM_)
- {_aTM_ = caml_wrap_exception(_aTM_);
- if(_aTM_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_FX_];
- throw _aTM_}
- try
- {var
- _aTe_=function(param){return type_aide},
- _aTf_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F2_,1)},
- _aTg_=caml_call4(Runtime_ocaml_Runtime[62],_F3_,[0],_aTf_,_aTe_),
- calcul_apl_locatif_dot_type_ai=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _F4_,
- embed_type_aides_personnelle_l,
- _aTg_)}
- catch(_aTL_)
- {_aTL_ = caml_wrap_exception(_aTL_);
- if(_aTL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_F1_];
- throw _aTL_}
- try
- {var
- _aTh_=function(param){return colocation},
- _aTi_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F6_,1)},
- _aTj_=caml_call4(Runtime_ocaml_Runtime[62],_F7_,[0],_aTi_,_aTh_),
- calcul_apl_locatif_dot_colocat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_F8_,Runtime_ocaml_Runtime[12],_aTj_)}
- catch(_aTK_)
- {_aTK_ = caml_wrap_exception(_aTK_);
- if(_aTK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_F5_];
- throw _aTK_}
- try
- {var
- _aTk_=function(param){return reduction_loyer_solidarite},
- _aTl_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F__,1)},
- _aTm_=caml_call4(Runtime_ocaml_Runtime[62],_F$_,[0],_aTl_,_aTk_),
- calcul_apl_locatif_dot_reducti=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ga_,Runtime_ocaml_Runtime[13],_aTm_)}
- catch(_aTJ_)
- {_aTJ_ = caml_wrap_exception(_aTJ_);
- if(_aTJ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_F9_];
- throw _aTJ_}
- var
- _aTn_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Gb_,calcul_aide_personnalisee_loge),
- [0,
- calcul_apl_locatif_dot_loyer_p,
- calcul_apl_locatif_dot_ressour,
- calcul_apl_locatif_dot_benefic,
- calcul_apl_locatif_dot_date_co,
- calcul_apl_locatif_dot_nombre_,
- calcul_apl_locatif_dot_situati,
- calcul_apl_locatif_dot_zone,
- calcul_apl_locatif_dot_logemen,
- calcul_apl_locatif_dot_agees_o,
- calcul_apl_locatif_dot_type_ai,
- calcul_apl_locatif_dot_colocat,
- calcul_apl_locatif_dot_reducti]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Gc_,_aTn_),
- calcul_apl_locatif_dot_aide_fi=result[6],
- calcul_apl_locatif_dot_traitem=result[7];
- function _aTo_(param)
- {try
- {var
- _aTy_=
- function(param$0)
- {var
- _aTG_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ge_,
- Runtime_ocaml_Runtime[13],
- param),
- _aTH_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Gf_,
- calcul_apl_locatif_dot_traitem),
- _aTG_),
- _aTI_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Gg_,
- Runtime_ocaml_Runtime[13],
- _aTH_);
- return caml_call2(Runtime_ocaml_Runtime[27],_Gh_,_aTI_)},
- _aTz_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Gi_,1)},
- _aTA_=
- [0,
- function(param$0)
- {function _aTD_(param$0){return param}
- function _aTE_(param)
- {if(0 === changement_logement_d842_4[0])
- var
- infos=changement_logement_d842_4[1],
- _aTF_=
- caml_call2
- (Runtime_ocaml_Runtime[72],loyer_principal,infos[1]);
- else
- var _aTF_=0;
- return caml_call2(Runtime_ocaml_Runtime[29],_Gj_,_aTF_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Gk_,[0],_aTE_,_aTD_)}],
- _aTB_=caml_call4(Runtime_ocaml_Runtime[62],_Gl_,_aTA_,_aTz_,_aTy_);
- return _aTB_}
- catch(_aTC_)
- {_aTC_ = caml_wrap_exception(_aTC_);
- if(_aTC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Gd_];
- throw _aTC_}}
- var
- traitement_aide_finale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Gm_,Runtime_ocaml_Runtime[10],_aTo_);
- try
- {var
- _aTp_=function(param){return calcul_apl_locatif_dot_aide_fi},
- _aTq_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Go_,1)},
- _aTr_=
- [0,
- function(param)
- {function _aTu_(param)
- {if(0 === changement_logement_d842_4[0])
- {var
- infos=changement_logement_d842_4[1],
- _aTx_=
- caml_call2(Runtime_ocaml_Runtime[68],infos[1],infos[2]);
- return caml_call2
- (Runtime_ocaml_Runtime[68],loyer_principal,_aTx_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$288)}
- function _aTv_(param)
- {if(0 === changement_logement_d842_4[0])
- var
- infos=changement_logement_d842_4[1],
- _aTw_=
- caml_call2
- (Runtime_ocaml_Runtime[72],loyer_principal,infos[1]);
- else
- var _aTw_=0;
- return caml_call2(Runtime_ocaml_Runtime[29],_Gp_,_aTw_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Gq_,[0],_aTv_,_aTu_)}],
- _aTs_=caml_call4(Runtime_ocaml_Runtime[62],_Gr_,_aTr_,_aTq_,_aTp_)}
- catch(_aTt_)
- {_aTt_ = caml_wrap_exception(_aTt_);
- if(_aTt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Gn_];
- throw _aTt_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Gs_,Runtime_ocaml_Runtime[13],_aTs_);
- return [0,aide_finale_formule,traitement_aide_finale]}
- function calcul_allocation_logement_foy(calcul_allocation_logement_foy)
- {var
- redevance=calcul_allocation_logement_foy[1],
- mode_occupation=calcul_allocation_logement_foy[2],
- ressources_menage_arrondies=calcul_allocation_logement_foy[3],
- nombre_personnes_a_charge=calcul_allocation_logement_foy[4],
- situation_familiale_calcul_apl=calcul_allocation_logement_foy[5],
- zone=calcul_allocation_logement_foy[6],
- date_courante=calcul_allocation_logement_foy[7],
- categorie_equivalence_loyer_d8=calcul_allocation_logement_foy[8];
- try
- {var
- _aOH_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$3)},
- _aOI_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gu_,1)},
- _aOJ_=caml_call4(Runtime_ocaml_Runtime[62],_Gv_,[0],_aOI_,_aOH_)}
- catch(_aSN_)
- {_aSN_ = caml_wrap_exception(_aSN_);
- if(_aSN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Gt_];
- throw _aSN_}
- var
- montant_minimal_aide_d842_15=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Gw_,Runtime_ocaml_Runtime[13],_aOJ_);
- try
- {var
- _aOK_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$2)},
- _aOL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gy_,1)},
- _aOM_=caml_call4(Runtime_ocaml_Runtime[62],_Gz_,[0],_aOL_,_aOK_)}
- catch(_aSM_)
- {_aSM_ = caml_wrap_exception(_aSM_);
- if(_aSM_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Gx_];
- throw _aSM_}
- var
- montant_forfaitaire_d842_15=
- caml_call3
- (Runtime_ocaml_Runtime[28],_GA_,Runtime_ocaml_Runtime[13],_aOM_);
- try
- {var
- _aON_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$0)},
- _aOO_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GC_,1)},
- _aOP_=caml_call4(Runtime_ocaml_Runtime[62],_GD_,[0],_aOO_,_aON_)}
- catch(_aSL_)
- {_aSL_ = caml_wrap_exception(_aSL_);
- if(_aSL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GB_];
- throw _aSL_}
- var
- montant_minimal_depense_nette_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_GE_,Runtime_ocaml_Runtime[13],_aOP_);
- try
- {var
- _aOQ_=function(param){return 1},
- _aOR_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GG_,1)},
- _aOS_=caml_call4(Runtime_ocaml_Runtime[62],_GH_,[0],_aOR_,_aOQ_),
- calcul_nombre_parts_dot_condit=
- caml_call3
- (Runtime_ocaml_Runtime[28],_GI_,Runtime_ocaml_Runtime[12],_aOS_)}
- catch(_aSK_)
- {_aSK_ = caml_wrap_exception(_aSK_);
- if(_aSK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GF_];
- throw _aSK_}
- try
- {var
- _aOT_=function(param){return nombre_personnes_a_charge},
- _aOU_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GK_,1)},
- _aOV_=caml_call4(Runtime_ocaml_Runtime[62],_GL_,[0],_aOU_,_aOT_),
- calcul_nombre_parts_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_GM_,Runtime_ocaml_Runtime[14],_aOV_)}
- catch(_aSJ_)
- {_aSJ_ = caml_wrap_exception(_aSJ_);
- if(_aSJ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GJ_];
- throw _aSJ_}
- try
- {var
- _aOW_=function(param){return situation_familiale_calcul_apl},
- _aOX_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GO_,1)},
- _aOY_=caml_call4(Runtime_ocaml_Runtime[62],_GP_,[0],_aOX_,_aOW_),
- calcul_nombre_parts_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _GQ_,
- embed_situation_familiale_calc,
- _aOY_)}
- catch(_aSI_)
- {_aSI_ = caml_wrap_exception(_aSI_);
- if(_aSI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GN_];
- throw _aSI_}
- var
- _aOZ_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_GR_,calcul_nombre_part_logement_fo),
- [0,
- calcul_nombre_parts_dot_condit,
- calcul_nombre_parts_dot_nombre,
- calcul_nombre_parts_dot_situat]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_GS_,_aOZ_),
- calcul_nombre_parts_dot_n_nomb=result[1];
- try
- {var
- _aO0_=function(param){return date_courante},
- _aO1_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_GU_,1)},
- _aO2_=caml_call4(Runtime_ocaml_Runtime[62],_GV_,[0],_aO1_,_aO0_),
- contributions_sociales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_GW_,Runtime_ocaml_Runtime[16],_aO2_)}
- catch(_aSH_)
- {_aSH_ = caml_wrap_exception(_aSH_);
- if(_aSH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GT_];
- throw _aSH_}
- var
- _aO3_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_GX_,contributions_sociales_aides_p),
- [0,contributions_sociales_dot_dat]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_GY_,_aO3_),
- contributions_sociales_dot_mon=result$0[1];
- try
- {var
- _aO4_=function(param){return mode_occupation},
- _aO5_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G0_,1)},
- _aO6_=caml_call4(Runtime_ocaml_Runtime[62],_G1_,[0],_aO5_,_aO4_),
- calcul_apl_logement_foyer_dot_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_G2_,embed_mode_occupation,_aO6_)}
- catch(_aSG_)
- {_aSG_ = caml_wrap_exception(_aSG_);
- if(_aSG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_GZ_];
- throw _aSG_}
- try
- {var
- _aO7_=function(param){return ressources_menage_arrondies},
- _aO8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G4_,1)},
- _aO9_=caml_call4(Runtime_ocaml_Runtime[62],_G5_,[0],_aO8_,_aO7_),
- calcul_apl_logement_foyer_dot_$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_G6_,Runtime_ocaml_Runtime[13],_aO9_)}
- catch(_aSF_)
- {_aSF_ = caml_wrap_exception(_aSF_);
- if(_aSF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_G3_];
- throw _aSF_}
- try
- {var
- _aO__=function(param){return nombre_personnes_a_charge},
- _aO$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G8_,1)},
- _aPa_=caml_call4(Runtime_ocaml_Runtime[62],_G9_,[0],_aO$_,_aO__),
- calcul_apl_logement_foyer_dot_$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_G__,Runtime_ocaml_Runtime[14],_aPa_)}
- catch(_aSE_)
- {_aSE_ = caml_wrap_exception(_aSE_);
- if(_aSE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_G7_];
- throw _aSE_}
- try
- {var
- _aPb_=function(param){return situation_familiale_calcul_apl},
- _aPc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ha_,1)},
- _aPd_=caml_call4(Runtime_ocaml_Runtime[62],_Hb_,[0],_aPc_,_aPb_),
- calcul_apl_logement_foyer_dot_$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Hc_,
- embed_situation_familiale_calc,
- _aPd_)}
- catch(_aSD_)
- {_aSD_ = caml_wrap_exception(_aSD_);
- if(_aSD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_G$_];
- throw _aSD_}
- try
- {var
- _aPe_=function(param){return zone},
- _aPf_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_He_,1)},
- _aPg_=caml_call4(Runtime_ocaml_Runtime[62],_Hf_,[0],_aPf_,_aPe_),
- calcul_apl_logement_foyer_dot_$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Hg_,embed_zone_d_habitation,_aPg_)}
- catch(_aSC_)
- {_aSC_ = caml_wrap_exception(_aSC_);
- if(_aSC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Hd_];
- throw _aSC_}
- try
- {var
- _aPh_=function(param){return date_courante},
- _aPi_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hi_,1)},
- _aPj_=caml_call4(Runtime_ocaml_Runtime[62],_Hj_,[0],_aPi_,_aPh_),
- calcul_apl_logement_foyer_dot_$4=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Hk_,Runtime_ocaml_Runtime[16],_aPj_)}
- catch(_aSB_)
- {_aSB_ = caml_wrap_exception(_aSB_);
- if(_aSB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Hh_];
- throw _aSB_}
- try
- {var
- _aPk_=function(param){return redevance},
- _aPl_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hm_,1)},
- _aPm_=caml_call4(Runtime_ocaml_Runtime[62],_Hn_,[0],_aPl_,_aPk_),
- calcul_apl_logement_foyer_dot_$5=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ho_,Runtime_ocaml_Runtime[13],_aPm_)}
- catch(_aSA_)
- {_aSA_ = caml_wrap_exception(_aSA_);
- if(_aSA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Hl_];
- throw _aSA_}
- function calcul_apl_logement_foyer_dot_$6(param)
- {function _aSx_(param){return 1}
- function _aSy_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Hp_,1)}
- var _aSz_=caml_call4(Runtime_ocaml_Runtime[62],_Hq_,[0],_aSy_,_aSx_);
- return caml_call3
- (Runtime_ocaml_Runtime[28],
- _Hr_,
- Runtime_ocaml_Runtime[12],
- _aSz_)}
- function calcul_apl_logement_foyer_dot_$7(param)
- {throw Runtime_ocaml_Runtime[2]}
- var
- _aPn_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Hs_,calcul_aide_personnalisee_loge$0),
- [0,
- calcul_apl_logement_foyer_dot_,
- calcul_apl_logement_foyer_dot_$0,
- calcul_apl_logement_foyer_dot_$1,
- calcul_apl_logement_foyer_dot_$2,
- calcul_apl_logement_foyer_dot_$3,
- calcul_apl_logement_foyer_dot_$4,
- calcul_apl_logement_foyer_dot_$5,
- calcul_apl_logement_foyer_dot_$6,
- calcul_apl_logement_foyer_dot_$7]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_Ht_,_aPn_),
- calcul_apl_logement_foyer_dot_$8=result$1[7];
- try
- {var
- _aPo_=
- function(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$289)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$3);
- var
- _aSt_=
- caml_call1(Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _aSu_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$3),
- _aSv_=caml_call2(Runtime_ocaml_Runtime[65],_aSu_,_aSt_),
- _aSw_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$4);
- return caml_call2(Runtime_ocaml_Runtime[67],_aSw_,_aSv_)},
- _aPp_=
- function(param)
- {var
- _aSr_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aSs_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSr_);
- return caml_call2(Runtime_ocaml_Runtime[29],_Hv_,_aSs_)},
- _aPq_=caml_call4(Runtime_ocaml_Runtime[62],_Hw_,[0],_aPp_,_aPo_)}
- catch(_aSq_)
- {_aSq_ = caml_wrap_exception(_aSq_);
- if(_aSq_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Hu_];
- throw _aSq_}
- var
- montant_forfaitaire_charges=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Hx_,Runtime_ocaml_Runtime[13],_aPq_);
- try
- {var
- _aPr_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aPs_=function(param){return 0},
- _aPt_=
- function(param)
- {function _aSf_(param)
- {return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26440)}
- function _aSg_(param)
- {var
- _aSn_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aSo_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSn_);
- if(_aSo_)
- switch(categorie_equivalence_loyer_d8[0])
- {case 0:var _aSp_=0;break;
- case 1:var _aSp_=1;break;
- case 2:var _aSp_=0;break;
- default:var _aSp_=0}
- else
- var _aSp_=_aSo_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Hz_,_aSp_)}
- var
- _aSh_=
- [0,
- function(param)
- {function _aSi_(param)
- {return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26440$0)}
- function _aSj_(param)
- {var
- _aSk_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aSl_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSk_);
- if(_aSl_)
- switch(categorie_equivalence_loyer_d8[0])
- {case 0:var _aSm_=0;break;
- case 1:var _aSm_=0;break;
- case 2:var _aSm_=0;break;
- default:var _aSm_=1}
- else
- var _aSm_=_aSl_;
- return caml_call2(Runtime_ocaml_Runtime[29],_HA_,_aSm_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_HB_,[0],_aSj_,_aSi_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_HC_,_aSh_,_aSg_,_aSf_)},
- _aPu_=
- function(param)
- {function _aSa_(param)
- {return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_20640)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32073)}
- function _aSb_(param)
- {var
- _aSc_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aSd_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aSc_);
- if(_aSd_)
- switch(categorie_equivalence_loyer_d8[0])
- {case 0:var _aSe_=0;break;
- case 1:var _aSe_=0;break;
- case 2:var _aSe_=1;break;
- default:var _aSe_=0}
- else
- var _aSe_=_aSd_;
- return caml_call2(Runtime_ocaml_Runtime[29],_HD_,_aSe_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_HE_,[0],_aSb_,_aSa_)},
- _aPv_=
- [0,
- function(param)
- {function _aR7_(param)
- {return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_8414)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_13100)}
- function _aR8_(param)
- {var
- _aR9_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aR__=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aR9_);
- if(_aR__)
- switch(categorie_equivalence_loyer_d8[0])
- {case 0:var _aR$_=1;break;
- case 1:var _aR$_=0;break;
- case 2:var _aR$_=0;break;
- default:var _aR$_=0}
- else
- var _aR$_=_aR__;
- return caml_call2(Runtime_ocaml_Runtime[29],_HF_,_aR$_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_HG_,[0],_aR8_,_aR7_)},
- _aPu_,
- _aPt_],
- _aPw_=caml_call4(Runtime_ocaml_Runtime[62],_HH_,_aPv_,_aPs_,_aPr_)}
- catch(_aR6_)
- {_aR6_ = caml_wrap_exception(_aR6_);
- if(_aR6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Hy_];
- throw _aR6_}
- var
- equivalence_loyer=
- caml_call3
- (Runtime_ocaml_Runtime[28],_HI_,Runtime_ocaml_Runtime[13],_aPw_);
- function _aPx_(param)
- {try
- {var
- _aR0_=
- function(param$0)
- {var
- _aR4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$290),
- _aR5_=
- caml_call2
- (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_15);
- return caml_call2(Runtime_ocaml_Runtime[73],_aR5_,_aR4_)
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$291)
- :caml_call2
- (Runtime_ocaml_Runtime[68],
- param,
- montant_forfaitaire_d842_15)},
- _aR1_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_HK_,1)},
- _aR2_=caml_call4(Runtime_ocaml_Runtime[62],_HL_,[0],_aR1_,_aR0_);
- return _aR2_}
- catch(_aR3_)
- {_aR3_ = caml_wrap_exception(_aR3_);
- if(_aR3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_HJ_];
- throw _aR3_}}
- var
- traitement_aide_finale_minorat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_HM_,Runtime_ocaml_Runtime[10],_aPx_);
- try
- {var
- _aPy_=function(param){return ressources_menage_arrondies},
- _aPz_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HO_,1)},
- _aPA_=caml_call4(Runtime_ocaml_Runtime[62],_HP_,[0],_aPz_,_aPy_),
- calcul_equivalence_loyer_minim$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_HQ_,Runtime_ocaml_Runtime[13],_aPA_)}
- catch(_aRZ_)
- {_aRZ_ = caml_wrap_exception(_aRZ_);
- if(_aRZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_HN_];
- throw _aRZ_}
- try
- {var
- _aPB_=function(param){return 1},
- _aPC_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HS_,1)},
- _aPD_=caml_call4(Runtime_ocaml_Runtime[62],_HT_,[0],_aPC_,_aPB_),
- calcul_equivalence_loyer_minim$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_HU_,Runtime_ocaml_Runtime[12],_aPD_)}
- catch(_aRY_)
- {_aRY_ = caml_wrap_exception(_aRY_);
- if(_aRY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_HR_];
- throw _aRY_}
- try
- {var
- _aPE_=function(param){return calcul_nombre_parts_dot_n_nomb},
- _aPF_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HW_,1)},
- _aPG_=caml_call4(Runtime_ocaml_Runtime[62],_HX_,[0],_aPF_,_aPE_),
- calcul_equivalence_loyer_minim$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_HY_,Runtime_ocaml_Runtime[15],_aPG_)}
- catch(_aRX_)
- {_aRX_ = caml_wrap_exception(_aRX_);
- if(_aRX_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_HV_];
- throw _aRX_}
- var
- _aPH_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_HZ_,calcul_equivalence_loyer_minim),
- [0,
- calcul_equivalence_loyer_minim$0,
- calcul_equivalence_loyer_minim$1,
- calcul_equivalence_loyer_minim$2]),
- result$2=caml_call2(Runtime_ocaml_Runtime[27],_H0_,_aPH_),
- calcul_equivalence_loyer_minim$3=result$2[1];
- try
- {var
- _aPI_=function(param){return calcul_apl_logement_foyer_dot_$8},
- _aPJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_H2_,1)},
- _aPK_=caml_call4(Runtime_ocaml_Runtime[62],_H3_,[0],_aPJ_,_aPI_)}
- catch(_aRW_)
- {_aRW_ = caml_wrap_exception(_aRW_);
- if(_aRW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_H1_];
- throw _aRW_}
- var
- coefficient_prise_en_charge=
- caml_call3
- (Runtime_ocaml_Runtime[28],_H4_,Runtime_ocaml_Runtime[15],_aPK_);
- function _aPL_(param)
- {try
- {var
- _aRR_=
- function(param$0)
- {var
- _aRV_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- equivalence_loyer,
- montant_forfaitaire_charges);
- return caml_call2(Runtime_ocaml_Runtime[68],_aRV_,param)},
- _aRS_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_H6_,1)},
- _aRT_=caml_call4(Runtime_ocaml_Runtime[62],_H7_,[0],_aRS_,_aRR_);
- return _aRT_}
- catch(_aRU_)
- {_aRU_ = caml_wrap_exception(_aRU_);
- if(_aRU_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_H5_];
- throw _aRU_}}
- var
- depense_nette_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_H8_,Runtime_ocaml_Runtime[10],_aPL_);
- try
- {var
- _aPM_=function(param){return calcul_equivalence_loyer_minim$3},
- _aPN_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_H__,1)},
- _aPO_=caml_call4(Runtime_ocaml_Runtime[62],_H$_,[0],_aPN_,_aPM_)}
- catch(_aRQ_)
- {_aRQ_ = caml_wrap_exception(_aRQ_);
- if(_aRQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_H9_];
- throw _aRQ_}
- var
- loyer_minimal=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ia_,Runtime_ocaml_Runtime[13],_aPO_);
- function _aPP_(param)
- {try
- {var
- _aRE_=
- function(param$0)
- {var
- _aRI_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ic_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRJ_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Id_,depense_nette_minimale),
- _aRI_),
- _aRK_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ie_,
- Runtime_ocaml_Runtime[13],
- _aRJ_),
- _aRL_=caml_call2(Runtime_ocaml_Runtime[27],_If_,_aRK_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _aRL_,
- montant_minimal_depense_nette_))
- {var
- _aRM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ig_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Ih_,depense_nette_minimale),
- _aRM_),
- _aRO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ii_,
- Runtime_ocaml_Runtime[13],
- _aRN_),
- _aRP_=caml_call2(Runtime_ocaml_Runtime[27],_Ij_,_aRO_);
- return caml_call2
- (Runtime_ocaml_Runtime[68],
- montant_minimal_depense_nette_,
- _aRP_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$292)},
- _aRF_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Ik_,1)},
- _aRG_=caml_call4(Runtime_ocaml_Runtime[62],_Il_,[0],_aRF_,_aRE_);
- return _aRG_}
- catch(_aRH_)
- {_aRH_ = caml_wrap_exception(_aRH_);
- if(_aRH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ib_];
- throw _aRH_}}
- var
- abattement_depense_nette_minim=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Im_,Runtime_ocaml_Runtime[10],_aPP_);
- try
- {var
- _aPQ_=
- function(param)
- {var
- _aRC_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- equivalence_loyer,
- montant_forfaitaire_charges),
- _aRD_=caml_call2(Runtime_ocaml_Runtime[68],_aRC_,loyer_minimal);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- _aRD_,
- coefficient_prise_en_charge)},
- _aPR_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Io_,1)},
- _aPS_=caml_call4(Runtime_ocaml_Runtime[62],_Ip_,[0],_aPR_,_aPQ_)}
- catch(_aRB_)
- {_aRB_ = caml_wrap_exception(_aRB_);
- if(_aRB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_In_];
- throw _aRB_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Iq_,Runtime_ocaml_Runtime[13],_aPS_);
- function _aPT_(param)
- {try
- {var
- _aQ9_=
- function(param$0)
- {var
- _aRb_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$293),
- _aRc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Is_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRd_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _It_,
- traitement_aide_finale_minorat),
- _aRc_),
- _aRe_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Iu_,
- Runtime_ocaml_Runtime[13],
- _aRd_),
- _aRf_=caml_call2(Runtime_ocaml_Runtime[27],_Iv_,_aRe_),
- _aRg_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Iw_,
- Runtime_ocaml_Runtime[13],
- _aRf_),
- _aRh_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ix_,
- abattement_depense_nette_minim),
- _aRg_),
- _aRi_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Iy_,
- Runtime_ocaml_Runtime[13],
- _aRh_),
- _aRj_=caml_call2(Runtime_ocaml_Runtime[27],_Iz_,_aRi_),
- _aRk_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IA_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRl_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IB_,
- traitement_aide_finale_minorat),
- _aRk_),
- _aRm_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IC_,
- Runtime_ocaml_Runtime[13],
- _aRl_),
- _aRn_=caml_call2(Runtime_ocaml_Runtime[27],_ID_,_aRm_),
- _aRo_=caml_call2(Runtime_ocaml_Runtime[68],_aRn_,_aRj_);
- if(caml_call2(Runtime_ocaml_Runtime[73],_aRo_,_aRb_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$294);
- var
- _aRp_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IE_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRq_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IF_,
- traitement_aide_finale_minorat),
- _aRp_),
- _aRr_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IG_,
- Runtime_ocaml_Runtime[13],
- _aRq_),
- _aRs_=caml_call2(Runtime_ocaml_Runtime[27],_IH_,_aRr_),
- _aRt_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _II_,
- Runtime_ocaml_Runtime[13],
- _aRs_),
- _aRu_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IJ_,
- abattement_depense_nette_minim),
- _aRt_),
- _aRv_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IK_,
- Runtime_ocaml_Runtime[13],
- _aRu_),
- _aRw_=caml_call2(Runtime_ocaml_Runtime[27],_IL_,_aRv_),
- _aRx_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IM_,
- Runtime_ocaml_Runtime[13],
- param),
- _aRy_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IN_,
- traitement_aide_finale_minorat),
- _aRx_),
- _aRz_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IO_,
- Runtime_ocaml_Runtime[13],
- _aRy_),
- _aRA_=caml_call2(Runtime_ocaml_Runtime[27],_IP_,_aRz_);
- return caml_call2(Runtime_ocaml_Runtime[68],_aRA_,_aRw_)},
- _aQ__=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_IQ_,1)},
- _aQ$_=caml_call4(Runtime_ocaml_Runtime[62],_IR_,[0],_aQ__,_aQ9_);
- return _aQ$_}
- catch(_aRa_)
- {_aRa_ = caml_wrap_exception(_aRa_);
- if(_aRa_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ir_];
- throw _aRa_}}
- var
- traitement_aide_finale_depense=
- caml_call3
- (Runtime_ocaml_Runtime[28],_IS_,Runtime_ocaml_Runtime[10],_aPT_);
- function _aPU_(param)
- {try
- {var
- _aQY_=
- function(param$0)
- {var
- _aQ2_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IU_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQ3_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IV_,
- traitement_aide_finale_depense),
- _aQ2_),
- _aQ4_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IW_,
- Runtime_ocaml_Runtime[13],
- _aQ3_),
- _aQ5_=caml_call2(Runtime_ocaml_Runtime[27],_IX_,_aQ4_);
- if(caml_call2(Runtime_ocaml_Runtime[74],_aQ5_,redevance))
- return redevance;
- var
- _aQ6_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _IY_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQ7_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _IZ_,
- traitement_aide_finale_depense),
- _aQ6_),
- _aQ8_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _I0_,
- Runtime_ocaml_Runtime[13],
- _aQ7_);
- return caml_call2(Runtime_ocaml_Runtime[27],_I1_,_aQ8_)},
- _aQZ_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_I2_,1)},
- _aQ0_=caml_call4(Runtime_ocaml_Runtime[62],_I3_,[0],_aQZ_,_aQY_);
- return _aQ0_}
- catch(_aQ1_)
- {_aQ1_ = caml_wrap_exception(_aQ1_);
- if(_aQ1_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_IT_];
- throw _aQ1_}}
- var
- traitement_aide_finale_redevan=
- caml_call3
- (Runtime_ocaml_Runtime[28],_I4_,Runtime_ocaml_Runtime[10],_aPU_);
- function _aPV_(param)
- {try
- {var
- _aP8_=
- function(param$0)
- {var
- _aQa_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$295),
- _aQb_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _I6_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQc_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _I7_,
- traitement_aide_finale_redevan),
- _aQb_),
- _aQd_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _I8_,
- Runtime_ocaml_Runtime[13],
- _aQc_),
- _aQe_=caml_call2(Runtime_ocaml_Runtime[27],_I9_,_aQd_),
- _aQf_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _I__,
- Runtime_ocaml_Runtime[13],
- _aQe_),
- _aQg_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _I$_,
- contributions_sociales_dot_mon),
- _aQf_),
- _aQh_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ja_,
- Runtime_ocaml_Runtime[13],
- _aQg_),
- _aQi_=caml_call2(Runtime_ocaml_Runtime[27],_Jb_,_aQh_),
- _aQj_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$5),
- _aQk_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jc_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQl_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jd_,
- traitement_aide_finale_redevan),
- _aQk_),
- _aQm_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Je_,
- Runtime_ocaml_Runtime[13],
- _aQl_),
- _aQn_=caml_call2(Runtime_ocaml_Runtime[27],_Jf_,_aQm_),
- _aQo_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jg_,
- Runtime_ocaml_Runtime[13],
- _aQn_),
- _aQp_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jh_,
- contributions_sociales_dot_mon),
- _aQo_),
- _aQq_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ji_,
- Runtime_ocaml_Runtime[13],
- _aQp_),
- _aQr_=caml_call2(Runtime_ocaml_Runtime[27],_Jj_,_aQq_),
- _aQs_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jk_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQt_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jl_,
- traitement_aide_finale_redevan),
- _aQs_),
- _aQu_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jm_,
- Runtime_ocaml_Runtime[13],
- _aQt_),
- _aQv_=caml_call2(Runtime_ocaml_Runtime[27],_Jn_,_aQu_),
- _aQw_=caml_call2(Runtime_ocaml_Runtime[68],_aQv_,_aQr_),
- _aQx_=caml_call2(Runtime_ocaml_Runtime[68],_aQw_,_aQj_),
- _aQy_=caml_call1(Runtime_ocaml_Runtime[38],_aQx_),
- _aQz_=caml_call2(Runtime_ocaml_Runtime[67],_aQy_,_aQi_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_aQz_,_aQa_))
- {var
- _aQA_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jo_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQB_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jp_,
- traitement_aide_finale_redevan),
- _aQA_),
- _aQC_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jq_,
- Runtime_ocaml_Runtime[13],
- _aQB_),
- _aQD_=caml_call2(Runtime_ocaml_Runtime[27],_Jr_,_aQC_),
- _aQE_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Js_,
- Runtime_ocaml_Runtime[13],
- _aQD_),
- _aQF_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jt_,
- contributions_sociales_dot_mon),
- _aQE_),
- _aQG_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ju_,
- Runtime_ocaml_Runtime[13],
- _aQF_),
- _aQH_=caml_call2(Runtime_ocaml_Runtime[27],_Jv_,_aQG_),
- _aQI_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$6),
- _aQJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jw_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQK_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Jx_,
- traitement_aide_finale_redevan),
- _aQJ_),
- _aQL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Jy_,
- Runtime_ocaml_Runtime[13],
- _aQK_),
- _aQM_=caml_call2(Runtime_ocaml_Runtime[27],_Jz_,_aQL_),
- _aQN_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JA_,
- Runtime_ocaml_Runtime[13],
- _aQM_),
- _aQO_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _JB_,
- contributions_sociales_dot_mon),
- _aQN_),
- _aQP_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JC_,
- Runtime_ocaml_Runtime[13],
- _aQO_),
- _aQQ_=caml_call2(Runtime_ocaml_Runtime[27],_JD_,_aQP_),
- _aQR_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JE_,
- Runtime_ocaml_Runtime[13],
- param),
- _aQS_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _JF_,
- traitement_aide_finale_redevan),
- _aQR_),
- _aQT_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JG_,
- Runtime_ocaml_Runtime[13],
- _aQS_),
- _aQU_=caml_call2(Runtime_ocaml_Runtime[27],_JH_,_aQT_),
- _aQV_=caml_call2(Runtime_ocaml_Runtime[68],_aQU_,_aQQ_),
- _aQW_=caml_call2(Runtime_ocaml_Runtime[68],_aQV_,_aQI_),
- _aQX_=caml_call1(Runtime_ocaml_Runtime[38],_aQW_);
- return caml_call2(Runtime_ocaml_Runtime[67],_aQX_,_aQH_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$296)},
- _aP9_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_JI_,1)},
- _aP__=caml_call4(Runtime_ocaml_Runtime[62],_JJ_,[0],_aP9_,_aP8_);
- return _aP__}
- catch(_aP$_)
- {_aP$_ = caml_wrap_exception(_aP$_);
- if(_aP$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_I5_];
- throw _aP$_}}
- var
- traitement_aide_finale_contrib=
- caml_call3
- (Runtime_ocaml_Runtime[28],_JK_,Runtime_ocaml_Runtime[10],_aPV_);
- function _aPW_(param)
- {try
- {var
- _aPX_=
- function(param$0)
- {var
- _aP1_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JM_,
- Runtime_ocaml_Runtime[13],
- param),
- _aP2_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _JN_,
- traitement_aide_finale_contrib),
- _aP1_),
- _aP3_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JO_,
- Runtime_ocaml_Runtime[13],
- _aP2_),
- _aP4_=caml_call2(Runtime_ocaml_Runtime[27],_JP_,_aP3_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _aP4_,
- montant_minimal_aide_d842_15))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$297);
- var
- _aP5_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JQ_,
- Runtime_ocaml_Runtime[13],
- param),
- _aP6_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _JR_,
- traitement_aide_finale_contrib),
- _aP5_),
- _aP7_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _JS_,
- Runtime_ocaml_Runtime[13],
- _aP6_);
- return caml_call2(Runtime_ocaml_Runtime[27],_JT_,_aP7_)},
- _aPY_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_JU_,1)},
- _aPZ_=caml_call4(Runtime_ocaml_Runtime[62],_JV_,[0],_aPY_,_aPX_);
- return _aPZ_}
- catch(_aP0_)
- {_aP0_ = caml_wrap_exception(_aP0_);
- if(_aP0_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_JL_];
- throw _aP0_}}
- var
- traitement_aide_finale_montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_JW_,Runtime_ocaml_Runtime[10],_aPW_);
- return [0,
- coefficient_prise_en_charge,
- equivalence_loyer,
- montant_forfaitaire_charges,
- loyer_minimal,
- aide_finale_formule,
- traitement_aide_finale_montant]}
- function calcul_allocation_logement_acc(calcul_allocation_logement_acc)
- {var
- ressources_menage_arrondies_ba=calcul_allocation_logement_acc[1],
- nombre_personnes_a_charge=calcul_allocation_logement_acc[2],
- situation_familiale_calcul_apl=calcul_allocation_logement_acc[3],
- zone=calcul_allocation_logement_acc[4],
- date_courante=calcul_allocation_logement_acc[5],
- mensualite_principale=calcul_allocation_logement_acc[6],
- situation_r822_11_13_17=calcul_allocation_logement_acc[7],
- date_signature_pret=calcul_allocation_logement_acc[8],
- type_travaux_logement=calcul_allocation_logement_acc[9],
- local_habite_premiere_fois_ben=calcul_allocation_logement_acc[10],
- date_entree_logement=calcul_allocation_logement_acc[11],
- charges_mensuelles_pret=calcul_allocation_logement_acc[12],
- copropriete=calcul_allocation_logement_acc[13];
- try
- {var
- _azQ_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$3)},
- _azR_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_JY_,1)},
- _azS_=caml_call4(Runtime_ocaml_Runtime[62],_JZ_,[0],_azR_,_azQ_)}
- catch(_aOG_)
- {_aOG_ = caml_wrap_exception(_aOG_);
- if(_aOG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_JX_];
- throw _aOG_}
- var
- montant_forfaitaire_d842_6=
- caml_call3
- (Runtime_ocaml_Runtime[28],_J0_,Runtime_ocaml_Runtime[13],_azS_);
- try
- {var
- _azT_=
- function(param)
- {var
- _aOE_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957$0),
- _aOF_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$192);
- return caml_call2(Runtime_ocaml_Runtime[89],_aOF_,_aOE_)},
- _azU_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J2_,1)},
- _azV_=caml_call4(Runtime_ocaml_Runtime[62],_J3_,[0],_azU_,_azT_)}
- catch(_aOD_)
- {_aOD_ = caml_wrap_exception(_aOD_);
- if(_aOD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_J1_];
- throw _aOD_}
- var
- taux_francs_vers_euros=
- caml_call3
- (Runtime_ocaml_Runtime[28],_J4_,Runtime_ocaml_Runtime[15],_azV_);
- try
- {var
- _azW_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$4)},
- _azX_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J6_,1)},
- _azY_=caml_call4(Runtime_ocaml_Runtime[62],_J7_,[0],_azX_,_azW_)}
- catch(_aOC_)
- {_aOC_ = caml_wrap_exception(_aOC_);
- if(_aOC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_J5_];
- throw _aOC_}
- var
- montant_minimal_aide_d842_6=
- caml_call3
- (Runtime_ocaml_Runtime[28],_J8_,Runtime_ocaml_Runtime[13],_azY_);
- try
- {var
- _azZ_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$1)},
- _az0_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_J__,1)},
- _az1_=caml_call4(Runtime_ocaml_Runtime[62],_J$_,[0],_az0_,_azZ_)}
- catch(_aOB_)
- {_aOB_ = caml_wrap_exception(_aOB_);
- if(_aOB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_J9_];
- throw _aOB_}
- var
- montant_forfaitaire_d842_11=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ka_,Runtime_ocaml_Runtime[13],_az1_);
- try
- {var
- _az2_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_390000)},
- _az3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kc_,1)},
- _az4_=caml_call4(Runtime_ocaml_Runtime[62],_Kd_,[0],_az3_,_az2_)}
- catch(_aOA_)
- {_aOA_ = caml_wrap_exception(_aOA_);
- if(_aOA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kb_];
- throw _aOA_}
- var
- montant_forfaitaire_d842_12=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ke_,Runtime_ocaml_Runtime[13],_az4_);
- try
- {var
- _az5_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$1)},
- _az6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kg_,1)},
- _az7_=caml_call4(Runtime_ocaml_Runtime[62],_Kh_,[0],_az6_,_az5_)}
- catch(_aOz_)
- {_aOz_ = caml_wrap_exception(_aOz_);
- if(_aOz_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kf_];
- throw _aOz_}
- var
- coefficient_d842_11=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ki_,Runtime_ocaml_Runtime[15],_az7_);
- try
- {var
- _az8_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25$0)},
- _az9_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Kk_,1)},
- _az__=caml_call4(Runtime_ocaml_Runtime[62],_Kl_,[0],_az9_,_az8_)}
- catch(_aOy_)
- {_aOy_ = caml_wrap_exception(_aOy_);
- if(_aOy_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kj_];
- throw _aOy_}
- var
- coefficient_d842_12=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Km_,Runtime_ocaml_Runtime[15],_az__);
- try
- {var
- _az$_=function(param){return nombre_personnes_a_charge},
- _aAa_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ko_,1)},
- _aAb_=caml_call4(Runtime_ocaml_Runtime[62],_Kp_,[0],_aAa_,_az$_),
- calcul_nombre_parts_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Kq_,Runtime_ocaml_Runtime[14],_aAb_)}
- catch(_aOx_)
- {_aOx_ = caml_wrap_exception(_aOx_);
- if(_aOx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kn_];
- throw _aOx_}
- try
- {var
- _aAc_=function(param){return situation_familiale_calcul_apl},
- _aAd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ks_,1)},
- _aAe_=caml_call4(Runtime_ocaml_Runtime[62],_Kt_,[0],_aAd_,_aAc_),
- calcul_nombre_parts_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ku_,
- embed_situation_familiale_calc,
- _aAe_)}
- catch(_aOw_)
- {_aOw_ = caml_wrap_exception(_aOw_);
- if(_aOw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kr_];
- throw _aOw_}
- var
- _aAf_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Kv_,calcul_nombre_parts_accession_),
- [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Kw_,_aAf_),
- calcul_nombre_parts_dot_n_nomb=result[1];
- try
- {var
- _aAg_=function(param){return date_courante},
- _aAh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ky_,1)},
- _aAi_=caml_call4(Runtime_ocaml_Runtime[62],_Kz_,[0],_aAh_,_aAg_),
- contributions_sociales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_KA_,Runtime_ocaml_Runtime[16],_aAi_)}
- catch(_aOv_)
- {_aOv_ = caml_wrap_exception(_aOv_);
- if(_aOv_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Kx_];
- throw _aOv_}
- var
- _aAj_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_KB_,contributions_sociales_aides_p),
- [0,contributions_sociales_dot_dat]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_KC_,_aAj_),
- contributions_sociales_dot_mon=result$0[1];
- try
- {var
- _aAk_=
- function(param)
- {if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$298)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$5);
- var
- _aOr_=
- caml_call1(Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _aOs_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$4),
- _aOt_=caml_call2(Runtime_ocaml_Runtime[65],_aOs_,_aOr_),
- _aOu_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$6);
- return caml_call2(Runtime_ocaml_Runtime[67],_aOu_,_aOt_)},
- _aAl_=
- function(param)
- {var
- _aOp_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aOq_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aOp_);
- return caml_call2(Runtime_ocaml_Runtime[29],_KE_,_aOq_)},
- _aAm_=
- [0,
- function(param)
- {function _aOh_(param)
- {var
- _aOl_=
- caml_call1
- (Runtime_ocaml_Runtime[41],nombre_personnes_a_charge),
- _aOm_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$5),
- _aOn_=caml_call2(Runtime_ocaml_Runtime[65],_aOm_,_aOl_),
- _aOo_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$1)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$7);
- return caml_call2(Runtime_ocaml_Runtime[67],_aOo_,_aOn_)}
- function _aOi_(param)
- {var
- _aOj_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aOk_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aOj_),
- copropriete$0=_aOk_?copropriete:_aOk_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KF_,copropriete$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_KG_,[0],_aOi_,_aOh_)}],
- _aAn_=caml_call4(Runtime_ocaml_Runtime[62],_KH_,_aAm_,_aAl_,_aAk_)}
- catch(_aOg_)
- {_aOg_ = caml_wrap_exception(_aOg_);
- if(_aOg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_KD_];
- throw _aOg_}
- var
- montant_forfaitaire_charges=
- caml_call3
- (Runtime_ocaml_Runtime[28],_KI_,Runtime_ocaml_Runtime[13],_aAn_);
- function _aAo_(param)
- {try
- {var
- _aOa_=
- function(param$0)
- {var
- _aOe_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$299),
- _aOf_=
- caml_call2
- (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_6);
- return caml_call2(Runtime_ocaml_Runtime[73],_aOf_,_aOe_)
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$300)
- :caml_call2
- (Runtime_ocaml_Runtime[68],param,montant_forfaitaire_d842_6)},
- _aOb_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_KK_,1)},
- _aOc_=caml_call4(Runtime_ocaml_Runtime[62],_KL_,[0],_aOb_,_aOa_);
- return _aOc_}
- catch(_aOd_)
- {_aOd_ = caml_wrap_exception(_aOd_);
- if(_aOd_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_KJ_];
- throw _aOd_}}
- var
- traitement_aide_finale_minorat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_KM_,Runtime_ocaml_Runtime[10],_aAo_);
- function _aAp_(param)
- {try
- {var
- _aEL_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aEM_=function(param){return 0},
- _aEN_=
- function(param$0)
- {function _aNO_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$301)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31476)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37933);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$193)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40787);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$41)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41927);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$20)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43106);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$16)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_44262);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$3)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_45200);
- var
- _aNU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$4),
- _aNV_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNU_),
- _aNW_=caml_call1(Runtime_ocaml_Runtime[41],_aNV_),
- _aNX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3936),
- _aNY_=caml_call2(Runtime_ocaml_Runtime[65],_aNX_,_aNW_),
- _aNZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_45200$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNZ_,_aNY_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$302)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27614)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33853);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$194)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36646);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$42)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37915);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$21)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39222);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$17)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40510);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$5)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43378);
- var
- _aN0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$6),
- _aN1_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aN0_),
- _aN2_=caml_call1(Runtime_ocaml_Runtime[41],_aN1_),
- _aN3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3771),
- _aN4_=caml_call2(Runtime_ocaml_Runtime[65],_aN3_,_aN2_),
- _aN5_=caml_call1(Runtime_ocaml_Runtime[31],cst_43378$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aN5_,_aN4_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$303)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25904)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31419);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$195)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34255);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$43)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35670);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$22)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37107);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$18)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38521);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$7)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41392);
- var
- _aN6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$8),
- _aN7_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aN6_),
- _aN8_=caml_call1(Runtime_ocaml_Runtime[41],_aN7_),
- _aN9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3588),
- _aN__=caml_call2(Runtime_ocaml_Runtime[65],_aN9_,_aN8_),
- _aN$_=caml_call1(Runtime_ocaml_Runtime[31],cst_41392$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aN$_,_aN__)}}
- function _aNP_(param$0)
- {var
- _aNQ_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aNR_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aNQ_);
- if(_aNR_)
- var
- _aNS_=caml_call3(Runtime_ocaml_Runtime[56],2019,10,1),
- _aNT_=caml_call2(Runtime_ocaml_Runtime[98],param,_aNS_);
- else
- var _aNT_=_aNR_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KO_,_aNT_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KP_,[0],_aNP_,_aNO_)},
- _aEO_=
- function(param$0)
- {function _aNo_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$304)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31382)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37820);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$196)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40665);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$44)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41801);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$23)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42977);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$19)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_44130);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$9)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_45064);
- var
- _aNw_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$10),
- _aNx_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNw_),
- _aNy_=caml_call1(Runtime_ocaml_Runtime[41],_aNx_),
- _aNz_=caml_call1(Runtime_ocaml_Runtime[31],cst_3924),
- _aNA_=caml_call2(Runtime_ocaml_Runtime[65],_aNz_,_aNy_),
- _aNB_=caml_call1(Runtime_ocaml_Runtime[31],cst_45064$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNB_,_aNA_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$305)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27531)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33751);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$197)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36536);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$45)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37801);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$24)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39105);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$20)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40389);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$11)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43248);
- var
- _aNC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$12),
- _aND_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNC_),
- _aNE_=caml_call1(Runtime_ocaml_Runtime[41],_aND_),
- _aNF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3760),
- _aNG_=caml_call2(Runtime_ocaml_Runtime[65],_aNF_,_aNE_),
- _aNH_=caml_call1(Runtime_ocaml_Runtime[31],cst_43248$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNH_,_aNG_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$306)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25826)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31325);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$198)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34152);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$46)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35564);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$25)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36996);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$21)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38406);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$13)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41268);
- var
- _aNI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$14),
- _aNJ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNI_),
- _aNK_=caml_call1(Runtime_ocaml_Runtime[41],_aNJ_),
- _aNL_=caml_call1(Runtime_ocaml_Runtime[31],cst_3578),
- _aNM_=caml_call2(Runtime_ocaml_Runtime[65],_aNL_,_aNK_),
- _aNN_=caml_call1(Runtime_ocaml_Runtime[31],cst_41268$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNN_,_aNM_)}}
- function _aNp_(param$0)
- {var
- _aNq_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aNr_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aNq_);
- if(_aNr_)
- {var
- _aNs_=caml_call3(Runtime_ocaml_Runtime[56],2017,10,1),
- _aNt_=caml_call2(Runtime_ocaml_Runtime[98],param,_aNs_);
- if(_aNt_)
- var
- _aNu_=caml_call3(Runtime_ocaml_Runtime[56],2019,10,1),
- _aNv_=caml_call2(Runtime_ocaml_Runtime[101],param,_aNu_);
- else
- var _aNv_=_aNt_}
- else
- var _aNv_=_aNr_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KQ_,_aNv_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KR_,[0],_aNp_,_aNo_)},
- _aEP_=
- function(param$0)
- {function _aM0_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$307)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31148)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37538);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$199)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40362);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$47)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41490);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$26)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42657);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$22)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43801);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$15)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_44729);
- var
- _aM8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$16),
- _aM9_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aM8_),
- _aM__=caml_call1(Runtime_ocaml_Runtime[41],_aM9_),
- _aM$_=caml_call1(Runtime_ocaml_Runtime[31],cst_3895),
- _aNa_=caml_call2(Runtime_ocaml_Runtime[65],_aM$_,_aM__),
- _aNb_=caml_call1(Runtime_ocaml_Runtime[31],cst_44729$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNb_,_aNa_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$308)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27326)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33500$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$200)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36264);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$48)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37520);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$27)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38814);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$23)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40088);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$17)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42926);
- var
- _aNc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$18),
- _aNd_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNc_),
- _aNe_=caml_call1(Runtime_ocaml_Runtime[41],_aNd_),
- _aNf_=caml_call1(Runtime_ocaml_Runtime[31],cst_3732),
- _aNg_=caml_call2(Runtime_ocaml_Runtime[65],_aNf_,_aNe_),
- _aNh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42926$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNh_,_aNg_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$309)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25634)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31092);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$201)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33898);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$49)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35299);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$28)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36721);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$24)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38120);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$19)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40961);
- var
- _aNi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$20),
- _aNj_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aNi_),
- _aNk_=caml_call1(Runtime_ocaml_Runtime[41],_aNj_),
- _aNl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3551),
- _aNm_=caml_call2(Runtime_ocaml_Runtime[65],_aNl_,_aNk_),
- _aNn_=caml_call1(Runtime_ocaml_Runtime[31],cst_40961$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aNn_,_aNm_)}}
- function _aM1_(param$0)
- {var
- _aM2_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aM3_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aM2_);
- if(_aM3_)
- {var
- _aM4_=caml_call3(Runtime_ocaml_Runtime[56],2015,10,1),
- _aM5_=caml_call2(Runtime_ocaml_Runtime[98],param,_aM4_);
- if(_aM5_)
- var
- _aM6_=caml_call3(Runtime_ocaml_Runtime[56],2017,10,1),
- _aM7_=caml_call2(Runtime_ocaml_Runtime[101],param,_aM6_);
- else
- var _aM7_=_aM5_}
- else
- var _aM7_=_aM3_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KS_,_aM7_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KT_,[0],_aM1_,_aM0_)},
- _aEQ_=
- function(param$0)
- {function _aMA_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$310)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_31123)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37508);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$202)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40330);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$50)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41457);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$29)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42623);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$25)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43766);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$21)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_44693);
- var
- _aMI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$22),
- _aMJ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMI_),
- _aMK_=caml_call1(Runtime_ocaml_Runtime[41],_aMJ_),
- _aML_=caml_call1(Runtime_ocaml_Runtime[31],cst_3892),
- _aMM_=caml_call2(Runtime_ocaml_Runtime[65],_aML_,_aMK_),
- _aMN_=caml_call1(Runtime_ocaml_Runtime[31],cst_44693$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMN_,_aMM_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$311)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27304)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33473);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$203)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36235);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$51)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37490);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$30)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38783);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$26)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40056);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$23)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42892);
- var
- _aMO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$24),
- _aMP_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMO_),
- _aMQ_=caml_call1(Runtime_ocaml_Runtime[41],_aMP_),
- _aMR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3729),
- _aMS_=caml_call2(Runtime_ocaml_Runtime[65],_aMR_,_aMQ_),
- _aMT_=caml_call1(Runtime_ocaml_Runtime[31],cst_42892$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMT_,_aMS_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$312)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25614)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31067);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$204)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33871);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$52)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35271);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$31)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36692);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$27)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38090);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$25)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40928);
- var
- _aMU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$26),
- _aMV_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMU_),
- _aMW_=caml_call1(Runtime_ocaml_Runtime[41],_aMV_),
- _aMX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3548),
- _aMY_=caml_call2(Runtime_ocaml_Runtime[65],_aMX_,_aMW_),
- _aMZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_40928$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMZ_,_aMY_)}}
- function _aMB_(param$0)
- {var
- _aMC_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aMD_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aMC_);
- if(_aMD_)
- {var
- _aME_=caml_call3(Runtime_ocaml_Runtime[56],2014,10,1),
- _aMF_=caml_call2(Runtime_ocaml_Runtime[98],param,_aME_);
- if(_aMF_)
- var
- _aMG_=caml_call3(Runtime_ocaml_Runtime[56],2015,10,1),
- _aMH_=caml_call2(Runtime_ocaml_Runtime[101],param,_aMG_);
- else
- var _aMH_=_aMF_}
- else
- var _aMH_=_aMD_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KU_,_aMH_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KV_,[0],_aMB_,_aMA_)},
- _aER_=
- function(param$0)
- {function _aMa_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$313)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30947)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_37295);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$205)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40101);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$53)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41222);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$32)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42381);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$28)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43518);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$27)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_44440);
- var
- _aMi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$28),
- _aMj_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMi_),
- _aMk_=caml_call1(Runtime_ocaml_Runtime[41],_aMj_),
- _aMl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3870),
- _aMm_=caml_call2(Runtime_ocaml_Runtime[65],_aMl_,_aMk_),
- _aMn_=caml_call1(Runtime_ocaml_Runtime[31],cst_44440$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMn_,_aMm_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$314)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27149)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33283);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$206)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36030);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$54)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37278);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$33)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38563);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$29)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39829);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$29)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42649);
- var
- _aMo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$30),
- _aMp_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMo_),
- _aMq_=caml_call1(Runtime_ocaml_Runtime[41],_aMp_),
- _aMr_=caml_call1(Runtime_ocaml_Runtime[31],cst_3708),
- _aMs_=caml_call2(Runtime_ocaml_Runtime[65],_aMr_,_aMq_),
- _aMt_=caml_call1(Runtime_ocaml_Runtime[31],cst_42659);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMt_,_aMs_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$315)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25469)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30891);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$207)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33679);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$55)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35071);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$34)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36484);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$30)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37874);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$31)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40696);
- var
- _aMu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$32),
- _aMv_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aMu_),
- _aMw_=caml_call1(Runtime_ocaml_Runtime[41],_aMv_),
- _aMx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3528),
- _aMy_=caml_call2(Runtime_ocaml_Runtime[65],_aMx_,_aMw_),
- _aMz_=caml_call1(Runtime_ocaml_Runtime[31],cst_40696$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aMz_,_aMy_)}}
- function _aMb_(param$0)
- {var
- _aMc_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aMd_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aMc_);
- if(_aMd_)
- {var
- _aMe_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1),
- _aMf_=caml_call2(Runtime_ocaml_Runtime[98],param,_aMe_);
- if(_aMf_)
- var
- _aMg_=caml_call3(Runtime_ocaml_Runtime[56],2014,10,1),
- _aMh_=caml_call2(Runtime_ocaml_Runtime[101],param,_aMg_);
- else
- var _aMh_=_aMf_}
- else
- var _aMh_=_aMd_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KW_,_aMh_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KX_,[0],_aMb_,_aMa_)},
- _aES_=
- function(param$0)
- {function _aLM_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$316)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_30296)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36510);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$208)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39257);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$56)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40354);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$35)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41489);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$31)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42602);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$33)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43505);
- var
- _aLU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$34),
- _aLV_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLU_),
- _aLW_=caml_call1(Runtime_ocaml_Runtime[41],_aLV_),
- _aLX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3789),
- _aLY_=caml_call2(Runtime_ocaml_Runtime[65],_aLX_,_aLW_),
- _aLZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_43505$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLZ_,_aLY_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$317)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26578)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32582);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$209)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35272);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$57)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36493);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$36)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37751);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$32)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38991);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$35)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41751);
- var
- _aL0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$36),
- _aL1_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aL0_),
- _aL2_=caml_call1(Runtime_ocaml_Runtime[41],_aL1_),
- _aL3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3630),
- _aL4_=caml_call2(Runtime_ocaml_Runtime[65],_aL3_,_aL2_),
- _aL5_=caml_call1(Runtime_ocaml_Runtime[31],cst_41751$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aL5_,_aL4_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$318)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24933)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30241);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$210)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32970);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$58)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34333);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$37)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35716);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$33)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37077);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$37)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39839);
- var
- _aL6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$38),
- _aL7_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aL6_),
- _aL8_=caml_call1(Runtime_ocaml_Runtime[41],_aL7_),
- _aL9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3454),
- _aL__=caml_call2(Runtime_ocaml_Runtime[65],_aL9_,_aL8_),
- _aL$_=caml_call1(Runtime_ocaml_Runtime[31],cst_39839$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aL$_,_aL__)}}
- function _aLN_(param$0)
- {var
- _aLO_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aLP_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aLO_);
- if(_aLP_)
- {var
- _aLQ_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1),
- _aLR_=caml_call2(Runtime_ocaml_Runtime[98],param,_aLQ_);
- if(_aLR_)
- var
- _aLS_=caml_call3(Runtime_ocaml_Runtime[56],2013,1,1),
- _aLT_=caml_call2(Runtime_ocaml_Runtime[101],param,_aLS_);
- else
- var _aLT_=_aLR_}
- else
- var _aLT_=_aLP_;
- return caml_call2(Runtime_ocaml_Runtime[29],_KY_,_aLT_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_KZ_,[0],_aLN_,_aLM_)},
- _aET_=
- function(param$0)
- {function _aLm_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$319)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29996)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_36149);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$211)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38868);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$59)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39954);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$38)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41078);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$34)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42180);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$39)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_43074);
- var
- _aLu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$40),
- _aLv_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLu_),
- _aLw_=caml_call1(Runtime_ocaml_Runtime[41],_aLv_),
- _aLx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3751),
- _aLy_=caml_call2(Runtime_ocaml_Runtime[65],_aLx_,_aLw_),
- _aLz_=caml_call1(Runtime_ocaml_Runtime[31],cst_43074$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLz_,_aLy_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$320)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26315)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32259);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$212)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34923);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$60)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36132);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$39)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37373);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$35)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38605);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$41)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41338);
- var
- _aLA_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$42),
- _aLB_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLA_),
- _aLC_=caml_call1(Runtime_ocaml_Runtime[41],_aLB_),
- _aLD_=caml_call1(Runtime_ocaml_Runtime[31],cst_3594),
- _aLE_=caml_call2(Runtime_ocaml_Runtime[65],_aLD_,_aLC_),
- _aLF_=caml_call1(Runtime_ocaml_Runtime[31],cst_41338$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLF_,_aLE_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$321)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24686)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29942);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$213)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32644);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$61)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33993);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$40)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35362);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$36)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36710);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$43)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39445);
- var
- _aLG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$44),
- _aLH_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLG_),
- _aLI_=caml_call1(Runtime_ocaml_Runtime[41],_aLH_),
- _aLJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3420),
- _aLK_=caml_call2(Runtime_ocaml_Runtime[65],_aLJ_,_aLI_),
- _aLL_=caml_call1(Runtime_ocaml_Runtime[31],cst_39445$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLL_,_aLK_)}}
- function _aLn_(param$0)
- {var
- _aLo_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aLp_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aLo_);
- if(_aLp_)
- {var
- _aLq_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1),
- _aLr_=caml_call2(Runtime_ocaml_Runtime[98],param,_aLq_);
- if(_aLr_)
- var
- _aLs_=caml_call3(Runtime_ocaml_Runtime[56],2012,1,1),
- _aLt_=caml_call2(Runtime_ocaml_Runtime[101],param,_aLs_);
- else
- var _aLt_=_aLr_}
- else
- var _aLt_=_aLp_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K0_,_aLt_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K1_,[0],_aLn_,_aLm_)},
- _aEU_=
- function(param$0)
- {function _aKY_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$322)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29670)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35757);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$214)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38445);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$62)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39519);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$41)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40601);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$37)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41721);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$45)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42605);
- var
- _aK6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$46),
- _aK7_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aK6_),
- _aK8_=caml_call1(Runtime_ocaml_Runtime[41],_aK7_),
- _aK9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3710),
- _aK__=caml_call2(Runtime_ocaml_Runtime[65],_aK9_,_aK8_),
- _aK$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42605$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aK$_,_aK__);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$323)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26029)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31908);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$215)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34643);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$63)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35739);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$42)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36970);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$38)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38185);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$47)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40888);
- var
- _aLa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$48),
- _aLb_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLa_),
- _aLc_=caml_call1(Runtime_ocaml_Runtime[41],_aLb_),
- _aLd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3555),
- _aLe_=caml_call2(Runtime_ocaml_Runtime[65],_aLd_,_aLc_),
- _aLf_=caml_call1(Runtime_ocaml_Runtime[31],cst_40888$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLf_,_aLe_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$324)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24417)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29616);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$216)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32289);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$64)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33623$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$43)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34977);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$39)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36311);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$49)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39016);
- var
- _aLg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$50),
- _aLh_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aLg_),
- _aLi_=caml_call1(Runtime_ocaml_Runtime[41],_aLh_),
- _aLj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3383),
- _aLk_=caml_call2(Runtime_ocaml_Runtime[65],_aLj_,_aLi_),
- _aLl_=caml_call1(Runtime_ocaml_Runtime[31],cst_39016$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aLl_,_aLk_)}}
- function _aKZ_(param$0)
- {var
- _aK0_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aK1_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aK0_);
- if(_aK1_)
- {var
- _aK2_=caml_call3(Runtime_ocaml_Runtime[56],2010,1,1),
- _aK3_=caml_call2(Runtime_ocaml_Runtime[98],param,_aK2_);
- if(_aK3_)
- var
- _aK4_=caml_call3(Runtime_ocaml_Runtime[56],2011,1,1),
- _aK5_=caml_call2(Runtime_ocaml_Runtime[101],param,_aK4_);
- else
- var _aK5_=_aK3_}
- else
- var _aK5_=_aK1_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K2_,_aK5_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K3_,[0],_aKZ_,_aKY_)},
- _aEV_=
- function(param$0)
- {function _aKy_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$325)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_29575)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_35642);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$217)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38322);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$65)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39393);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$44)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40501);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$40)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41588);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$51)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_42469);
- var
- _aKG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$52),
- _aKH_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKG_),
- _aKI_=caml_call1(Runtime_ocaml_Runtime[41],_aKH_),
- _aKJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3698),
- _aKK_=caml_call2(Runtime_ocaml_Runtime[65],_aKJ_,_aKI_),
- _aKL_=caml_call1(Runtime_ocaml_Runtime[31],cst_42469$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKL_,_aKK_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$326)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25946)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31806);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$218)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34433);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$66)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35625);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$45)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36852);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$41)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38063);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$53)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40758);
- var
- _aKM_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$54),
- _aKN_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKM_),
- _aKO_=caml_call1(Runtime_ocaml_Runtime[41],_aKN_),
- _aKP_=caml_call1(Runtime_ocaml_Runtime[31],cst_3544),
- _aKQ_=caml_call2(Runtime_ocaml_Runtime[65],_aKP_,_aKO_),
- _aKR_=caml_call1(Runtime_ocaml_Runtime[31],cst_40758$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKR_,_aKQ_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$327)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24339)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29522);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$219)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32186);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$67)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33516);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$46)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34865);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$42)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36195);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$55)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38892);
- var
- _aKS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$56),
- _aKT_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKS_),
- _aKU_=caml_call1(Runtime_ocaml_Runtime[41],_aKT_),
- _aKV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3372),
- _aKW_=caml_call2(Runtime_ocaml_Runtime[65],_aKV_,_aKU_),
- _aKX_=caml_call1(Runtime_ocaml_Runtime[31],cst_38892$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKX_,_aKW_)}}
- function _aKz_(param$0)
- {var
- _aKA_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aKB_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aKA_);
- if(_aKB_)
- {var
- _aKC_=caml_call3(Runtime_ocaml_Runtime[56],2009,1,1),
- _aKD_=caml_call2(Runtime_ocaml_Runtime[98],param,_aKC_);
- if(_aKD_)
- var
- _aKE_=caml_call3(Runtime_ocaml_Runtime[56],2010,1,1),
- _aKF_=caml_call2(Runtime_ocaml_Runtime[101],param,_aKE_);
- else
- var _aKF_=_aKD_}
- else
- var _aKF_=_aKB_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K4_,_aKF_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K5_,[0],_aKz_,_aKy_)},
- _aEW_=
- function(param$0)
- {function _aJ__(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$328)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_28728)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_34621);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$220)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37224);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$68)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38264);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$47)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39340$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$43)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40396);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$57)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_41252);
- var
- _aKg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$58),
- _aKh_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKg_),
- _aKi_=caml_call1(Runtime_ocaml_Runtime[41],_aKh_),
- _aKj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3592),
- _aKk_=caml_call2(Runtime_ocaml_Runtime[65],_aKj_,_aKi_),
- _aKl_=caml_call1(Runtime_ocaml_Runtime[31],cst_41252$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKl_,_aKk_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$329)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_25203)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30895);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$221)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33446);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$69)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34604);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$48)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35796);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$44)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36972);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$59)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39590);
- var
- _aKm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$60),
- _aKn_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKm_),
- _aKo_=caml_call1(Runtime_ocaml_Runtime[41],_aKn_),
- _aKp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3442),
- _aKq_=caml_call2(Runtime_ocaml_Runtime[65],_aKp_,_aKo_),
- _aKr_=caml_call1(Runtime_ocaml_Runtime[31],cst_39590$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKr_,_aKq_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$330)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23642)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28676);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$222)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31264$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$70)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32556);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$49)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33866);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$45)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35158);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$61)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37778);
- var
- _aKs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$62),
- _aKt_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aKs_),
- _aKu_=caml_call1(Runtime_ocaml_Runtime[41],_aKt_),
- _aKv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3275),
- _aKw_=caml_call2(Runtime_ocaml_Runtime[65],_aKv_,_aKu_),
- _aKx_=caml_call1(Runtime_ocaml_Runtime[31],cst_37778$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aKx_,_aKw_)}}
- function _aJ$_(param$0)
- {var
- _aKa_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aKb_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aKa_);
- if(_aKb_)
- {var
- _aKc_=caml_call3(Runtime_ocaml_Runtime[56],2008,1,1),
- _aKd_=caml_call2(Runtime_ocaml_Runtime[98],param,_aKc_);
- if(_aKd_)
- var
- _aKe_=caml_call3(Runtime_ocaml_Runtime[56],2009,1,1),
- _aKf_=caml_call2(Runtime_ocaml_Runtime[101],param,_aKe_);
- else
- var _aKf_=_aKd_}
- else
- var _aKf_=_aKb_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K6_,_aKf_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K7_,[0],_aJ$_,_aJ__)},
- _aEX_=
- function(param$0)
- {function _aJK_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$331)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27956)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_33691);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$223)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36224);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$71)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37236);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$50)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38283);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$46)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39311);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$63)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_40144);
- var
- _aJS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$64),
- _aJT_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJS_),
- _aJU_=caml_call1(Runtime_ocaml_Runtime[41],_aJT_),
- _aJV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3496),
- _aJW_=caml_call2(Runtime_ocaml_Runtime[65],_aJV_,_aJU_),
- _aJX_=caml_call1(Runtime_ocaml_Runtime[31],cst_40144$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJX_,_aJW_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$332)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_24526)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_30065);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$224)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32548);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$72)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33675);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$51)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34865$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$47)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35979);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$65)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38527);
- var
- _aJY_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$66),
- _aJZ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJY_),
- _aJ0_=caml_call1(Runtime_ocaml_Runtime[41],_aJZ_),
- _aJ1_=caml_call1(Runtime_ocaml_Runtime[31],cst_3350),
- _aJ2_=caml_call2(Runtime_ocaml_Runtime[65],_aJ1_,_aJ0_),
- _aJ3_=caml_call1(Runtime_ocaml_Runtime[31],cst_38527$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJ3_,_aJ2_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$333)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23007)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_27906);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$225)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30424);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$73)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31682);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$52)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32956$0);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$48)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34214);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$67)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36733);
- var
- _aJ4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$68),
- _aJ5_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJ4_),
- _aJ6_=caml_call1(Runtime_ocaml_Runtime[41],_aJ5_),
- _aJ7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3187),
- _aJ8_=caml_call2(Runtime_ocaml_Runtime[65],_aJ7_,_aJ6_),
- _aJ9_=caml_call1(Runtime_ocaml_Runtime[31],cst_36733$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJ9_,_aJ8_)}}
- function _aJL_(param$0)
- {var
- _aJM_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aJN_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aJM_);
- if(_aJN_)
- {var
- _aJO_=caml_call3(Runtime_ocaml_Runtime[56],2007,1,1),
- _aJP_=caml_call2(Runtime_ocaml_Runtime[98],param,_aJO_);
- if(_aJP_)
- var
- _aJQ_=caml_call3(Runtime_ocaml_Runtime[56],2008,1,1),
- _aJR_=caml_call2(Runtime_ocaml_Runtime[101],param,_aJQ_);
- else
- var _aJR_=_aJP_}
- else
- var _aJR_=_aJN_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K8_,_aJR_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K9_,[0],_aJL_,_aJK_)},
- _aEY_=
- function(param$0)
- {function _aJk_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$334)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_27195)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32773);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$226)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35237);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$74)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36222);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$53)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37240);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$49)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38240);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$69)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_39051);
- var
- _aJs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$70),
- _aJt_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJs_),
- _aJu_=caml_call1(Runtime_ocaml_Runtime[41],_aJt_),
- _aJv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3401),
- _aJw_=caml_call2(Runtime_ocaml_Runtime[65],_aJv_,_aJu_),
- _aJx_=caml_call1(Runtime_ocaml_Runtime[31],cst_39051$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJx_,_aJw_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$335)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23858)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_29246);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$227)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31661);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$75)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32758);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$54)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33886);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$50)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34999);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$71)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37478);
- var
- _aJy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$72),
- _aJz_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJy_),
- _aJA_=caml_call1(Runtime_ocaml_Runtime[41],_aJz_),
- _aJB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3259),
- _aJC_=caml_call2(Runtime_ocaml_Runtime[65],_aJB_,_aJA_),
- _aJD_=caml_call1(Runtime_ocaml_Runtime[31],cst_37478$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJD_,_aJC_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$336)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22380)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_27146);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$228)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29595);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$76)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30819);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$55)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32058);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$51)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33282);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$73)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35762);
- var
- _aJE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$74),
- _aJF_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJE_),
- _aJG_=caml_call1(Runtime_ocaml_Runtime[41],_aJF_),
- _aJH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3100),
- _aJI_=caml_call2(Runtime_ocaml_Runtime[65],_aJH_,_aJG_),
- _aJJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35762$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJJ_,_aJI_)}}
- function _aJl_(param$0)
- {var
- _aJm_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aJn_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aJm_);
- if(_aJn_)
- {var
- _aJo_=caml_call3(Runtime_ocaml_Runtime[56],2005,9,1),
- _aJp_=caml_call2(Runtime_ocaml_Runtime[98],param,_aJo_);
- if(_aJp_)
- var
- _aJq_=caml_call3(Runtime_ocaml_Runtime[56],2007,1,1),
- _aJr_=caml_call2(Runtime_ocaml_Runtime[101],param,_aJq_);
- else
- var _aJr_=_aJp_}
- else
- var _aJr_=_aJn_;
- return caml_call2(Runtime_ocaml_Runtime[29],_K__,_aJr_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_K$_,[0],_aJl_,_aJk_)},
- _aEZ_=
- function(param$0)
- {function _aIW_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$337)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26714$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_32194);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$229)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34614);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$77)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35582);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$56)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36582);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$52)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37564);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$75)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_38361);
- var
- _aI4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$76),
- _aI5_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aI4_),
- _aI6_=caml_call1(Runtime_ocaml_Runtime[41],_aI5_),
- _aI7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3341),
- _aI8_=caml_call2(Runtime_ocaml_Runtime[65],_aI7_,_aI6_),
- _aI9_=caml_call1(Runtime_ocaml_Runtime[31],cst_38361$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aI9_,_aI8_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$338)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23436)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28729);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$230)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31101);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$78)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32179);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$57)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33287);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$53)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34380);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$77)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36815);
- var
- _aI__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$78),
- _aI$_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aI__),
- _aJa_=caml_call1(Runtime_ocaml_Runtime[41],_aI$_),
- _aJb_=caml_call1(Runtime_ocaml_Runtime[31],cst_3201),
- _aJc_=caml_call2(Runtime_ocaml_Runtime[65],_aJb_,_aJa_),
- _aJd_=caml_call1(Runtime_ocaml_Runtime[31],cst_36815$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJd_,_aJc_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$339)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_21984)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26666);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$231)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29072);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$79)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30274);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$58)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31491);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$54)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32694);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$79)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35130);
- var
- _aJe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$80),
- _aJf_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aJe_),
- _aJg_=caml_call1(Runtime_ocaml_Runtime[41],_aJf_),
- _aJh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3045),
- _aJi_=caml_call2(Runtime_ocaml_Runtime[65],_aJh_,_aJg_),
- _aJj_=caml_call1(Runtime_ocaml_Runtime[31],cst_35130$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aJj_,_aJi_)}}
- function _aIX_(param$0)
- {var
- _aIY_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aIZ_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aIY_);
- if(_aIZ_)
- {var
- _aI0_=caml_call3(Runtime_ocaml_Runtime[56],2003,7,1),
- _aI1_=caml_call2(Runtime_ocaml_Runtime[98],param,_aI0_);
- if(_aI1_)
- var
- _aI2_=caml_call3(Runtime_ocaml_Runtime[56],2005,9,1),
- _aI3_=caml_call2(Runtime_ocaml_Runtime[101],param,_aI2_);
- else
- var _aI3_=_aI1_}
- else
- var _aI3_=_aIZ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_La_,_aI3_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lb_,[0],_aIX_,_aIW_)},
- _aE0_=
- function(param$0)
- {function _aIw_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$340)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26397)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31812);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$232)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34204);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$80)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35160);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$59)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36148);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$55)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37119);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$81)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37906);
- var
- _aIE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$82),
- _aIF_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIE_),
- _aIG_=caml_call1(Runtime_ocaml_Runtime[41],_aIF_),
- _aIH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3301),
- _aII_=caml_call2(Runtime_ocaml_Runtime[65],_aIH_,_aIG_),
- _aIJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_37906$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIJ_,_aII_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$341)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_23158)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28388);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$233)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30732);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$81)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$1);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$60)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32892);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$56)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33972);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$83)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36378);
- var
- _aIK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$84),
- _aIL_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIK_),
- _aIM_=caml_call1(Runtime_ocaml_Runtime[41],_aIL_),
- _aIN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3163),
- _aIO_=caml_call2(Runtime_ocaml_Runtime[65],_aIN_,_aIM_),
- _aIP_=caml_call1(Runtime_ocaml_Runtime[31],cst_36378$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIP_,_aIO_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$342)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_21723)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26350);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$234)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_28727);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$82)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29915);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$61)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31118);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$57)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32306);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$85)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34713);
- var
- _aIQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$86),
- _aIR_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIQ_),
- _aIS_=caml_call1(Runtime_ocaml_Runtime[41],_aIR_),
- _aIT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3009),
- _aIU_=caml_call2(Runtime_ocaml_Runtime[65],_aIT_,_aIS_),
- _aIV_=caml_call1(Runtime_ocaml_Runtime[31],cst_34713$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIV_,_aIU_)}}
- function _aIx_(param$0)
- {var
- _aIy_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aIz_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aIy_);
- if(_aIz_)
- {var
- _aIA_=caml_call3(Runtime_ocaml_Runtime[56],2002,7,1),
- _aIB_=caml_call2(Runtime_ocaml_Runtime[98],param,_aIA_);
- if(_aIB_)
- var
- _aIC_=caml_call3(Runtime_ocaml_Runtime[56],2003,7,1),
- _aID_=caml_call2(Runtime_ocaml_Runtime[101],param,_aIC_);
- else
- var _aID_=_aIB_}
- else
- var _aID_=_aIz_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lc_,_aID_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Ld_,[0],_aIx_,_aIw_)},
- _aE1_=
- function(param$0)
- {function _aH8_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$343)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_26084)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_31435);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$235)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33798);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$83)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34743);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$62)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35719);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$58)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_36679);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$87)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_37457);
- var
- _aIe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$88),
- _aIf_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIe_),
- _aIg_=caml_call1(Runtime_ocaml_Runtime[41],_aIf_),
- _aIh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3262),
- _aIi_=caml_call2(Runtime_ocaml_Runtime[65],_aIh_,_aIg_),
- _aIj_=caml_call1(Runtime_ocaml_Runtime[31],cst_37457$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIj_,_aIi_);
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$344)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_22883)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_28051);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$236)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30368);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$84)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31420);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$63)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_32502);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$59)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_33569);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$89)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_35947);
- var
- _aIk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$90),
- _aIl_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIk_),
- _aIm_=caml_call1(Runtime_ocaml_Runtime[41],_aIl_),
- _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_3125),
- _aIo_=caml_call2(Runtime_ocaml_Runtime[65],_aIn_,_aIm_),
- _aIp_=caml_call1(Runtime_ocaml_Runtime[31],cst_35947$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIp_,_aIo_);
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$345)))
- return 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_21465)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_26038);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$237)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_28386);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$85)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_29560);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$64)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_30749);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$60)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_31923);
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$91)))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_34301);
- var
- _aIq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$92),
- _aIr_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aIq_),
- _aIs_=caml_call1(Runtime_ocaml_Runtime[41],_aIr_),
- _aIt_=caml_call1(Runtime_ocaml_Runtime[31],cst_2973),
- _aIu_=caml_call2(Runtime_ocaml_Runtime[65],_aIt_,_aIs_),
- _aIv_=caml_call1(Runtime_ocaml_Runtime[31],cst_34301$0);
- return caml_call2(Runtime_ocaml_Runtime[67],_aIv_,_aIu_)}}
- function _aH9_(param$0)
- {var
- _aH__=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aH$_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aH__);
- if(_aH$_)
- {var
- _aIa_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1),
- _aIb_=caml_call2(Runtime_ocaml_Runtime[98],param,_aIa_);
- if(_aIb_)
- var
- _aIc_=caml_call3(Runtime_ocaml_Runtime[56],2002,7,1),
- _aId_=caml_call2(Runtime_ocaml_Runtime[101],param,_aIc_);
- else
- var _aId_=_aIb_}
- else
- var _aId_=_aH$_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Le_,_aId_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lf_,[0],_aH9_,_aH8_)},
- _aE2_=
- function(param$0)
- {function _aHH_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$346)))
- var
- _aHP_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_171100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_206200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$238)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_221700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$86)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_227900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$65)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_234300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$61)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_240600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$93)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700);
- else
- var
- _aHQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$94),
- _aHR_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHQ_),
- _aHS_=caml_call1(Runtime_ocaml_Runtime[41],_aHR_),
- _aHT_=caml_call1(Runtime_ocaml_Runtime[31],cst_21400),
- _aHU_=caml_call2(Runtime_ocaml_Runtime[65],_aHT_,_aHS_),
- _aHV_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700$0),
- _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aHV_,_aHU_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$347)))
- var
- _aHP_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_150100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_184000$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$239)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_199200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$87)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_206100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$66)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_213200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$62)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_220200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$95)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800);
- else
- var
- _aHW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$96),
- _aHX_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHW_),
- _aHY_=caml_call1(Runtime_ocaml_Runtime[41],_aHX_),
- _aHZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_20500),
- _aH0_=caml_call2(Runtime_ocaml_Runtime[65],_aHZ_,_aHY_),
- _aH1_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800$0),
- _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aH1_,_aH0_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$348)))
- var
- _aHP_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_170800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$240)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_186200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$88)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_193900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$67)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_201700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$63)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_209400);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$97)))
- var _aHP_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000);
- else
- var
- _aH2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$98),
- _aH3_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aH2_),
- _aH4_=caml_call1(Runtime_ocaml_Runtime[41],_aH3_),
- _aH5_=caml_call1(Runtime_ocaml_Runtime[31],cst_19500),
- _aH6_=caml_call2(Runtime_ocaml_Runtime[65],_aH5_,_aH4_),
- _aH7_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000$0),
- _aHP_=caml_call2(Runtime_ocaml_Runtime[67],_aH7_,_aH6_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aHP_,taux_francs_vers_euros)}
- function _aHI_(param$0)
- {var
- _aHJ_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aHK_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aHJ_);
- if(_aHK_)
- {var
- _aHL_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1),
- _aHM_=caml_call2(Runtime_ocaml_Runtime[98],param,_aHL_);
- if(_aHM_)
- var
- _aHN_=caml_call3(Runtime_ocaml_Runtime[56],2002,1,1),
- _aHO_=caml_call2(Runtime_ocaml_Runtime[101],param,_aHN_);
- else
- var _aHO_=_aHM_}
- else
- var _aHO_=_aHK_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lg_,_aHO_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lh_,[0],_aHI_,_aHH_)},
- _aE3_=
- function(param$0)
- {function _aHg_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$349)))
- var
- _aHo_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_169100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_203800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$241)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_219100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$89)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_225200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$68)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_231500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$64)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_237700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$99)))
- var
- _aHo_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_242800$2);
- else
- var
- _aHp_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$100),
- _aHq_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHp_),
- _aHr_=caml_call1(Runtime_ocaml_Runtime[41],_aHq_),
- _aHs_=caml_call1(Runtime_ocaml_Runtime[31],cst_21100),
- _aHt_=caml_call2(Runtime_ocaml_Runtime[65],_aHs_,_aHr_),
- _aHu_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$3),
- _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHu_,_aHt_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$350)))
- var
- _aHo_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_148300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_181800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$242)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_196800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$90)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_203700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$69)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_210700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$65)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_217600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$101)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000);
- else
- var
- _aHv_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$102),
- _aHw_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHv_),
- _aHx_=caml_call1(Runtime_ocaml_Runtime[41],_aHw_),
- _aHy_=caml_call1(Runtime_ocaml_Runtime[31],cst_20300),
- _aHz_=caml_call2(Runtime_ocaml_Runtime[65],_aHy_,_aHx_),
- _aHA_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000$0),
- _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHA_,_aHz_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$351)))
- var
- _aHo_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_139100)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_168800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$243)))
- var
- _aHo_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_184000$1);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$91)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_191600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$70)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_199300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$66)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_206900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$103)))
- var _aHo_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300);
- else
- var
- _aHB_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$104),
- _aHC_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHB_),
- _aHD_=caml_call1(Runtime_ocaml_Runtime[41],_aHC_),
- _aHE_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300),
- _aHF_=caml_call2(Runtime_ocaml_Runtime[65],_aHE_,_aHD_),
- _aHG_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300$0),
- _aHo_=caml_call2(Runtime_ocaml_Runtime[67],_aHG_,_aHF_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aHo_,taux_francs_vers_euros)}
- function _aHh_(param$0)
- {var
- _aHi_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aHj_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aHi_);
- if(_aHj_)
- {var
- _aHk_=caml_call3(Runtime_ocaml_Runtime[56],2000,7,1),
- _aHl_=caml_call2(Runtime_ocaml_Runtime[98],param,_aHk_);
- if(_aHl_)
- var
- _aHm_=caml_call3(Runtime_ocaml_Runtime[56],2001,7,1),
- _aHn_=caml_call2(Runtime_ocaml_Runtime[101],param,_aHm_);
- else
- var _aHn_=_aHl_}
- else
- var _aHn_=_aHj_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Li_,_aHn_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lj_,[0],_aHh_,_aHg_)},
- _aE4_=
- function(param$0)
- {function _aGR_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$352)))
- var
- _aGZ_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_167400)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_201800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$244)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_216900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$92)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_223000);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$71)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_229200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$67)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_235300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$105)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400);
- else
- var
- _aG0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$106),
- _aG1_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aG0_),
- _aG2_=caml_call1(Runtime_ocaml_Runtime[41],_aG1_),
- _aG3_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900),
- _aG4_=caml_call2(Runtime_ocaml_Runtime[65],_aG3_,_aG2_),
- _aG5_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400$0),
- _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aG5_,_aG4_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$353)))
- var
- _aGZ_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_146800)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_180000);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$245)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_194900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$93)))
- var
- _aGZ_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_201700$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$72)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$68)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_215400);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$107)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700);
- else
- var
- _aG6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$108),
- _aG7_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aG6_),
- _aG8_=caml_call1(Runtime_ocaml_Runtime[41],_aG7_),
- _aG9_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100),
- _aG__=caml_call2(Runtime_ocaml_Runtime[65],_aG9_,_aG8_),
- _aG$_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700$0),
- _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aG$_,_aG__);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$354)))
- var
- _aGZ_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_137700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_167100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$246)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_182200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$94)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_189700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$73)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_197300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$69)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_204900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$109)))
- var _aGZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100);
- else
- var
- _aHa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$110),
- _aHb_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aHa_),
- _aHc_=caml_call1(Runtime_ocaml_Runtime[41],_aHb_),
- _aHd_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100),
- _aHe_=caml_call2(Runtime_ocaml_Runtime[65],_aHd_,_aHc_),
- _aHf_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100$0),
- _aGZ_=caml_call2(Runtime_ocaml_Runtime[67],_aHf_,_aHe_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aGZ_,taux_francs_vers_euros)}
- function _aGS_(param$0)
- {var
- _aGT_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aGU_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aGT_);
- if(_aGU_)
- {var
- _aGV_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1),
- _aGW_=caml_call2(Runtime_ocaml_Runtime[98],param,_aGV_);
- if(_aGW_)
- var
- _aGX_=caml_call3(Runtime_ocaml_Runtime[56],2000,7,1),
- _aGY_=caml_call2(Runtime_ocaml_Runtime[101],param,_aGX_);
- else
- var _aGY_=_aGW_}
- else
- var _aGY_=_aGU_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lk_,_aGY_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Ll_,[0],_aGS_,_aGR_)},
- _aE5_=
- function(param$0)
- {function _aGq_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$355)))
- var
- _aGy_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_167200)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_201600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$247)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_216700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$95)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_222800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$74)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_229000);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$70)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_235100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$111)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200);
- else
- var
- _aGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$112),
- _aGA_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGz_),
- _aGB_=caml_call1(Runtime_ocaml_Runtime[41],_aGA_),
- _aGC_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900$0),
- _aGD_=caml_call2(Runtime_ocaml_Runtime[65],_aGC_,_aGB_),
- _aGE_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200$0),
- _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGE_,_aGD_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$356)))
- var
- _aGy_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_146700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_179800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$248)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_194700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$96)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_201500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$75)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_208400);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$71)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_215200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$113)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500);
- else
- var
- _aGF_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$114),
- _aGG_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGF_),
- _aGH_=caml_call1(Runtime_ocaml_Runtime[41],_aGG_),
- _aGI_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100$0),
- _aGJ_=caml_call2(Runtime_ocaml_Runtime[65],_aGI_,_aGH_),
- _aGK_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$0),
- _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGK_,_aGJ_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$357)))
- var
- _aGy_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_137600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_166900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$249)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_182000);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$97)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_189500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$76)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_197100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$72)))
- var
- _aGy_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_204700$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$115)))
- var _aGy_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900);
- else
- var
- _aGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$116),
- _aGM_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGL_),
- _aGN_=caml_call1(Runtime_ocaml_Runtime[41],_aGM_),
- _aGO_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$0),
- _aGP_=caml_call2(Runtime_ocaml_Runtime[65],_aGO_,_aGN_),
- _aGQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900$0),
- _aGy_=caml_call2(Runtime_ocaml_Runtime[67],_aGQ_,_aGP_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aGy_,taux_francs_vers_euros)}
- function _aGr_(param$0)
- {var
- _aGs_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aGt_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aGs_);
- if(_aGt_)
- {var
- _aGu_=caml_call3(Runtime_ocaml_Runtime[56],1998,7,1),
- _aGv_=caml_call2(Runtime_ocaml_Runtime[98],param,_aGu_);
- if(_aGv_)
- var
- _aGw_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1),
- _aGx_=caml_call2(Runtime_ocaml_Runtime[101],param,_aGw_);
- else
- var _aGx_=_aGv_}
- else
- var _aGx_=_aGt_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lm_,_aGx_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Ln_,[0],_aGr_,_aGq_)},
- _aE6_=
- function(param$0)
- {function _aF1_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$358)))
- var
- _aF9_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_163300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_196900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$250)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_211600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$98)))
- var
- _aF9_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_217600$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$77)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_223600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$73)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_229600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$117)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600);
- else
- var
- _aF__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$118),
- _aF$_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aF__),
- _aGa_=caml_call1(Runtime_ocaml_Runtime[41],_aF$_),
- _aGb_=caml_call1(Runtime_ocaml_Runtime[31],cst_20400),
- _aGc_=caml_call2(Runtime_ocaml_Runtime[65],_aGb_,_aGa_),
- _aGd_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600$0),
- _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGd_,_aGc_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$359)))
- var
- _aF9_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_143300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_175600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$251)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_190100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$99)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_196600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$78)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_203500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$74)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_210200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$119)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100);
- else
- var
- _aGe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$120),
- _aGf_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGe_),
- _aGg_=caml_call1(Runtime_ocaml_Runtime[41],_aGf_),
- _aGh_=caml_call1(Runtime_ocaml_Runtime[31],cst_19600),
- _aGi_=caml_call2(Runtime_ocaml_Runtime[65],_aGh_,_aGg_),
- _aGj_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100$0),
- _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGj_,_aGi_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$360)))
- var
- _aF9_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_134400)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_163000$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$252)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_177700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$100)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_185100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$79)))
- var
- _aF9_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_192500$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$75)))
- var
- _aF9_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_199900$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$121)))
- var _aF9_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700);
- else
- var
- _aGk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$122),
- _aGl_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aGk_),
- _aGm_=caml_call1(Runtime_ocaml_Runtime[41],_aGl_),
- _aGn_=caml_call1(Runtime_ocaml_Runtime[31],cst_18700),
- _aGo_=caml_call2(Runtime_ocaml_Runtime[65],_aGn_,_aGm_),
- _aGp_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700$0),
- _aF9_=caml_call2(Runtime_ocaml_Runtime[67],_aGp_,_aGo_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aF9_,taux_francs_vers_euros)}
- function _aF2_(param$0)
- {var
- _aF3_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aF4_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aF3_);
- if(_aF4_)
- {var
- _aF5_=caml_call3(Runtime_ocaml_Runtime[56],1997,7,1),
- _aF6_=caml_call2(Runtime_ocaml_Runtime[98],param,_aF5_);
- if(_aF6_)
- var
- _aF7_=caml_call3(Runtime_ocaml_Runtime[56],1998,7,1),
- _aF8_=caml_call2(Runtime_ocaml_Runtime[101],param,_aF7_);
- else
- var _aF8_=_aF6_}
- else
- var _aF8_=_aF4_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lo_,_aF8_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lp_,[0],_aF2_,_aF1_)},
- _aE7_=
- function(param$0)
- {function _aFA_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$361)))
- var
- _aFI_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_160400)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_193400);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$253)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_207800);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$101)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_213700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$80)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_219600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$76)))
- var
- _aFI_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_225500$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$123)))
- var
- _aFI_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_230500$1);
- else
- var
- _aFJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$124),
- _aFK_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFJ_),
- _aFL_=caml_call1(Runtime_ocaml_Runtime[41],_aFK_),
- _aFM_=caml_call1(Runtime_ocaml_Runtime[31],cst_20000),
- _aFN_=caml_call2(Runtime_ocaml_Runtime[65],_aFM_,_aFL_),
- _aFO_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$2),
- _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aFO_,_aFN_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$362)))
- var
- _aFI_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_172500$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$254)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_186700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$102)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_193300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$81)))
- var
- _aFI_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_199900$1);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$77)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_206500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$125)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100);
- else
- var
- _aFP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$126),
- _aFQ_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFP_),
- _aFR_=caml_call1(Runtime_ocaml_Runtime[41],_aFQ_),
- _aFS_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300$0),
- _aFT_=caml_call2(Runtime_ocaml_Runtime[65],_aFS_,_aFR_),
- _aFU_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100$0),
- _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aFU_,_aFT_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$363)))
- var
- _aFI_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000$0)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$255)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_174500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$103)))
- var
- _aFI_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_181800$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$82)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_189100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$78)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_194200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$127)))
- var _aFI_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900);
- else
- var
- _aFV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$128),
- _aFW_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFV_),
- _aFX_=caml_call1(Runtime_ocaml_Runtime[41],_aFW_),
- _aFY_=caml_call1(Runtime_ocaml_Runtime[31],cst_18400),
- _aFZ_=caml_call2(Runtime_ocaml_Runtime[65],_aFY_,_aFX_),
- _aF0_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900$0),
- _aFI_=caml_call2(Runtime_ocaml_Runtime[67],_aF0_,_aFZ_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aFI_,taux_francs_vers_euros)}
- function _aFB_(param$0)
- {var
- _aFC_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aFD_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aFC_);
- if(_aFD_)
- {var
- _aFE_=caml_call3(Runtime_ocaml_Runtime[56],1994,7,1),
- _aFF_=caml_call2(Runtime_ocaml_Runtime[98],param,_aFE_);
- if(_aFF_)
- var
- _aFG_=caml_call3(Runtime_ocaml_Runtime[56],1997,7,1),
- _aFH_=caml_call2(Runtime_ocaml_Runtime[101],param,_aFG_);
- else
- var _aFH_=_aFF_}
- else
- var _aFH_=_aFD_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lq_,_aFH_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lr_,[0],_aFB_,_aFA_)},
- _aE8_=
- [0,
- function(param$0)
- {function _aE$_(param)
- {switch(zone[0])
- {case 0:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$364)))
- var
- _aFh_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_158700)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_191300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$256)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_205500);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$104)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_211300);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$83)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_217100);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$79)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_222900);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$129)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000);
- else
- var
- _aFi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$130),
- _aFj_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFi_),
- _aFk_=caml_call1(Runtime_ocaml_Runtime[41],_aFj_),
- _aFl_=caml_call1(Runtime_ocaml_Runtime[31],cst_19800),
- _aFm_=caml_call2(Runtime_ocaml_Runtime[65],_aFl_,_aFk_),
- _aFn_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000$0),
- _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFn_,_aFm_);
- break;
- case 1:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$365)))
- var
- _aFh_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_139300)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_170600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$257)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_184700);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$105)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_191200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$84)))
- var
- _aFh_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_197700$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$80)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_204200);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$131)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700);
- else
- var
- _aFo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$132),
- _aFp_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFo_),
- _aFq_=caml_call1(Runtime_ocaml_Runtime[41],_aFp_),
- _aFr_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$1),
- _aFs_=caml_call2(Runtime_ocaml_Runtime[65],_aFr_,_aFq_),
- _aFt_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700$0),
- _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFt_,_aFs_);
- break;
- default:
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_0$366)))
- var
- _aFh_=
- 0 === situation_familiale_calcul_apl[0]
- ?caml_call1(Runtime_ocaml_Runtime[31],cst_130600)
- :caml_call1(Runtime_ocaml_Runtime[31],cst_158400);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_1$258)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_172600);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_2$106)))
- var
- _aFh_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_179800$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_3$85)))
- var _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_187000);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_4$81)))
- var
- _aFh_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_194200$0);
- else
- if
- (caml_equal
- (nombre_personnes_a_charge,
- caml_call1(Runtime_ocaml_Runtime[46],cst_5$133)))
- var
- _aFh_=
- caml_call1(Runtime_ocaml_Runtime[31],cst_208600$0);
- else
- var
- _aFu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$134),
- _aFv_=
- caml_call2
- (Runtime_ocaml_Runtime[76],nombre_personnes_a_charge,_aFu_),
- _aFw_=caml_call1(Runtime_ocaml_Runtime[41],_aFv_),
- _aFx_=caml_call1(Runtime_ocaml_Runtime[31],cst_18200),
- _aFy_=caml_call2(Runtime_ocaml_Runtime[65],_aFx_,_aFw_),
- _aFz_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600$1),
- _aFh_=caml_call2(Runtime_ocaml_Runtime[67],_aFz_,_aFy_)}
- return caml_call2
- (Runtime_ocaml_Runtime[65],_aFh_,taux_francs_vers_euros)}
- function _aFa_(param$0)
- {var
- _aFb_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aFc_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aFb_);
- if(_aFc_)
- {var
- _aFd_=caml_call3(Runtime_ocaml_Runtime[56],1992,7,1),
- _aFe_=caml_call2(Runtime_ocaml_Runtime[98],param,_aFd_);
- if(_aFe_)
- var
- _aFf_=caml_call3(Runtime_ocaml_Runtime[56],1994,7,1),
- _aFg_=caml_call2(Runtime_ocaml_Runtime[101],param,_aFf_);
- else
- var _aFg_=_aFe_}
- else
- var _aFg_=_aFc_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Ls_,_aFg_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Lt_,[0],_aFa_,_aE$_)},
- _aE7_,
- _aE6_,
- _aE5_,
- _aE4_,
- _aE3_,
- _aE2_,
- _aE1_,
- _aE0_,
- _aEZ_,
- _aEY_,
- _aEX_,
- _aEW_,
- _aEV_,
- _aEU_,
- _aET_,
- _aES_,
- _aER_,
- _aEQ_,
- _aEP_,
- _aEO_,
- _aEN_],
- _aE9_=caml_call4(Runtime_ocaml_Runtime[62],_Lu_,_aE8_,_aEM_,_aEL_);
- return _aE9_}
- catch(_aE__)
- {_aE__ = caml_wrap_exception(_aE__);
- if(_aE__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_KN_];
- throw _aE__}}
- var
- calcul_plafond_mensualite_d842=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Lv_,Runtime_ocaml_Runtime[10],_aAp_);
- try
- {var
- _aAq_=function(param){throw Runtime_ocaml_Runtime[2]},
- _aAr_=function(param){return 0},
- _aAs_=
- function(param)
- {function _aEG_(param){return montant_forfaitaire_d842_12}
- function _aEH_(param)
- {var
- _aEI_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30),
- _aEJ_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_aEI_);
- if(_aEJ_)
- switch(type_travaux_logement[0])
- {case 0:var _aEK_=0;break;
- case 1:var _aEK_=1;break;
- case 2:var _aEK_=0;break;
- default:var _aEK_=0}
- else
- var _aEK_=_aEJ_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Lx_,_aEK_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Ly_,[0],_aEH_,_aEG_)},
- _aAt_=
- [0,
- function(param)
- {function _aEv_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[65],
- mensualite_principale,
- coefficient_d842_12)}
- function _aEw_(param)
- {var
- _aEx_=caml_call3(Runtime_ocaml_Runtime[56],1992,9,30),
- _aEy_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_aEx_);
- if(_aEy_)
- var
- _aEz_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30),
- _aEA_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_aEz_);
- else
- var _aEA_=_aEy_;
- if(_aEA_)
- var _aEB_=_aEA_;
- else
- {var
- _aEC_=caml_call3(Runtime_ocaml_Runtime[56],1994,9,30),
- _aED_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_aEC_);
- if(_aED_)
- {switch(type_travaux_logement[0])
- {case 0:var _aEE_=0;break;
- case 1:var _aEE_=0;break;
- case 2:var _aEE_=0;break;
- default:var _aEE_=1}
- if(_aEE_)
- var _aEB_=_aEE_;
- else
- {switch(type_travaux_logement[0])
- {case 0:var _aEF_=1;break;
- case 1:var _aEF_=0;break;
- case 2:var _aEF_=0;break;
- default:var _aEF_=0}
- if(_aEF_)
- var _aEB_=_aEF_;
- else
- switch(type_travaux_logement[0])
- {case 0:var _aEB_=0;break;
- case 1:var _aEB_=0;break;
- case 2:var _aEB_=1;break;
- default:var _aEB_=0}}}
- else
- var _aEB_=_aED_}
- return caml_call2(Runtime_ocaml_Runtime[29],_Lz_,_aEB_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_LA_,[0],_aEw_,_aEv_)},
- _aAs_],
- _aAu_=caml_call4(Runtime_ocaml_Runtime[62],_LB_,_aAt_,_aAr_,_aAq_)}
- catch(_aEu_)
- {_aEu_ = caml_wrap_exception(_aEu_);
- if(_aEu_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Lw_];
- throw _aEu_}
- var
- seuil_minimal_ressources_menag=
- caml_call3
- (Runtime_ocaml_Runtime[28],_LC_,Runtime_ocaml_Runtime[13],_aAu_);
- function _aAv_(param)
- {try
- {var
- _aEp_=
- function(param$0)
- {var
- _aEt_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- charges_mensuelles_pret,
- montant_forfaitaire_charges);
- return caml_call2(Runtime_ocaml_Runtime[68],_aEt_,param)},
- _aEq_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_LE_,1)},
- _aEr_=caml_call4(Runtime_ocaml_Runtime[62],_LF_,[0],_aEq_,_aEp_);
- return _aEr_}
- catch(_aEs_)
- {_aEs_ = caml_wrap_exception(_aEs_);
- if(_aEs_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_LD_];
- throw _aEs_}}
- var
- depense_nette_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_LG_,Runtime_ocaml_Runtime[10],_aAv_);
- function _aAw_(param)
- {try
- {var
- _aD5_=
- function(param$0)
- {var
- _aEm_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LI_,
- Runtime_ocaml_Runtime[16],
- param),
- _aEn_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _LJ_,
- calcul_plafond_mensualite_d842),
- _aEm_),
- _aEo_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LK_,
- Runtime_ocaml_Runtime[13],
- _aEn_);
- return caml_call2(Runtime_ocaml_Runtime[27],_LL_,_aEo_)},
- _aD6_=
- function(param)
- {var
- _aEk_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _aEl_=caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aEk_);
- return caml_call2(Runtime_ocaml_Runtime[29],_LM_,_aEl_)},
- _aD7_=
- [0,
- function(param$0)
- {function _aD__(param$0)
- {if(copropriete)
- {var
- _aEc_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7),
- _aEd_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LN_,
- Runtime_ocaml_Runtime[16],
- param),
- _aEe_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _LO_,
- calcul_plafond_mensualite_d842),
- _aEd_),
- _aEf_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LP_,
- Runtime_ocaml_Runtime[13],
- _aEe_),
- _aEg_=caml_call2(Runtime_ocaml_Runtime[27],_LQ_,_aEf_);
- return caml_call2(Runtime_ocaml_Runtime[65],_aEg_,_aEc_)}
- var
- _aEh_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LR_,
- Runtime_ocaml_Runtime[16],
- param),
- _aEi_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _LS_,
- calcul_plafond_mensualite_d842),
- _aEh_),
- _aEj_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _LT_,
- Runtime_ocaml_Runtime[13],
- _aEi_);
- return caml_call2(Runtime_ocaml_Runtime[27],_LU_,_aEj_)}
- function _aD$_(param)
- {var
- _aEa_=caml_call3(Runtime_ocaml_Runtime[56],2021,10,1),
- _aEb_=
- caml_call2(Runtime_ocaml_Runtime[98],date_courante,_aEa_);
- return caml_call2(Runtime_ocaml_Runtime[29],_LV_,_aEb_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_LW_,[0],_aD$_,_aD__)}],
- _aD8_=caml_call4(Runtime_ocaml_Runtime[62],_LX_,_aD7_,_aD6_,_aD5_);
- return _aD8_}
- catch(_aD9_)
- {_aD9_ = caml_wrap_exception(_aD9_);
- if(_aD9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_LH_];
- throw _aD9_}}
- var
- calcul_plafond_mensualite_d842$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_LY_,Runtime_ocaml_Runtime[10],_aAw_);
- try
- {var
- _aAx_=
- function(param)
- {if
- (caml_call2
- (Runtime_ocaml_Runtime[71],
- ressources_menage_arrondies_ba,
- seuil_minimal_ressources_menag))
- {var
- _aDZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$9),
- _aD0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01),
- _aD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999),
- _aD2_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- seuil_minimal_ressources_menag,
- _aD1_),
- _aD3_=caml_call2(Runtime_ocaml_Runtime[65],_aD2_,_aD0_),
- _aD4_=caml_call1(Runtime_ocaml_Runtime[38],_aD3_);
- return caml_call2(Runtime_ocaml_Runtime[65],_aD4_,_aDZ_)}
- return ressources_menage_arrondies_ba},
- _aAy_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L0_,1)},
- _aAz_=
- [0,
- function(param)
- {function _aDX_(param){return ressources_menage_arrondies_ba}
- function _aDY_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],_L1_,situation_r822_11_13_17)}
- return caml_call4(Runtime_ocaml_Runtime[62],_L2_,[0],_aDY_,_aDX_)}],
- _aAA_=caml_call4(Runtime_ocaml_Runtime[62],_L3_,_aAz_,_aAy_,_aAx_)}
- catch(_aDW_)
- {_aDW_ = caml_wrap_exception(_aDW_);
- if(_aDW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_LZ_];
- throw _aDW_}
- var
- ressources_menage_arrondies_se=
- caml_call3
- (Runtime_ocaml_Runtime[28],_L4_,Runtime_ocaml_Runtime[13],_aAA_);
- try
- {var
- _aAB_=
- function(param)
- {var
- _aDT_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _L6_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _aDU_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _L7_,
- calcul_plafond_mensualite_d842$0),
- _aDT_),
- _aDV_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _L8_,
- Runtime_ocaml_Runtime[13],
- _aDU_);
- return caml_call2(Runtime_ocaml_Runtime[27],_L9_,_aDV_)},
- _aAC_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L__,1)},
- _aAD_=
- [0,
- function(param)
- {function _aDD_(param)
- {var
- _aDF_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _L$_,
- Runtime_ocaml_Runtime[16],
- date_entree_logement),
- _aDG_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ma_,
- calcul_plafond_mensualite_d842$0),
- _aDF_),
- _aDH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Mb_,
- Runtime_ocaml_Runtime[13],
- _aDG_),
- _aDI_=caml_call2(Runtime_ocaml_Runtime[27],_Mc_,_aDH_),
- _aDJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Md_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _aDK_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Me_,
- calcul_plafond_mensualite_d842$0),
- _aDJ_),
- _aDL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Mf_,
- Runtime_ocaml_Runtime[13],
- _aDK_),
- _aDM_=caml_call2(Runtime_ocaml_Runtime[27],_Mg_,_aDL_);
- if(caml_call2(Runtime_ocaml_Runtime[73],_aDM_,_aDI_))
- {var
- _aDN_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Mh_,
- Runtime_ocaml_Runtime[16],
- date_entree_logement),
- _aDO_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Mi_,
- calcul_plafond_mensualite_d842$0),
- _aDN_),
- _aDP_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Mj_,
- Runtime_ocaml_Runtime[13],
- _aDO_);
- return caml_call2(Runtime_ocaml_Runtime[27],_Mk_,_aDP_)}
- var
- _aDQ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ml_,
- Runtime_ocaml_Runtime[16],
- date_signature_pret),
- _aDR_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Mm_,
- calcul_plafond_mensualite_d842$0),
- _aDQ_),
- _aDS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Mn_,
- Runtime_ocaml_Runtime[13],
- _aDR_);
- return caml_call2(Runtime_ocaml_Runtime[27],_Mo_,_aDS_)}
- function _aDE_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[29],
- _Mp_,
- local_habite_premiere_fois_ben)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Mq_,[0],_aDE_,_aDD_)}],
- _aAE_=caml_call4(Runtime_ocaml_Runtime[62],_Mr_,_aAD_,_aAC_,_aAB_)}
- catch(_aDC_)
- {_aDC_ = caml_wrap_exception(_aDC_);
- if(_aDC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_L5_];
- throw _aDC_}
- var
- plafond_mensualite_d842_6=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ms_,Runtime_ocaml_Runtime[13],_aAE_);
- try
- {var
- _aAF_=function(param){return ressources_menage_arrondies_se},
- _aAG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Mu_,1)},
- _aAH_=caml_call4(Runtime_ocaml_Runtime[62],_Mv_,[0],_aAG_,_aAF_),
- calcul_equivalence_loyer_minim$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Mw_,Runtime_ocaml_Runtime[13],_aAH_)}
- catch(_aDB_)
- {_aDB_ = caml_wrap_exception(_aDB_);
- if(_aDB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Mt_];
- throw _aDB_}
- try
- {var
- _aAI_=function(param){return 1},
- _aAJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_My_,1)},
- _aAK_=caml_call4(Runtime_ocaml_Runtime[62],_Mz_,[0],_aAJ_,_aAI_),
- calcul_equivalence_loyer_minim$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_MA_,Runtime_ocaml_Runtime[12],_aAK_)}
- catch(_aDA_)
- {_aDA_ = caml_wrap_exception(_aDA_);
- if(_aDA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Mx_];
- throw _aDA_}
- try
- {var
- _aAL_=function(param){return calcul_nombre_parts_dot_n_nomb},
- _aAM_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MC_,1)},
- _aAN_=caml_call4(Runtime_ocaml_Runtime[62],_MD_,[0],_aAM_,_aAL_),
- calcul_equivalence_loyer_minim$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ME_,Runtime_ocaml_Runtime[15],_aAN_)}
- catch(_aDz_)
- {_aDz_ = caml_wrap_exception(_aDz_);
- if(_aDz_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MB_];
- throw _aDz_}
- var
- _aAO_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_MF_,calcul_equivalence_loyer_minim),
- [0,
- calcul_equivalence_loyer_minim$0,
- calcul_equivalence_loyer_minim$1,
- calcul_equivalence_loyer_minim$2]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_MG_,_aAO_),
- calcul_equivalence_loyer_minim$3=result$1[1];
- try
- {var
- _aAP_=
- function(param)
- {return [1,
- [0,
- _MJ_,
- caml_call3(Runtime_ocaml_Runtime[56],2022,1,1),
- _MI_,
- 0,
- 0]]},
- _aAQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MK_,1)},
- _aAR_=caml_call4(Runtime_ocaml_Runtime[62],_ML_,[0],_aAQ_,_aAP_),
- calcul_apl_logement_foyer_dot_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_MM_,embed_mode_occupation,_aAR_)}
- catch(_aDy_)
- {_aDy_ = caml_wrap_exception(_aDy_);
- if(_aDy_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MH_];
- throw _aDy_}
- try
- {var
- _aAS_=function(param){return ressources_menage_arrondies_se},
- _aAT_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MO_,1)},
- _aAU_=caml_call4(Runtime_ocaml_Runtime[62],_MP_,[0],_aAT_,_aAS_),
- calcul_apl_logement_foyer_dot_$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_MQ_,Runtime_ocaml_Runtime[13],_aAU_)}
- catch(_aDx_)
- {_aDx_ = caml_wrap_exception(_aDx_);
- if(_aDx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MN_];
- throw _aDx_}
- try
- {var
- _aAV_=function(param){return nombre_personnes_a_charge},
- _aAW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MS_,1)},
- _aAX_=caml_call4(Runtime_ocaml_Runtime[62],_MT_,[0],_aAW_,_aAV_),
- calcul_apl_logement_foyer_dot_$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_MU_,Runtime_ocaml_Runtime[14],_aAX_)}
- catch(_aDw_)
- {_aDw_ = caml_wrap_exception(_aDw_);
- if(_aDw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MR_];
- throw _aDw_}
- try
- {var
- _aAY_=function(param){return situation_familiale_calcul_apl},
- _aAZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MW_,1)},
- _aA0_=caml_call4(Runtime_ocaml_Runtime[62],_MX_,[0],_aAZ_,_aAY_),
- calcul_apl_logement_foyer_dot_$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _MY_,
- embed_situation_familiale_calc,
- _aA0_)}
- catch(_aDv_)
- {_aDv_ = caml_wrap_exception(_aDv_);
- if(_aDv_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MV_];
- throw _aDv_}
- try
- {var
- _aA1_=function(param){return zone},
- _aA2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M0_,1)},
- _aA3_=caml_call4(Runtime_ocaml_Runtime[62],_M1_,[0],_aA2_,_aA1_),
- calcul_apl_logement_foyer_dot_$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_M2_,embed_zone_d_habitation,_aA3_)}
- catch(_aDu_)
- {_aDu_ = caml_wrap_exception(_aDu_);
- if(_aDu_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_MZ_];
- throw _aDu_}
- try
- {var
- _aA4_=function(param){return date_courante},
- _aA5_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M4_,1)},
- _aA6_=caml_call4(Runtime_ocaml_Runtime[62],_M5_,[0],_aA5_,_aA4_),
- calcul_apl_logement_foyer_dot_$4=
- caml_call3
- (Runtime_ocaml_Runtime[28],_M6_,Runtime_ocaml_Runtime[16],_aA6_)}
- catch(_aDt_)
- {_aDt_ = caml_wrap_exception(_aDt_);
- if(_aDt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_M3_];
- throw _aDt_}
- try
- {var
- _aA7_=
- function(param)
- {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$367)},
- _aA8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M8_,1)},
- _aA9_=caml_call4(Runtime_ocaml_Runtime[62],_M9_,[0],_aA8_,_aA7_),
- calcul_apl_logement_foyer_dot_$5=
- caml_call3
- (Runtime_ocaml_Runtime[28],_M__,Runtime_ocaml_Runtime[13],_aA9_)}
- catch(_aDs_)
- {_aDs_ = caml_wrap_exception(_aDs_);
- if(_aDs_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_M7_];
- throw _aDs_}
- function calcul_apl_logement_foyer_dot_$6(param)
- {function _aDp_(param){return 1}
- function _aDq_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_M$_,1)}
- var _aDr_=caml_call4(Runtime_ocaml_Runtime[62],_Na_,[0],_aDq_,_aDp_);
- return caml_call3
- (Runtime_ocaml_Runtime[28],
- _Nb_,
- Runtime_ocaml_Runtime[12],
- _aDr_)}
- function calcul_apl_logement_foyer_dot_$7(param)
- {function _aDm_(param){return calcul_nombre_parts_dot_n_nomb}
- function _aDn_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Nc_,1)}
- var _aDo_=caml_call4(Runtime_ocaml_Runtime[62],_Nd_,[0],_aDn_,_aDm_);
- return caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ne_,
- Runtime_ocaml_Runtime[15],
- _aDo_)}
- var
- _aA__=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Nf_,calcul_aide_personnalisee_loge$0),
- [0,
- calcul_apl_logement_foyer_dot_,
- calcul_apl_logement_foyer_dot_$0,
- calcul_apl_logement_foyer_dot_$1,
- calcul_apl_logement_foyer_dot_$2,
- calcul_apl_logement_foyer_dot_$3,
- calcul_apl_logement_foyer_dot_$4,
- calcul_apl_logement_foyer_dot_$5,
- calcul_apl_logement_foyer_dot_$6,
- calcul_apl_logement_foyer_dot_$7]),
- result$2=caml_call2(Runtime_ocaml_Runtime[27],_Ng_,_aA__),
- calcul_apl_logement_foyer_dot_$8=result$2[7];
- try
- {var
- _aA$_=function(param){return montant_forfaitaire_d842_11},
- _aBa_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ni_,1)},
- _aBb_=
- [0,
- function(param)
- {function _aDf_(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[65],
- ressources_menage_arrondies_se,
- coefficient_d842_11)}
- function _aDg_(param)
- {switch(type_travaux_logement[0])
- {case 0:var _aDh_=0;break;
- case 1:var _aDh_=0;break;
- case 2:var _aDh_=0;break;
- default:var _aDh_=1}
- if(_aDh_)
- var _aDi_=_aDh_;
- else
- {switch(type_travaux_logement[0])
- {case 0:var _aDl_=1;break;
- case 1:var _aDl_=0;break;
- case 2:var _aDl_=0;break;
- default:var _aDl_=0}
- if(_aDl_)
- var _aDi_=_aDl_;
- else
- switch(type_travaux_logement[0])
- {case 0:var _aDi_=0;break;
- case 1:var _aDi_=0;break;
- case 2:var _aDi_=1;break;
- default:var _aDi_=0}}
- if(_aDi_)
- var
- _aDj_=caml_call3(Runtime_ocaml_Runtime[56],1999,7,1),
- _aDk_=
- caml_call2
- (Runtime_ocaml_Runtime[98],date_signature_pret,_aDj_);
- else
- var _aDk_=_aDi_;
- return caml_call2(Runtime_ocaml_Runtime[29],_Nj_,_aDk_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Nk_,[0],_aDg_,_aDf_)}],
- _aBc_=caml_call4(Runtime_ocaml_Runtime[62],_Nl_,_aBb_,_aBa_,_aA$_)}
- catch(_aDe_)
- {_aDe_ = caml_wrap_exception(_aDe_);
- if(_aDe_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Nh_];
- throw _aDe_}
- var
- seuil_minimal_depense_nette_mi=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Nm_,Runtime_ocaml_Runtime[13],_aBc_);
- try
- {var
- _aBd_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[74],
- mensualite_principale,
- plafond_mensualite_d842_6)
- ?plafond_mensualite_d842_6
- :mensualite_principale},
- _aBe_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_No_,1)},
- _aBf_=caml_call4(Runtime_ocaml_Runtime[62],_Np_,[0],_aBe_,_aBd_)}
- catch(_aDd_)
- {_aDd_ = caml_wrap_exception(_aDd_);
- if(_aDd_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Nn_];
- throw _aDd_}
- var
- mensualite_eligible=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Nq_,Runtime_ocaml_Runtime[13],_aBf_);
- try
- {var
- _aBg_=function(param){return calcul_equivalence_loyer_minim$3},
- _aBh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ns_,1)},
- _aBi_=caml_call4(Runtime_ocaml_Runtime[62],_Nt_,[0],_aBh_,_aBg_)}
- catch(_aDc_)
- {_aDc_ = caml_wrap_exception(_aDc_);
- if(_aDc_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Nr_];
- throw _aDc_}
- var
- mensualite_minimale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Nu_,Runtime_ocaml_Runtime[13],_aBi_);
- try
- {var
- _aBj_=function(param){return calcul_apl_logement_foyer_dot_$8},
- _aBk_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Nw_,1)},
- _aBl_=caml_call4(Runtime_ocaml_Runtime[62],_Nx_,[0],_aBk_,_aBj_)}
- catch(_aDb_)
- {_aDb_ = caml_wrap_exception(_aDb_);
- if(_aDb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Nv_];
- throw _aDb_}
- var
- coefficient_prise_en_charge=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ny_,Runtime_ocaml_Runtime[15],_aBl_);
- function _aBm_(param)
- {try
- {var
- _aC1_=
- function(param$0)
- {var
- _aC5_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NA_,
- Runtime_ocaml_Runtime[13],
- param),
- _aC6_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_NB_,depense_nette_minimale),
- _aC5_),
- _aC7_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NC_,
- Runtime_ocaml_Runtime[13],
- _aC6_),
- _aC8_=caml_call2(Runtime_ocaml_Runtime[27],_ND_,_aC7_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],
- _aC8_,
- seuil_minimal_depense_nette_mi))
- {var
- _aC9_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NE_,
- Runtime_ocaml_Runtime[13],
- param),
- _aC__=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_NF_,depense_nette_minimale),
- _aC9_),
- _aC$_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NG_,
- Runtime_ocaml_Runtime[13],
- _aC__),
- _aDa_=caml_call2(Runtime_ocaml_Runtime[27],_NH_,_aC$_);
- return caml_call2
- (Runtime_ocaml_Runtime[68],
- seuil_minimal_depense_nette_mi,
- _aDa_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$368)},
- _aC2_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_NI_,1)},
- _aC3_=caml_call4(Runtime_ocaml_Runtime[62],_NJ_,[0],_aC2_,_aC1_);
- return _aC3_}
- catch(_aC4_)
- {_aC4_ = caml_wrap_exception(_aC4_);
- if(_aC4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Nz_];
- throw _aC4_}}
- var
- abattement_depense_nette_minim=
- caml_call3
- (Runtime_ocaml_Runtime[28],_NK_,Runtime_ocaml_Runtime[10],_aBm_);
- try
- {var
- _aBn_=
- function(param)
- {var
- _aCZ_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- mensualite_eligible,
- montant_forfaitaire_charges),
- _aC0_=
- caml_call2(Runtime_ocaml_Runtime[68],_aCZ_,mensualite_minimale);
- return caml_call2
- (Runtime_ocaml_Runtime[65],
- _aC0_,
- coefficient_prise_en_charge)},
- _aBo_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NM_,1)},
- _aBp_=caml_call4(Runtime_ocaml_Runtime[62],_NN_,[0],_aBo_,_aBn_)}
- catch(_aCY_)
- {_aCY_ = caml_wrap_exception(_aCY_);
- if(_aCY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_NL_];
- throw _aCY_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_NO_,Runtime_ocaml_Runtime[13],_aBp_);
- function _aBq_(param)
- {try
- {var
- _aCu_=
- function(param$0)
- {var
- _aCy_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$369),
- _aCz_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NQ_,
- Runtime_ocaml_Runtime[13],
- param),
- _aCA_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _NR_,
- traitement_aide_finale_minorat),
- _aCz_),
- _aCB_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NS_,
- Runtime_ocaml_Runtime[13],
- _aCA_),
- _aCC_=caml_call2(Runtime_ocaml_Runtime[27],_NT_,_aCB_),
- _aCD_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NU_,
- Runtime_ocaml_Runtime[13],
- _aCC_),
- _aCE_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _NV_,
- abattement_depense_nette_minim),
- _aCD_),
- _aCF_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NW_,
- Runtime_ocaml_Runtime[13],
- _aCE_),
- _aCG_=caml_call2(Runtime_ocaml_Runtime[27],_NX_,_aCF_),
- _aCH_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _NY_,
- Runtime_ocaml_Runtime[13],
- param),
- _aCI_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _NZ_,
- traitement_aide_finale_minorat),
- _aCH_),
- _aCJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N0_,
- Runtime_ocaml_Runtime[13],
- _aCI_),
- _aCK_=caml_call2(Runtime_ocaml_Runtime[27],_N1_,_aCJ_),
- _aCL_=caml_call2(Runtime_ocaml_Runtime[68],_aCK_,_aCG_);
- if(caml_call2(Runtime_ocaml_Runtime[73],_aCL_,_aCy_))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$370);
- var
- _aCM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N2_,
- Runtime_ocaml_Runtime[13],
- param),
- _aCN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _N3_,
- traitement_aide_finale_minorat),
- _aCM_),
- _aCO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N4_,
- Runtime_ocaml_Runtime[13],
- _aCN_),
- _aCP_=caml_call2(Runtime_ocaml_Runtime[27],_N5_,_aCO_),
- _aCQ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N6_,
- Runtime_ocaml_Runtime[13],
- _aCP_),
- _aCR_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _N7_,
- abattement_depense_nette_minim),
- _aCQ_),
- _aCS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N8_,
- Runtime_ocaml_Runtime[13],
- _aCR_),
- _aCT_=caml_call2(Runtime_ocaml_Runtime[27],_N9_,_aCS_),
- _aCU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _N__,
- Runtime_ocaml_Runtime[13],
- param),
- _aCV_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _N$_,
- traitement_aide_finale_minorat),
- _aCU_),
- _aCW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Oa_,
- Runtime_ocaml_Runtime[13],
- _aCV_),
- _aCX_=caml_call2(Runtime_ocaml_Runtime[27],_Ob_,_aCW_);
- return caml_call2(Runtime_ocaml_Runtime[68],_aCX_,_aCT_)},
- _aCv_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Oc_,1)},
- _aCw_=caml_call4(Runtime_ocaml_Runtime[62],_Od_,[0],_aCv_,_aCu_);
- return _aCw_}
- catch(_aCx_)
- {_aCx_ = caml_wrap_exception(_aCx_);
- if(_aCx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_NP_];
- throw _aCx_}}
- var
- traitement_aide_finale_depense=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Oe_,Runtime_ocaml_Runtime[10],_aBq_);
- function _aBr_(param)
- {try
- {var
- _aBE_=
- function(param$0)
- {var
- _aBI_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$371),
- _aBJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Og_,
- Runtime_ocaml_Runtime[13],
- param),
- _aBK_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Oh_,
- traitement_aide_finale_depense),
- _aBJ_),
- _aBL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Oi_,
- Runtime_ocaml_Runtime[13],
- _aBK_),
- _aBM_=caml_call2(Runtime_ocaml_Runtime[27],_Oj_,_aBL_),
- _aBN_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ok_,
- Runtime_ocaml_Runtime[13],
- _aBM_),
- _aBO_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ol_,
- contributions_sociales_dot_mon),
- _aBN_),
- _aBP_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Om_,
- Runtime_ocaml_Runtime[13],
- _aBO_),
- _aBQ_=caml_call2(Runtime_ocaml_Runtime[27],_On_,_aBP_),
- _aBR_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$7),
- _aBS_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Oo_,
- Runtime_ocaml_Runtime[13],
- param),
- _aBT_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Op_,
- traitement_aide_finale_depense),
- _aBS_),
- _aBU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Oq_,
- Runtime_ocaml_Runtime[13],
- _aBT_),
- _aBV_=caml_call2(Runtime_ocaml_Runtime[27],_Or_,_aBU_),
- _aBW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Os_,
- Runtime_ocaml_Runtime[13],
- _aBV_),
- _aBX_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ot_,
- contributions_sociales_dot_mon),
- _aBW_),
- _aBY_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ou_,
- Runtime_ocaml_Runtime[13],
- _aBX_),
- _aBZ_=caml_call2(Runtime_ocaml_Runtime[27],_Ov_,_aBY_),
- _aB0_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Ow_,
- Runtime_ocaml_Runtime[13],
- param),
- _aB1_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Ox_,
- traitement_aide_finale_depense),
- _aB0_),
- _aB2_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Oy_,
- Runtime_ocaml_Runtime[13],
- _aB1_),
- _aB3_=caml_call2(Runtime_ocaml_Runtime[27],_Oz_,_aB2_),
- _aB4_=caml_call2(Runtime_ocaml_Runtime[68],_aB3_,_aBZ_),
- _aB5_=caml_call2(Runtime_ocaml_Runtime[68],_aB4_,_aBR_),
- _aB6_=caml_call1(Runtime_ocaml_Runtime[38],_aB5_),
- _aB7_=caml_call2(Runtime_ocaml_Runtime[67],_aB6_,_aBQ_);
- if(caml_call2(Runtime_ocaml_Runtime[72],_aB7_,_aBI_))
- {var
- _aB8_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OA_,
- Runtime_ocaml_Runtime[13],
- param),
- _aB9_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _OB_,
- traitement_aide_finale_depense),
- _aB8_),
- _aB__=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OC_,
- Runtime_ocaml_Runtime[13],
- _aB9_),
- _aB$_=caml_call2(Runtime_ocaml_Runtime[27],_OD_,_aB__),
- _aCa_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OE_,
- Runtime_ocaml_Runtime[13],
- _aB$_),
- _aCb_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _OF_,
- contributions_sociales_dot_mon),
- _aCa_),
- _aCc_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OG_,
- Runtime_ocaml_Runtime[13],
- _aCb_),
- _aCd_=caml_call2(Runtime_ocaml_Runtime[27],_OH_,_aCc_),
- _aCe_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$8),
- _aCf_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OI_,
- Runtime_ocaml_Runtime[13],
- param),
- _aCg_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _OJ_,
- traitement_aide_finale_depense),
- _aCf_),
- _aCh_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OK_,
- Runtime_ocaml_Runtime[13],
- _aCg_),
- _aCi_=caml_call2(Runtime_ocaml_Runtime[27],_OL_,_aCh_),
- _aCj_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OM_,
- Runtime_ocaml_Runtime[13],
- _aCi_),
- _aCk_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _ON_,
- contributions_sociales_dot_mon),
- _aCj_),
- _aCl_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OO_,
- Runtime_ocaml_Runtime[13],
- _aCk_),
- _aCm_=caml_call2(Runtime_ocaml_Runtime[27],_OP_,_aCl_),
- _aCn_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OQ_,
- Runtime_ocaml_Runtime[13],
- param),
- _aCo_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _OR_,
- traitement_aide_finale_depense),
- _aCn_),
- _aCp_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OS_,
- Runtime_ocaml_Runtime[13],
- _aCo_),
- _aCq_=caml_call2(Runtime_ocaml_Runtime[27],_OT_,_aCp_),
- _aCr_=caml_call2(Runtime_ocaml_Runtime[68],_aCq_,_aCm_),
- _aCs_=caml_call2(Runtime_ocaml_Runtime[68],_aCr_,_aCe_),
- _aCt_=caml_call1(Runtime_ocaml_Runtime[38],_aCs_);
- return caml_call2(Runtime_ocaml_Runtime[67],_aCt_,_aCd_)}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$372)},
- _aBF_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_OU_,1)},
- _aBG_=caml_call4(Runtime_ocaml_Runtime[62],_OV_,[0],_aBF_,_aBE_);
- return _aBG_}
- catch(_aBH_)
- {_aBH_ = caml_wrap_exception(_aBH_);
- if(_aBH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Of_];
- throw _aBH_}}
- var
- traitement_aide_finale_contrib=
- caml_call3
- (Runtime_ocaml_Runtime[28],_OW_,Runtime_ocaml_Runtime[10],_aBr_);
- function _aBs_(param)
- {try
- {var
- _aBt_=
- function(param$0)
- {var
- _aBx_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _OY_,
- Runtime_ocaml_Runtime[13],
- param),
- _aBy_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _OZ_,
- traitement_aide_finale_contrib),
- _aBx_),
- _aBz_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _O0_,
- Runtime_ocaml_Runtime[13],
- _aBy_),
- _aBA_=caml_call2(Runtime_ocaml_Runtime[27],_O1_,_aBz_);
- if
- (caml_call2
- (Runtime_ocaml_Runtime[73],_aBA_,montant_minimal_aide_d842_6))
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$373);
- var
- _aBB_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _O2_,
- Runtime_ocaml_Runtime[13],
- param),
- _aBC_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _O3_,
- traitement_aide_finale_contrib),
- _aBB_),
- _aBD_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _O4_,
- Runtime_ocaml_Runtime[13],
- _aBC_);
- return caml_call2(Runtime_ocaml_Runtime[27],_O5_,_aBD_)},
- _aBu_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_O6_,1)},
- _aBv_=caml_call4(Runtime_ocaml_Runtime[62],_O7_,[0],_aBu_,_aBt_);
- return _aBv_}
- catch(_aBw_)
- {_aBw_ = caml_wrap_exception(_aBw_);
- if(_aBw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_OX_];
- throw _aBw_}}
- var
- traitement_aide_finale_montant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_O8_,Runtime_ocaml_Runtime[10],_aBs_);
- return [0,aide_finale_formule,traitement_aide_finale_montant]}
- function calcul_aide_personnalisee_loge$2
- (calcul_aide_personnalisee_loge$2)
- {var
- mode_occupation=calcul_aide_personnalisee_loge$2[1],
- type_aide=calcul_aide_personnalisee_loge$2[2],
- informations_calcul=calcul_aide_personnalisee_loge$2[3],
- ressources_menage_sans_arrondi=calcul_aide_personnalisee_loge$2[4],
- situation_familiale=calcul_aide_personnalisee_loge$2[5],
- nombre_personnes_a_charge=calcul_aide_personnalisee_loge$2[6],
- zone=calcul_aide_personnalisee_loge$2[7],
- date_courante=calcul_aide_personnalisee_loge$2[8];
- try
- {var
- _aw5_=
- function(param)
- {switch(mode_occupation[0])
- {case 0:return _O__;
- case 1:return _O$_;
- case 2:return _Pa_;
- case 3:return _Pb_;
- default:return _Pc_}},
- _aw6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pd_,1)},
- _aw7_=caml_call4(Runtime_ocaml_Runtime[62],_Pe_,[0],_aw6_,_aw5_)}
- catch(_azP_)
- {_azP_ = caml_wrap_exception(_azP_);
- if(_azP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_O9_];
- throw _azP_}
- var
- categorie_calcul_apl=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Pf_,embed_categorie_calcul_a_p_l,_aw7_);
- try
- {var
- _aw8_=
- function(param)
- {var
- _azJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$10),
- _azK_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$0),
- _azL_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999$0),
- _azM_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- ressources_menage_sans_arrondi,
- _azL_),
- _azN_=caml_call2(Runtime_ocaml_Runtime[65],_azM_,_azK_),
- _azO_=caml_call1(Runtime_ocaml_Runtime[38],_azN_);
- return caml_call2(Runtime_ocaml_Runtime[65],_azO_,_azJ_)},
- _aw9_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ph_,1)},
- _aw__=caml_call4(Runtime_ocaml_Runtime[62],_Pi_,[0],_aw9_,_aw8_)}
- catch(_azI_)
- {_azI_ = caml_wrap_exception(_azI_);
- if(_azI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Pg_];
- throw _azI_}
- var
- ressources_menage_avec_arrondi=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Pj_,Runtime_ocaml_Runtime[13],_aw__);
- try
- {var
- _aw$_=
- function(param)
- {switch(situation_familiale[0])
- {case 0:return _Pl_;
- case 1:return _Pm_;
- case 2:return _Pn_;
- case 3:return _Po_;
- case 4:return _Pp_;
- default:return _Pq_}},
- _axa_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pr_,1)},
- _axb_=caml_call4(Runtime_ocaml_Runtime[62],_Ps_,[0],_axa_,_aw$_)}
- catch(_azH_)
- {_azH_ = caml_wrap_exception(_azH_);
- if(_azH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Pk_];
- throw _azH_}
- var
- situation_familiale_calcul_apl=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Pt_,embed_situation_familiale_calc,_axb_);
- try
- {var
- _axc_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$374);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$375);
- default:var infos=informations_calcul[1];return infos[1]}},
- _axd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pv_,1)},
- _axe_=caml_call4(Runtime_ocaml_Runtime[62],_Pw_,[0],_axd_,_axc_),
- accession_propriete_dot_mensua=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Px_,Runtime_ocaml_Runtime[13],_axe_)}
- catch(_azG_)
- {_azG_ = caml_wrap_exception(_azG_);
- if(_azG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Pu_];
- throw _azG_}
- try
- {var
- _axf_=function(param){return ressources_menage_avec_arrondi},
- _axg_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pz_,1)},
- _axh_=caml_call4(Runtime_ocaml_Runtime[62],_PA_,[0],_axg_,_axf_),
- accession_propriete_dot_ressou=
- caml_call3
- (Runtime_ocaml_Runtime[28],_PB_,Runtime_ocaml_Runtime[13],_axh_)}
- catch(_azF_)
- {_azF_ = caml_wrap_exception(_azF_);
- if(_azF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Py_];
- throw _azF_}
- try
- {var
- _axi_=function(param){return nombre_personnes_a_charge},
- _axj_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PD_,1)},
- _axk_=caml_call4(Runtime_ocaml_Runtime[62],_PE_,[0],_axj_,_axi_),
- accession_propriete_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_PF_,Runtime_ocaml_Runtime[14],_axk_)}
- catch(_azE_)
- {_azE_ = caml_wrap_exception(_azE_);
- if(_azE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PC_];
- throw _azE_}
- try
- {var
- _axl_=function(param){return situation_familiale_calcul_apl},
- _axm_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PH_,1)},
- _axn_=caml_call4(Runtime_ocaml_Runtime[62],_PI_,[0],_axm_,_axl_),
- accession_propriete_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _PJ_,
- embed_situation_familiale_calc,
- _axn_)}
- catch(_azD_)
- {_azD_ = caml_wrap_exception(_azD_);
- if(_azD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PG_];
- throw _azD_}
- try
- {var
- _axo_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return _PL_;
- case 1:return _PM_;
- default:var infos=informations_calcul[1];return infos[5]}},
- _axp_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PN_,1)},
- _axq_=caml_call4(Runtime_ocaml_Runtime[62],_PO_,[0],_axp_,_axo_),
- accession_propriete_dot_type_t=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _PP_,
- embed_type_travaux_logement_d8,
- _axq_)}
- catch(_azC_)
- {_azC_ = caml_wrap_exception(_azC_);
- if(_azC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PK_];
- throw _azC_}
- try
- {var
- _axr_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- default:var infos=informations_calcul[1];return infos[3]}},
- _axs_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PR_,1)},
- _axt_=caml_call4(Runtime_ocaml_Runtime[62],_PS_,[0],_axs_,_axr_),
- accession_propriete_dot_date_s=
- caml_call3
- (Runtime_ocaml_Runtime[28],_PT_,Runtime_ocaml_Runtime[16],_axt_)}
- catch(_azB_)
- {_azB_ = caml_wrap_exception(_azB_);
- if(_azB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PQ_];
- throw _azB_}
- try
- {var
- _axu_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[7]}},
- _axv_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PV_,1)},
- _axw_=caml_call4(Runtime_ocaml_Runtime[62],_PW_,[0],_axv_,_axu_),
- accession_propriete_dot_local_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_PX_,Runtime_ocaml_Runtime[12],_axw_)}
- catch(_azA_)
- {_azA_ = caml_wrap_exception(_azA_);
- if(_azA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PU_];
- throw _azA_}
- try
- {var
- _axx_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- default:var infos=informations_calcul[1];return infos[4]}},
- _axy_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PZ_,1)},
- _axz_=caml_call4(Runtime_ocaml_Runtime[62],_P0_,[0],_axy_,_axx_),
- accession_propriete_dot_date_e=
- caml_call3
- (Runtime_ocaml_Runtime[28],_P1_,Runtime_ocaml_Runtime[16],_axz_)}
- catch(_azz_)
- {_azz_ = caml_wrap_exception(_azz_);
- if(_azz_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_PY_];
- throw _azz_}
- try
- {var
- _axA_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[8]}},
- _axB_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P3_,1)},
- _axC_=caml_call4(Runtime_ocaml_Runtime[62],_P4_,[0],_axB_,_axA_),
- accession_propriete_dot_coprop=
- caml_call3
- (Runtime_ocaml_Runtime[28],_P5_,Runtime_ocaml_Runtime[12],_axC_)}
- catch(_azy_)
- {_azy_ = caml_wrap_exception(_azy_);
- if(_azy_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_P2_];
- throw _azy_}
- try
- {var
- _axD_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[9]}},
- _axE_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P7_,1)},
- _axF_=caml_call4(Runtime_ocaml_Runtime[62],_P8_,[0],_axE_,_axD_),
- accession_propriete_dot_situat$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_P9_,Runtime_ocaml_Runtime[12],_axF_)}
- catch(_azx_)
- {_azx_ = caml_wrap_exception(_azx_);
- if(_azx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_P6_];
- throw _azx_}
- try
- {var
- _axG_=function(param){return zone},
- _axH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_P$_,1)},
- _axI_=caml_call4(Runtime_ocaml_Runtime[62],_Qa_,[0],_axH_,_axG_),
- accession_propriete_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Qb_,embed_zone_d_habitation,_axI_)}
- catch(_azw_)
- {_azw_ = caml_wrap_exception(_azw_);
- if(_azw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_P__];
- throw _azw_}
- try
- {var
- _axJ_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return _Qd_;
- case 1:return _Qe_;
- default:var infos=informations_calcul[1];return infos[10]}},
- _axK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qf_,1)},
- _axL_=caml_call4(Runtime_ocaml_Runtime[62],_Qg_,[0],_axK_,_axJ_),
- accession_propriete_dot_type_p=
- caml_call3(Runtime_ocaml_Runtime[28],_Qh_,embed_type_pret,_axL_)}
- catch(_azv_)
- {_azv_ = caml_wrap_exception(_azv_);
- if(_azv_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Qc_];
- throw _azv_}
- try
- {var
- _axM_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return _Qj_;
- case 1:return _Qk_;
- default:var infos=informations_calcul[1];return infos[11]}},
- _axN_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ql_,1)},
- _axO_=caml_call4(Runtime_ocaml_Runtime[62],_Qm_,[0],_axN_,_axM_),
- accession_propriete_dot_ancien=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Qn_,embed_neuf_ou_ancien,_axO_)}
- catch(_azu_)
- {_azu_ = caml_wrap_exception(_azu_);
- if(_azu_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Qi_];
- throw _azu_}
- try
- {var
- _axP_=function(param){return date_courante},
- _axQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qp_,1)},
- _axR_=caml_call4(Runtime_ocaml_Runtime[62],_Qq_,[0],_axQ_,_axP_),
- accession_propriete_dot_date_c=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Qr_,Runtime_ocaml_Runtime[16],_axR_)}
- catch(_azt_)
- {_azt_ = caml_wrap_exception(_azt_);
- if(_azt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Qo_];
- throw _azt_}
- var
- _axS_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Qs_,calcul_aide_personnalisee_loge$1),
- [0,
- accession_propriete_dot_mensua,
- accession_propriete_dot_ressou,
- accession_propriete_dot_nombre,
- accession_propriete_dot_situat,
- accession_propriete_dot_type_t,
- accession_propriete_dot_date_s,
- accession_propriete_dot_local_,
- accession_propriete_dot_date_e,
- accession_propriete_dot_coprop,
- accession_propriete_dot_situat$0,
- accession_propriete_dot_zone,
- accession_propriete_dot_type_p,
- accession_propriete_dot_ancien,
- accession_propriete_dot_date_c]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Qt_,_axS_),
- accession_propriete_dot_aide_f=result[4],
- accession_propriete_dot_traite=result[5];
- try
- {var
- _axT_=function(param){return mode_occupation},
- _axU_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qv_,1)},
- _axV_=caml_call4(Runtime_ocaml_Runtime[62],_Qw_,[0],_axU_,_axT_),
- logement_foyer_dot_mode_occupa=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Qx_,embed_mode_occupation,_axV_)}
- catch(_azs_)
- {_azs_ = caml_wrap_exception(_azs_);
- if(_azs_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Qu_];
- throw _azs_}
- try
- {var
- _axW_=function(param){return ressources_menage_avec_arrondi},
- _axX_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qz_,1)},
- _axY_=caml_call4(Runtime_ocaml_Runtime[62],_QA_,[0],_axX_,_axW_),
- logement_foyer_dot_ressources_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_QB_,Runtime_ocaml_Runtime[13],_axY_)}
- catch(_azr_)
- {_azr_ = caml_wrap_exception(_azr_);
- if(_azr_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Qy_];
- throw _azr_}
- try
- {var
- _axZ_=function(param){return nombre_personnes_a_charge},
- _ax0_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QD_,1)},
- _ax1_=caml_call4(Runtime_ocaml_Runtime[62],_QE_,[0],_ax0_,_axZ_),
- logement_foyer_dot_nombre_pers=
- caml_call3
- (Runtime_ocaml_Runtime[28],_QF_,Runtime_ocaml_Runtime[14],_ax1_)}
- catch(_azq_)
- {_azq_ = caml_wrap_exception(_azq_);
- if(_azq_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QC_];
- throw _azq_}
- try
- {var
- _ax2_=function(param){return situation_familiale_calcul_apl},
- _ax3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QH_,1)},
- _ax4_=caml_call4(Runtime_ocaml_Runtime[62],_QI_,[0],_ax3_,_ax2_),
- logement_foyer_dot_situation_f=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _QJ_,
- embed_situation_familiale_calc,
- _ax4_)}
- catch(_azp_)
- {_azp_ = caml_wrap_exception(_azp_);
- if(_azp_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QG_];
- throw _azp_}
- try
- {var
- _ax5_=function(param){return zone},
- _ax6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QL_,1)},
- _ax7_=caml_call4(Runtime_ocaml_Runtime[62],_QM_,[0],_ax6_,_ax5_),
- logement_foyer_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_QN_,embed_zone_d_habitation,_ax7_)}
- catch(_azo_)
- {_azo_ = caml_wrap_exception(_azo_);
- if(_azo_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QK_];
- throw _azo_}
- try
- {var
- _ax8_=function(param){return date_courante},
- _ax9_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QP_,1)},
- _ax__=caml_call4(Runtime_ocaml_Runtime[62],_QQ_,[0],_ax9_,_ax8_),
- logement_foyer_dot_date_couran=
- caml_call3
- (Runtime_ocaml_Runtime[28],_QR_,Runtime_ocaml_Runtime[16],_ax__)}
- catch(_azn_)
- {_azn_ = caml_wrap_exception(_azn_);
- if(_azn_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QO_];
- throw _azn_}
- try
- {var
- _ax$_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$376);
- case 1:var infos=informations_calcul[1];return infos[1];
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$377)}},
- _aya_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QT_,1)},
- _ayb_=caml_call4(Runtime_ocaml_Runtime[62],_QU_,[0],_aya_,_ax$_),
- logement_foyer_dot_redevance=
- caml_call3
- (Runtime_ocaml_Runtime[28],_QV_,Runtime_ocaml_Runtime[13],_ayb_)}
- catch(_azm_)
- {_azm_ = caml_wrap_exception(_azm_);
- if(_azm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QS_];
- throw _azm_}
- function logement_foyer_dot_condition_2(param)
- {throw Runtime_ocaml_Runtime[2]}
- function logement_foyer_dot_n_nombre_pa(param)
- {throw Runtime_ocaml_Runtime[2]}
- var
- _ayc_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_QW_,calcul_aide_personnalisee_loge$0),
- [0,
- logement_foyer_dot_mode_occupa,
- logement_foyer_dot_ressources_,
- logement_foyer_dot_nombre_pers,
- logement_foyer_dot_situation_f,
- logement_foyer_dot_zone,
- logement_foyer_dot_date_couran,
- logement_foyer_dot_redevance,
- logement_foyer_dot_condition_2,
- logement_foyer_dot_n_nombre_pa]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_QX_,_ayc_),
- logement_foyer_dot_aide_finale=result$0[8],
- logement_foyer_dot_traitement_=result$0[9];
- try
- {var
- _ayd_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[1];
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$378);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$379)}},
- _aye_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QZ_,1)},
- _ayf_=caml_call4(Runtime_ocaml_Runtime[62],_Q0_,[0],_aye_,_ayd_),
- locatif_dot_loyer_principal=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Q1_,Runtime_ocaml_Runtime[13],_ayf_)}
- catch(_azl_)
- {_azl_ = caml_wrap_exception(_azl_);
- if(_azl_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_QY_];
- throw _azl_}
- try
- {var
- _ayg_=function(param){return ressources_menage_avec_arrondi},
- _ayh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q3_,1)},
- _ayi_=caml_call4(Runtime_ocaml_Runtime[62],_Q4_,[0],_ayh_,_ayg_),
- locatif_dot_ressources_menage_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Q5_,Runtime_ocaml_Runtime[13],_ayi_)}
- catch(_azk_)
- {_azk_ = caml_wrap_exception(_azk_);
- if(_azk_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Q2_];
- throw _azk_}
- try
- {var
- _ayj_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[2];
- case 1:return 0;
- default:return 0}},
- _ayk_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q7_,1)},
- _ayl_=caml_call4(Runtime_ocaml_Runtime[62],_Q8_,[0],_ayk_,_ayj_),
- locatif_dot_beneficiaire_aide_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Q9_,Runtime_ocaml_Runtime[12],_ayl_)}
- catch(_azj_)
- {_azj_ = caml_wrap_exception(_azj_);
- if(_azj_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Q6_];
- throw _azj_}
- try
- {var
- _aym_=function(param){return date_courante},
- _ayn_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Q$_,1)},
- _ayo_=caml_call4(Runtime_ocaml_Runtime[62],_Ra_,[0],_ayn_,_aym_),
- locatif_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Rb_,Runtime_ocaml_Runtime[16],_ayo_)}
- catch(_azi_)
- {_azi_ = caml_wrap_exception(_azi_);
- if(_azi_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Q__];
- throw _azi_}
- try
- {var
- _ayp_=function(param){return nombre_personnes_a_charge},
- _ayq_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rd_,1)},
- _ayr_=caml_call4(Runtime_ocaml_Runtime[62],_Re_,[0],_ayq_,_ayp_),
- locatif_dot_nombre_personnes_a=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Rf_,Runtime_ocaml_Runtime[14],_ayr_)}
- catch(_azh_)
- {_azh_ = caml_wrap_exception(_azh_);
- if(_azh_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Rc_];
- throw _azh_}
- try
- {var
- _ays_=function(param){return situation_familiale_calcul_apl},
- _ayt_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rh_,1)},
- _ayu_=caml_call4(Runtime_ocaml_Runtime[62],_Ri_,[0],_ayt_,_ays_),
- locatif_dot_situation_familial=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Rj_,
- embed_situation_familiale_calc,
- _ayu_)}
- catch(_azg_)
- {_azg_ = caml_wrap_exception(_azg_);
- if(_azg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Rg_];
- throw _azg_}
- try
- {var
- _ayv_=function(param){return zone},
- _ayw_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rl_,1)},
- _ayx_=caml_call4(Runtime_ocaml_Runtime[62],_Rm_,[0],_ayw_,_ayv_),
- locatif_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Rn_,embed_zone_d_habitation,_ayx_)}
- catch(_azf_)
- {_azf_ = caml_wrap_exception(_azf_);
- if(_azf_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Rk_];
- throw _azf_}
- try
- {var
- _ayy_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[3];
- case 1:return 0;
- default:return 0}},
- _ayz_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rp_,1)},
- _ayA_=caml_call4(Runtime_ocaml_Runtime[62],_Rq_,[0],_ayz_,_ayy_),
- locatif_dot_logement_est_chamb=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Rr_,Runtime_ocaml_Runtime[12],_ayA_)}
- catch(_aze_)
- {_aze_ = caml_wrap_exception(_aze_);
- if(_aze_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ro_];
- throw _aze_}
- try
- {var
- _ayB_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[5];
- case 1:return 0;
- default:return 0}},
- _ayC_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rt_,1)},
- _ayD_=caml_call4(Runtime_ocaml_Runtime[62],_Ru_,[0],_ayC_,_ayB_),
- locatif_dot_agees_ou_handicap_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Rv_,Runtime_ocaml_Runtime[12],_ayD_)}
- catch(_azd_)
- {_azd_ = caml_wrap_exception(_azd_);
- if(_azd_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Rs_];
- throw _azd_}
- try
- {var
- _ayE_=function(param){return type_aide},
- _ayF_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rx_,1)},
- _ayG_=caml_call4(Runtime_ocaml_Runtime[62],_Ry_,[0],_ayF_,_ayE_),
- locatif_dot_type_aide=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Rz_,
- embed_type_aides_personnelle_l,
- _ayG_)}
- catch(_azc_)
- {_azc_ = caml_wrap_exception(_azc_);
- if(_azc_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Rw_];
- throw _azc_}
- try
- {var
- _ayH_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[4];
- case 1:return 0;
- default:return 0}},
- _ayI_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RB_,1)},
- _ayJ_=caml_call4(Runtime_ocaml_Runtime[62],_RC_,[0],_ayI_,_ayH_),
- locatif_dot_colocation=
- caml_call3
- (Runtime_ocaml_Runtime[28],_RD_,Runtime_ocaml_Runtime[12],_ayJ_)}
- catch(_azb_)
- {_azb_ = caml_wrap_exception(_azb_);
- if(_azb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_RA_];
- throw _azb_}
- try
- {var
- _ayK_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[6];
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$380);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$381)}},
- _ayL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RF_,1)},
- _ayM_=caml_call4(Runtime_ocaml_Runtime[62],_RG_,[0],_ayL_,_ayK_),
- locatif_dot_reduction_loyer_so=
- caml_call3
- (Runtime_ocaml_Runtime[28],_RH_,Runtime_ocaml_Runtime[13],_ayM_)}
- catch(_aza_)
- {_aza_ = caml_wrap_exception(_aza_);
- if(_aza_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_RE_];
- throw _aza_}
- var
- _ayN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_RI_,calcul_aide_personnalisee_loge),
- [0,
- locatif_dot_loyer_principal,
- locatif_dot_ressources_menage_,
- locatif_dot_beneficiaire_aide_,
- locatif_dot_date_courante,
- locatif_dot_nombre_personnes_a,
- locatif_dot_situation_familial,
- locatif_dot_zone,
- locatif_dot_logement_est_chamb,
- locatif_dot_agees_ou_handicap_,
- locatif_dot_type_aide,
- locatif_dot_colocation,
- locatif_dot_reduction_loyer_so]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_RJ_,_ayN_),
- locatif_dot_aide_finale_formul=result$1[6],
- locatif_dot_traitement_aide_fi=result$1[7];
- function _ayO_(param)
- {try
- {var
- _ayZ_=
- function(param$0)
- {switch(categorie_calcul_apl[0])
- {case 0:
- var
- _ay3_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RL_,
- Runtime_ocaml_Runtime[13],
- param),
- _ay4_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _RM_,
- locatif_dot_traitement_aide_fi),
- _ay3_),
- _ay5_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RN_,
- Runtime_ocaml_Runtime[13],
- _ay4_);
- return caml_call2(Runtime_ocaml_Runtime[27],_RO_,_ay5_);
- case 1:
- var
- _ay6_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RP_,
- Runtime_ocaml_Runtime[13],
- param),
- _ay7_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _RQ_,
- accession_propriete_dot_traite),
- _ay6_),
- _ay8_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RR_,
- Runtime_ocaml_Runtime[13],
- _ay7_);
- return caml_call2(Runtime_ocaml_Runtime[27],_RS_,_ay8_);
- default:
- var
- _ay9_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RT_,
- Runtime_ocaml_Runtime[13],
- param),
- _ay__=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _RU_,
- logement_foyer_dot_traitement_),
- _ay9_),
- _ay$_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _RV_,
- Runtime_ocaml_Runtime[13],
- _ay__);
- return caml_call2(Runtime_ocaml_Runtime[27],_RW_,_ay$_)}},
- _ay0_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_RX_,1)},
- _ay1_=caml_call4(Runtime_ocaml_Runtime[62],_RY_,[0],_ay0_,_ayZ_);
- return _ay1_}
- catch(_ay2_)
- {_ay2_ = caml_wrap_exception(_ay2_);
- if(_ay2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_RK_];
- throw _ay2_}}
- var
- traitement_aide_finale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_RZ_,Runtime_ocaml_Runtime[10],_ayO_);
- try
- {var
- _ayP_=
- function(param)
- {switch(categorie_calcul_apl[0])
- {case 0:return locatif_dot_aide_finale_formul;
- case 1:return accession_propriete_dot_aide_f;
- default:return logement_foyer_dot_aide_finale}},
- _ayQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_R1_,1)},
- _ayR_=caml_call4(Runtime_ocaml_Runtime[62],_R2_,[0],_ayQ_,_ayP_)}
- catch(_ayY_)
- {_ayY_ = caml_wrap_exception(_ayY_);
- if(_ayY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_R0_];
- throw _ayY_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_R3_,Runtime_ocaml_Runtime[13],_ayR_);
- switch(categorie_calcul_apl[0])
- {case 0:var _ayS_=0;break;case 1:var _ayS_=1;break;default:var _ayS_=0}
- if(_ayS_)
- switch(informations_calcul[0])
- {case 0:var _ayT_=0;break;
- case 1:var _ayT_=0;break;
- default:var _ayT_=1}
- else
- var _ayT_=1;
- if(_ayT_)
- {switch(categorie_calcul_apl[0])
- {case 0:var _ayU_=0;break;
- case 1:var _ayU_=0;break;
- default:var _ayU_=1}
- if(_ayU_)
- switch(informations_calcul[0])
- {case 0:var _ayV_=0;break;
- case 1:var _ayV_=1;break;
- default:var _ayV_=0}
- else
- var _ayV_=1;
- if(_ayV_)
- {switch(categorie_calcul_apl[0])
- {case 0:var _ayW_=1;break;
- case 1:var _ayW_=0;break;
- default:var _ayW_=0}
- if(_ayW_)
- switch(informations_calcul[0])
- {case 0:var _ayX_=1;break;
- case 1:var _ayX_=0;break;
- default:var _ayX_=0}
- else
- var _ayX_=1;
- if(_ayX_)return [0,aide_finale_formule,traitement_aide_finale];
- throw [0,Runtime_ocaml_Runtime[3],_R4_]}
- throw [0,Runtime_ocaml_Runtime[3],_R5_]}
- throw [0,Runtime_ocaml_Runtime[3],_R6_]}
- function eligibilite_prime_de_demenagem(eligibilite_prime_de_demenagem)
- {var
- date_emmenagement=eligibilite_prime_de_demenagem[1],
- menage=eligibilite_prime_de_demenagem[2],
- demandeur=eligibilite_prime_de_demenagem[3],
- date_courante=eligibilite_prime_de_demenagem[4],
- depenses_justifiees_reellement=eligibilite_prime_de_demenagem[5];
- try
- {var
- _avD_=
- function(param){return caml_call3(Runtime_ocaml_Runtime[59],0,6,0)},
- _avE_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_R8_,1)},
- _avF_=caml_call4(Runtime_ocaml_Runtime[62],_R9_,[0],_avE_,_avD_)}
- catch(_aw4_)
- {_aw4_ = caml_wrap_exception(_aw4_);
- if(_aw4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_R7_];
- throw _aw4_}
- var
- delai_apres_emmenagement_l823_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_R__,Runtime_ocaml_Runtime[17],_avF_);
- try
- {var
- _avG_=function(param){return 0},
- _avH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sa_,1)},
- _avI_=
- [0,
- function(param)
- {function _awS_(param){return 1}
- function _awT_(param)
- {var
- _awU_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$86),
- _awV_=menage[7],
- _awW_=menage[3],
- _awX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$382);
- function _awY_(acc,personne_a_charge)
- {var _aw2_=0 === personne_a_charge[0]?1:0;
- if(_aw2_)
- {var _aw3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$259);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_aw3_)}
- return acc}
- var
- _awZ_=caml_call3(Stdlib_Array[17],_awY_,_awX_,_awW_),
- _aw0_=caml_call2(Runtime_ocaml_Runtime[75],_awZ_,_awV_),
- _aw1_=caml_call2(Runtime_ocaml_Runtime[81],_aw0_,_awU_);
- return caml_call2(Runtime_ocaml_Runtime[29],_Sb_,_aw1_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_Sc_,[0],_awT_,_awS_)}],
- _avJ_=caml_call4(Runtime_ocaml_Runtime[62],_Sd_,_avI_,_avH_,_avG_)}
- catch(_awR_)
- {_awR_ = caml_wrap_exception(_awR_);
- if(_awR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_R$_];
- throw _awR_}
- var
- condition_rang_enfant=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Se_,Runtime_ocaml_Runtime[12],_avJ_);
- try
- {var
- _avK_=function(param){return date_courante},
- _avL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sg_,1)},
- _avM_=caml_call4(Runtime_ocaml_Runtime[62],_Sh_,[0],_avL_,_avK_),
- base_mensuelle_allocations_fam=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Si_,Runtime_ocaml_Runtime[16],_avM_)}
- catch(_awQ_)
- {_awQ_ = caml_wrap_exception(_awQ_);
- if(_awQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Sf_];
- throw _awQ_}
- var
- _avN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Sj_,base_mensuelle_allocations_fam$5),
- [0,base_mensuelle_allocations_fam]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Sk_,_avN_),
- base_mensuelle_allocations_fam$0=result[1];
- try
- {var
- _avO_=function(param){return menage},
- _avP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sm_,1)},
- _avQ_=caml_call4(Runtime_ocaml_Runtime[62],_Sn_,[0],_avP_,_avO_),
- eligibilite_apl_dot_menage=
- caml_call3(Runtime_ocaml_Runtime[28],_So_,embed_menage,_avQ_)}
- catch(_awP_)
- {_awP_ = caml_wrap_exception(_awP_);
- if(_awP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Sl_];
- throw _awP_}
- try
- {var
- _avR_=function(param){return demandeur},
- _avS_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sq_,1)},
- _avT_=caml_call4(Runtime_ocaml_Runtime[62],_Sr_,[0],_avS_,_avR_),
- eligibilite_apl_dot_demandeur=
- caml_call3(Runtime_ocaml_Runtime[28],_Ss_,embed_demandeur,_avT_)}
- catch(_awO_)
- {_awO_ = caml_wrap_exception(_awO_);
- if(_awO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Sp_];
- throw _awO_}
- try
- {var
- _avU_=function(param){return date_courante},
- _avV_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Su_,1)},
- _avW_=caml_call4(Runtime_ocaml_Runtime[62],_Sv_,[0],_avV_,_avU_),
- eligibilite_apl_dot_date_coura=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Sw_,Runtime_ocaml_Runtime[16],_avW_)}
- catch(_awN_)
- {_awN_ = caml_wrap_exception(_awN_);
- if(_awN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_St_];
- throw _awN_}
- function eligibilite_apl_dot_condition_(param)
- {throw Runtime_ocaml_Runtime[2]}
- function eligibilite_apl_dot_condition_$0(param)
- {throw Runtime_ocaml_Runtime[2]}
- var
- _avX_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Sx_,eligibilite_aides_personnelle_),
- [0,
- eligibilite_apl_dot_menage,
- eligibilite_apl_dot_demandeur,
- eligibilite_apl_dot_date_coura,
- eligibilite_apl_dot_condition_,
- eligibilite_apl_dot_condition_$0]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_Sy_,_avX_),
- eligibilite_apl_dot_date_coura$0=result$0[1],
- eligibilite_apl_dot_eligibilit=result$0[2];
- try
- {var
- _avY_=function(param){return 0},
- _avZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SA_,1)},
- _av0_=
- [0,
- function(param)
- {function _awD_(param){return 1}
- function _awE_(param)
- {var _awF_=menage[9];
- if(0 === _awF_[0])
- var _awG_=0;
- else
- {var date_naissance_ou_grossesse=_awF_[1];
- switch(date_naissance_ou_grossesse[0])
- {case 0:
- var
- date_naissance=date_naissance_ou_grossesse[1],
- _awH_=caml_call3(Runtime_ocaml_Runtime[59],0,0,-1),
- _awI_=caml_call3(Runtime_ocaml_Runtime[59],2,0,0),
- _awJ_=
- caml_call2(Runtime_ocaml_Runtime[95],date_naissance,_awI_),
- _awK_=caml_call1(Runtime_ocaml_Runtime[57],_awJ_),
- _awL_=caml_call2(Runtime_ocaml_Runtime[95],_awK_,_awH_),
- _awM_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_awL_);
- break;
- case 1:var _awM_=0;break;
- default:var _awM_=1}
- var _awG_=_awM_}
- return caml_call2(Runtime_ocaml_Runtime[29],_SB_,_awG_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_SC_,[0],_awE_,_awD_)}],
- _av1_=caml_call4(Runtime_ocaml_Runtime[62],_SD_,_av0_,_avZ_,_avY_)}
- catch(_awC_)
- {_awC_ = caml_wrap_exception(_awC_);
- if(_awC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Sz_];
- throw _awC_}
- var
- condition_periode_demenagement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_SE_,Runtime_ocaml_Runtime[12],_av1_);
- try
- {var
- _av2_=
- function(param)
- {var
- _awh_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$87),
- _awi_=menage[3],
- _awj_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$383);
- function _awk_(acc,personne_a_charge)
- {var _awA_=0 === personne_a_charge[0]?1:0;
- if(_awA_)
- {var _awB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$260);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_awB_)}
- return acc}
- var _awl_=caml_call3(Stdlib_Array[17],_awk_,_awj_,_awi_);
- if(caml_call2(Runtime_ocaml_Runtime[83],_awl_,_awh_))
- var
- _awm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$1),
- _awn_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$88),
- _awo_=menage[3],
- _awp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$384),
- _awq_=
- function(acc,personne_a_charge)
- {var _awy_=0 === personne_a_charge[0]?1:0;
- if(_awy_)
- {var _awz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$261);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_awz_)}
- return acc},
- _awr_=caml_call3(Stdlib_Array[17],_awq_,_awp_,_awo_),
- _aws_=caml_call2(Runtime_ocaml_Runtime[76],_awr_,_awn_),
- _awt_=caml_call1(Runtime_ocaml_Runtime[41],_aws_),
- _awu_=caml_call2(Runtime_ocaml_Runtime[88],_awt_,_awm_),
- _awv_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- base_mensuelle_allocations_fam$0,
- _awu_);
- else
- var _awv_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$385);
- var
- _aww_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_4),
- _awx_=
- caml_call2
- (Runtime_ocaml_Runtime[65],
- base_mensuelle_allocations_fam$0,
- _aww_);
- return caml_call2(Runtime_ocaml_Runtime[67],_awx_,_awv_)},
- _av3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SG_,1)},
- _av4_=caml_call4(Runtime_ocaml_Runtime[62],_SH_,[0],_av3_,_av2_)}
- catch(_awg_)
- {_awg_ = caml_wrap_exception(_awg_);
- if(_awg_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_SF_];
- throw _awg_}
- var
- plafond_d823_22=
- caml_call3
- (Runtime_ocaml_Runtime[28],_SI_,Runtime_ocaml_Runtime[13],_av4_);
- try
- {var
- _av5_=function(param){return 0},
- _av6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SK_,1)},
- _av7_=
- [0,
- function(param)
- {function _awc_(param){return 1}
- function _awd_(param)
- {if(eligibilite_apl_dot_eligibilit)
- if(condition_rang_enfant)
- if(condition_periode_demenagement)
- var
- _awe_=
- caml_call2
- (Runtime_ocaml_Runtime[96],
- eligibilite_apl_dot_date_coura$0,
- date_emmenagement),
- _awf_=
- caml_call2
- (Runtime_ocaml_Runtime[109],
- _awe_,
- delai_apres_emmenagement_l823_);
- else
- var _awf_=condition_periode_demenagement;
- else
- var _awf_=condition_rang_enfant;
- else
- var _awf_=eligibilite_apl_dot_eligibilit;
- return caml_call2(Runtime_ocaml_Runtime[29],_SL_,_awf_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_SM_,[0],_awd_,_awc_)}],
- _av8_=caml_call4(Runtime_ocaml_Runtime[62],_SN_,_av7_,_av6_,_av5_)}
- catch(_awb_)
- {_awb_ = caml_wrap_exception(_awb_);
- if(_awb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_SJ_];
- throw _awb_}
- caml_call3
- (Runtime_ocaml_Runtime[28],_SO_,Runtime_ocaml_Runtime[12],_av8_);
- try
- {var
- _av9_=
- function(param)
- {return caml_call2
- (Runtime_ocaml_Runtime[71],
- depenses_justifiees_reellement,
- plafond_d823_22)
- ?depenses_justifiees_reellement
- :plafond_d823_22},
- _av__=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SQ_,1)},
- _av$_=caml_call4(Runtime_ocaml_Runtime[62],_SR_,[0],_av__,_av9_)}
- catch(_awa_)
- {_awa_ = caml_wrap_exception(_awa_);
- if(_awa_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_SP_];
- throw _awa_}
- var
- montant_prime_demenagement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_SS_,Runtime_ocaml_Runtime[13],_av$_);
- return [0,montant_prime_demenagement]}
- function eligibilite_aide_personnalisee(eligibilite_aide_personnalisee)
- {var
- menage=eligibilite_aide_personnalisee[1],
- demandeur=eligibilite_aide_personnalisee[2],
- date_courante=eligibilite_aide_personnalisee[3];
- function _att_(param)
- {try
- {var
- _avi_=function(param){return 0},
- _avj_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_SU_,1)},
- _avk_=
- [0,
- function(param$0)
- {function _avn_(param){throw Runtime_ocaml_Runtime[2]}
- function _avo_(param){return 0}
- var
- _avp_=
- [0,
- function(param$0)
- {function _avq_(param){return 1}
- function _avr_(param$0)
- {var _avz_=0 === param[3][0]?1:0;
- if(_avz_)
- {switch(param[1][0])
- {case 0:var _avA_=1;break;
- case 1:var _avA_=0;break;
- case 2:var _avA_=0;break;
- case 3:var _avA_=0;break;
- default:var _avA_=0}
- if(_avA_)
- var _avB_=_avA_;
- else
- {switch(param[1][0])
- {case 0:var _avC_=0;break;
- case 1:var _avC_=1;break;
- case 2:var _avC_=0;break;
- case 3:var _avC_=0;break;
- default:var _avC_=0}
- var _avB_=_avC_}}
- else
- var _avB_=_avz_;
- return caml_call2(Runtime_ocaml_Runtime[29],_SV_,_avB_)}
- var
- _avs_=
- [0,
- function(param$0)
- {function _avt_(param){return 1}
- function _avu_(param$0)
- {var _avv_=0 === param[3][0]?0:1;
- if(_avv_)
- {switch(param[1][0])
- {case 0:var _avw_=0;break;
- case 1:var _avw_=0;break;
- case 2:var _avw_=1;break;
- case 3:var _avw_=0;break;
- default:var _avw_=0}
- if(_avw_)
- var _avx_=_avw_;
- else
- {switch(param[1][0])
- {case 0:var _avy_=0;break;
- case 1:var _avy_=0;break;
- case 2:var _avy_=0;break;
- case 3:var _avy_=1;break;
- default:var _avy_=0}
- var _avx_=_avy_}}
- else
- var _avx_=_avv_;
- return caml_call2(Runtime_ocaml_Runtime[29],_SW_,_avx_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_SX_,[0],_avu_,_avt_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_SY_,_avs_,_avr_,_avq_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_SZ_,_avp_,_avo_,_avn_)}],
- _avl_=caml_call4(Runtime_ocaml_Runtime[62],_S0_,_avk_,_avj_,_avi_);
- return _avl_}
- catch(_avm_)
- {_avm_ = caml_wrap_exception(_avm_);
- if(_avm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ST_];
- throw _avm_}}
- var
- caracteristiques_pret_l831_1_1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_S1_,Runtime_ocaml_Runtime[10],_att_);
- function _atu_(param)
- {try
- {var
- _ave_=function(param){return 0},
- _avf_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_S3_,1)},
- _avg_=caml_call4(Runtime_ocaml_Runtime[62],_S4_,[0],_avf_,_ave_);
- return _avg_}
- catch(_avh_)
- {_avh_ = caml_wrap_exception(_avh_);
- if(_avh_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_S2_];
- throw _avh_}}
- var
- caracteristiques_pret_l831_1_6=
- caml_call3
- (Runtime_ocaml_Runtime[28],_S5_,Runtime_ocaml_Runtime[10],_atu_);
- try
- {var
- _atv_=function(param){return 0},
- _atw_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S7_,1)},
- _atx_=
- [0,
- function(param)
- {function _auQ_(param){return 1}
- function _auR_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_S8_,1)}
- var
- _auS_=
- [0,
- function(param)
- {function _auT_(param){return 0}
- function _auU_(param)
- {var _ava_=menage[2][3];
- switch(_ava_[0])
- {case 0:var _avb_=0;break;
- case 1:var _avb_=0;break;
- case 2:
- var
- propriete=_ava_[1],
- _avc_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _avb_=
- caml_call2(Runtime_ocaml_Runtime[98],propriete[1][2],_avc_);
- break;
- case 3:var _avb_=0;break;
- default:
- var
- propriete$0=_ava_[1],
- _avd_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _avb_=
- caml_call2
- (Runtime_ocaml_Runtime[98],propriete$0[1][2],_avd_)}
- return caml_call2(Runtime_ocaml_Runtime[29],_S9_,_avb_)}
- var
- _auV_=
- [0,
- function(param)
- {function _auW_(param){return 1}
- function _auX_(param)
- {var _auY_=menage[2][3];
- switch(_auY_[0])
- {case 0:var _auZ_=0;break;
- case 1:var _auZ_=0;break;
- case 2:
- var
- propriete=_auY_[1],
- _au0_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _au1_=
- caml_call2(Runtime_ocaml_Runtime[98],propriete[1][2],_au0_);
- if(_au1_)
- {var
- _au2_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _au3_=
- caml_call2(Runtime_ocaml_Runtime[101],propriete[1][2],_au2_);
- if(_au3_)
- var _au4_=menage[2][9],_au5_=_au4_?menage[2][10]:_au4_;
- else
- var _au5_=_au3_}
- else
- var _au5_=_au1_;
- var _auZ_=_au5_;
- break;
- case 3:var _auZ_=0;break;
- default:
- var
- propriete$0=_auY_[1],
- _au6_=caml_call3(Runtime_ocaml_Runtime[56],2018,1,1),
- _au7_=
- caml_call2
- (Runtime_ocaml_Runtime[98],propriete$0[1][2],_au6_);
- if(_au7_)
- {var
- _au8_=caml_call3(Runtime_ocaml_Runtime[56],2020,1,1),
- _au9_=
- caml_call2
- (Runtime_ocaml_Runtime[101],propriete$0[1][2],_au8_);
- if(_au9_)
- var _au__=menage[2][9],_au$_=_au__?menage[2][10]:_au__;
- else
- var _au$_=_au9_}
- else
- var _au$_=_au7_;
- var _auZ_=_au$_}
- return caml_call2(Runtime_ocaml_Runtime[29],_S__,_auZ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_S$_,[0],_auX_,_auW_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Ta_,_auV_,_auU_,_auT_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_Tb_,_auS_,_auR_,_auQ_)}],
- _aty_=caml_call4(Runtime_ocaml_Runtime[62],_Tc_,_atx_,_atw_,_atv_)}
- catch(_auP_)
- {_auP_ = caml_wrap_exception(_auP_);
- if(_auP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_S6_];
- throw _auP_}
- var
- condition_logement_pret=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Td_,Runtime_ocaml_Runtime[12],_aty_);
- try
- {var
- _atz_=function(param){return menage},
- _atA_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tf_,1)},
- _atB_=caml_call4(Runtime_ocaml_Runtime[62],_Tg_,[0],_atA_,_atz_),
- eligibilite_commune_dot_menage=
- caml_call3(Runtime_ocaml_Runtime[28],_Th_,embed_menage,_atB_)}
- catch(_auO_)
- {_auO_ = caml_wrap_exception(_auO_);
- if(_auO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Te_];
- throw _auO_}
- try
- {var
- _atC_=function(param){return demandeur},
- _atD_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tj_,1)},
- _atE_=caml_call4(Runtime_ocaml_Runtime[62],_Tk_,[0],_atD_,_atC_),
- eligibilite_commune_dot_demand=
- caml_call3(Runtime_ocaml_Runtime[28],_Tl_,embed_demandeur,_atE_)}
- catch(_auN_)
- {_auN_ = caml_wrap_exception(_auN_);
- if(_auN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ti_];
- throw _auN_}
- try
- {var
- _atF_=function(param){return date_courante},
- _atG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tn_,1)},
- _atH_=caml_call4(Runtime_ocaml_Runtime[62],_To_,[0],_atG_,_atF_),
- eligibilite_commune_dot_date_c=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Tp_,Runtime_ocaml_Runtime[16],_atH_)}
- catch(_auM_)
- {_auM_ = caml_wrap_exception(_auM_);
- if(_auM_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Tm_];
- throw _auM_}
- function eligibilite_commune_dot_condit(param)
- {throw Runtime_ocaml_Runtime[2]}
- function eligibilite_commune_dot_condit$0(param)
- {throw Runtime_ocaml_Runtime[2]}
- var
- _atI_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Tq_,eligibilite_aides_personnelle_),
- [0,
- eligibilite_commune_dot_menage,
- eligibilite_commune_dot_demand,
- eligibilite_commune_dot_date_c,
- eligibilite_commune_dot_condit,
- eligibilite_commune_dot_condit$0]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Tr_,_atI_),
- eligibilite_commune_dot_eligib=result[2],
- eligibilite_commune_dot_nombre=result[3],
- eligibilite_commune_dot_coeffi=result[4];
- try
- {var
- _atJ_=function(param){return 0},
- _atK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tt_,1)},
- _atL_=
- function(param)
- {function _aup_(param){throw Runtime_ocaml_Runtime[2]}
- function _auq_(param){return 0}
- var
- _aur_=
- [0,
- function(param)
- {function _aus_(param){return 1}
- function _aut_(param)
- {var _auH_=menage[2][3];
- switch(_auH_[0])
- {case 0:var _auI_=0;break;
- case 1:var _auI_=0;break;
- case 2:
- var
- propriete=_auH_[1],
- _auJ_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Tv_,embed_pret,propriete[1]),
- _auK_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Tw_,
- caracteristiques_pret_l831_1_1),
- _auJ_),
- _auL_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Tx_,
- Runtime_ocaml_Runtime[12],
- _auK_),
- _auI_=caml_call2(Runtime_ocaml_Runtime[27],_Ty_,_auL_);
- break;
- case 3:var _auI_=0;break;
- default:var _auI_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_Tu_,_auI_)}
- var
- _auu_=
- [0,
- function(param)
- {function _auv_(param){return 1}
- function _auw_(param)
- {var _auC_=menage[2][3];
- switch(_auC_[0])
- {case 0:var _auD_=0;break;
- case 1:var _auD_=0;break;
- case 2:var _auD_=0;break;
- case 3:var _auD_=0;break;
- default:
- var
- propriete=_auC_[1],
- _auE_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_TA_,embed_pret,propriete[1]),
- _auF_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _TB_,
- caracteristiques_pret_l831_1_6),
- _auE_),
- _auG_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _TC_,
- Runtime_ocaml_Runtime[12],
- _auF_),
- _auD_=caml_call2(Runtime_ocaml_Runtime[27],_TD_,_auG_)}
- return caml_call2(Runtime_ocaml_Runtime[29],_Tz_,_auD_)}
- var
- _aux_=
- [0,
- function(param)
- {function _auy_(param){return 1}
- function _auz_(param)
- {var _auA_=menage[2][3];
- switch(_auA_[0])
- {case 0:var _auB_=0;break;
- case 1:
- var logement_foyer=_auA_[1],_auB_=logement_foyer[4];break;
- case 2:var _auB_=0;break;
- case 3:var _auB_=0;break;
- default:var _auB_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_TE_,_auB_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TF_,[0],_auz_,_auy_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TG_,_aux_,_auw_,_auv_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TH_,_auu_,_aut_,_aus_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TI_,_aur_,_auq_,_aup_)},
- _atM_=
- [0,
- function(param)
- {function _at5_(param){return 1}
- function _at6_(param)
- {var _aum_=menage[2][3];
- switch(_aum_[0])
- {case 0:
- var
- location=_aum_[1],
- _aun_=0 === location[1][1][0]?location[1][2]:location[1][3],
- _auo_=_aun_;
- break;
- case 1:var _auo_=0;break;
- case 2:var _auo_=0;break;
- case 3:var _auo_=0;break;
- default:var _auo_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_TJ_,_auo_)}
- var
- _at7_=
- [0,
- function(param)
- {function _at8_(param){return 1}
- function _at9_(param)
- {var _auf_=menage[2][3];
- switch(_auf_[0])
- {case 0:
- var location=_auf_[1];
- if(0 === location[1][1][0])
- {var _aug_=location[1][4];
- if(_aug_)
- var _auh_=location[1][2],_aui_=_auh_ || location[1][3];
- else
- var _aui_=_aug_}
- else
- {var _auk_=location[1][4];
- if(_auk_)
- var _aul_=location[1][2],_aui_=_aul_ || location[1][3];
- else
- var _aui_=_auk_}
- var _auj_=_aui_;
- break;
- case 1:var _auj_=0;break;
- case 2:var _auj_=0;break;
- case 3:var _auj_=0;break;
- default:var _auj_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_TK_,_auj_)}
- var
- _at__=
- [0,
- function(param)
- {function _at$_(param){return 0}
- function _aua_(param)
- {var _aub_=menage[2][3];
- switch(_aub_[0])
- {case 0:
- var location=_aub_[1];
- if(0 === location[1][1][0])
- var _auc_=0;
- else
- var
- _aue_=location[1][5],
- _auc_=_aue_?1 - location[1][2]:_aue_;
- var _aud_=_auc_;
- break;
- case 1:var _aud_=0;break;
- case 2:var _aud_=0;break;
- case 3:var _aud_=0;break;
- default:var _aud_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_TL_,_aud_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TM_,[0],_aua_,_at$_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TN_,_at__,_at9_,_at8_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_TO_,_at7_,_at6_,_at5_)},
- _atL_],
- _atN_=caml_call4(Runtime_ocaml_Runtime[62],_TP_,_atM_,_atK_,_atJ_)}
- catch(_at4_)
- {_at4_ = caml_wrap_exception(_at4_);
- if(_at4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ts_];
- throw _at4_}
- var
- condition_logement_bailleur=
- caml_call3
- (Runtime_ocaml_Runtime[28],_TQ_,Runtime_ocaml_Runtime[12],_atN_);
- try
- {var
- _atO_=function(param){return eligibilite_commune_dot_coeffi},
- _atP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TS_,1)},
- _atQ_=caml_call4(Runtime_ocaml_Runtime[62],_TT_,[0],_atP_,_atO_)}
- catch(_at3_)
- {_at3_ = caml_wrap_exception(_at3_);
- if(_at3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_TR_];
- throw _at3_}
- var
- _atR_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]),
- coefficents_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],_TU_,_atR_,_atQ_);
- try
- {var
- _atS_=function(param){return eligibilite_commune_dot_nombre},
- _atT_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TW_,1)},
- _atU_=caml_call4(Runtime_ocaml_Runtime[62],_TX_,[0],_atT_,_atS_)}
- catch(_at2_)
- {_at2_ = caml_wrap_exception(_at2_);
- if(_at2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_TV_];
- throw _at2_}
- var
- nombre_personnes_a_charge_pris=
- caml_call3
- (Runtime_ocaml_Runtime[28],_TY_,Runtime_ocaml_Runtime[14],_atU_);
- try
- {var
- _atV_=function(param){return 0},
- _atW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T0_,1)},
- _atX_=
- [0,
- function(param)
- {function _at0_(param){return 1}
- function _at1_(param)
- {var
- eligibilite_commune_dot_eligib$0=
- condition_logement_bailleur
- ?condition_logement_pret
- ?eligibilite_commune_dot_eligib
- :condition_logement_pret
- :condition_logement_bailleur;
- return caml_call2
- (Runtime_ocaml_Runtime[29],
- _T1_,
- eligibilite_commune_dot_eligib$0)}
- return caml_call4(Runtime_ocaml_Runtime[62],_T2_,[0],_at1_,_at0_)}],
- _atY_=caml_call4(Runtime_ocaml_Runtime[62],_T3_,_atX_,_atW_,_atV_)}
- catch(_atZ_)
- {_atZ_ = caml_wrap_exception(_atZ_);
- if(_atZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_TZ_];
- throw _atZ_}
- var
- eligibilite=
- caml_call3
- (Runtime_ocaml_Runtime[28],_T4_,Runtime_ocaml_Runtime[12],_atY_);
- return [0,
- date_courante,
- eligibilite,
- nombre_personnes_a_charge_pris,
- coefficents_enfants_garde_alte]}
- function eligibilite_allocation_logemen(eligibilite_allocation_logemen)
- {var
- date_courante=eligibilite_allocation_logemen[1],
- menage=eligibilite_allocation_logemen[2],
- demandeur=eligibilite_allocation_logemen[3],
- beneficie_aide_personnalisee_l=eligibilite_allocation_logemen[4],
- informations_calcul=eligibilite_allocation_logemen[5];
- try
- {var
- _aqj_=
- function(param){return caml_call3(Runtime_ocaml_Runtime[59],5,0,0)},
- _aqk_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T6_,1)},
- _aql_=caml_call4(Runtime_ocaml_Runtime[62],_T7_,[0],_aqk_,_aqj_)}
- catch(_ats_)
- {_ats_ = caml_wrap_exception(_ats_);
- if(_ats_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_T5_];
- throw _ats_}
- var
- duree_l841_1_3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_T8_,Runtime_ocaml_Runtime[17],_aql_);
- try
- {var
- _aqm_=function(param){return date_courante},
- _aqn_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T__,1)},
- _aqo_=caml_call4(Runtime_ocaml_Runtime[62],_T$_,[0],_aqn_,_aqm_),
- prestations_familiales_dot_dat=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Ua_,Runtime_ocaml_Runtime[16],_aqo_)}
- catch(_atr_)
- {_atr_ = caml_wrap_exception(_atr_);
- if(_atr_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_T9_];
- throw _atr_}
- try
- {var
- _aqp_=function(param){return _Uc_},
- _aqq_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ud_,1)},
- _aqr_=caml_call4(Runtime_ocaml_Runtime[62],_Ue_,[0],_aqq_,_aqp_),
- prestations_familiales_dot_pre=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Uf_,
- embed_element_prestations_fami$0,
- _aqr_)}
- catch(_atq_)
- {_atq_ = caml_wrap_exception(_atq_);
- if(_atq_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ub_];
- throw _atq_}
- try
- {var
- _aqs_=function(param){return _Uh_},
- _aqt_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ui_,1)},
- _aqu_=caml_call4(Runtime_ocaml_Runtime[62],_Uj_,[0],_aqt_,_aqs_),
- prestations_familiales_dot_res=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Uk_,embed_collectivite$0,_aqu_)}
- catch(_atp_)
- {_atp_ = caml_wrap_exception(_atp_);
- if(_atp_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ug_];
- throw _atp_}
- var
- _aqv_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Ul_,eligibilite_prestations_famili),
- [0,
- prestations_familiales_dot_dat,
- prestations_familiales_dot_pre,
- prestations_familiales_dot_res]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Um_,_aqv_),
- prestations_familiales_dot_dro=result[1];
- try
- {var
- _aqw_=function(param){return menage},
- _aqx_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Uo_,1)},
- _aqy_=caml_call4(Runtime_ocaml_Runtime[62],_Up_,[0],_aqx_,_aqw_),
- eligibilite_commune_dot_menage=
- caml_call3(Runtime_ocaml_Runtime[28],_Uq_,embed_menage,_aqy_)}
- catch(_ato_)
- {_ato_ = caml_wrap_exception(_ato_);
- if(_ato_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Un_];
- throw _ato_}
- try
- {var
- _aqz_=function(param){return demandeur},
- _aqA_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Us_,1)},
- _aqB_=caml_call4(Runtime_ocaml_Runtime[62],_Ut_,[0],_aqA_,_aqz_),
- eligibilite_commune_dot_demand=
- caml_call3(Runtime_ocaml_Runtime[28],_Uu_,embed_demandeur,_aqB_)}
- catch(_atn_)
- {_atn_ = caml_wrap_exception(_atn_);
- if(_atn_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ur_];
- throw _atn_}
- try
- {var
- _aqC_=function(param){return date_courante},
- _aqD_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Uw_,1)},
- _aqE_=caml_call4(Runtime_ocaml_Runtime[62],_Ux_,[0],_aqD_,_aqC_),
- eligibilite_commune_dot_date_c=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Uy_,Runtime_ocaml_Runtime[16],_aqE_)}
- catch(_atm_)
- {_atm_ = caml_wrap_exception(_atm_);
- if(_atm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Uv_];
- throw _atm_}
- function eligibilite_commune_dot_condit(param)
- {function _ate_(param){return 0}
- function _atf_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Uz_,1)}
- var
- _atg_=
- [0,
- function(param)
- {function _ati_(param){return 1}
- function _atj_(param)
- {var _atk_=menage[2][3];
- switch(_atk_[0])
- {case 0:var _atl_=0;break;
- case 1:
- var logement_foyer=_atk_[1],_atl_=logement_foyer[5];break;
- case 2:var _atl_=0;break;
- case 3:var _atl_=0;break;
- default:var _atl_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_UA_,_atl_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_UB_,[0],_atj_,_ati_)}],
- _ath_=caml_call4(Runtime_ocaml_Runtime[62],_UC_,_atg_,_atf_,_ate_);
- return caml_call3
- (Runtime_ocaml_Runtime[28],
- _UD_,
- Runtime_ocaml_Runtime[12],
- _ath_)}
- function eligibilite_commune_dot_condit$0(param)
- {function _as8_(param){return 0}
- function _as9_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_UE_,1)}
- var
- _as__=
- [0,
- function(param)
- {function _ata_(param){return 1}
- function _atb_(param)
- {var _atc_=menage[2][3];
- switch(_atc_[0])
- {case 0:var _atd_=0;break;
- case 1:
- var logement_foyer=_atc_[1],_atd_=logement_foyer[5];break;
- case 2:var _atd_=0;break;
- case 3:var _atd_=0;break;
- default:var _atd_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_UF_,_atd_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_UG_,[0],_atb_,_ata_)}],
- _as$_=caml_call4(Runtime_ocaml_Runtime[62],_UH_,_as__,_as9_,_as8_);
- return caml_call3
- (Runtime_ocaml_Runtime[28],
- _UI_,
- Runtime_ocaml_Runtime[12],
- _as$_)}
- var
- _aqF_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_UJ_,eligibilite_aides_personnelle_),
- [0,
- eligibilite_commune_dot_menage,
- eligibilite_commune_dot_demand,
- eligibilite_commune_dot_date_c,
- eligibilite_commune_dot_condit,
- eligibilite_commune_dot_condit$0]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_UK_,_aqF_),
- eligibilite_commune_dot_eligib=result$0[2],
- eligibilite_commune_dot_nombre=result$0[3],
- eligibilite_commune_dot_coeffi=result$0[4],
- eligibilite_commune_dot_condit$1=result$0[5];
- try
- {var
- _aqG_=function(param){return 0},
- _aqH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UM_,1)},
- _aqI_=
- [0,
- function(param)
- {function _as6_(param){return 1}
- function _as7_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_UN_,demandeur[7])}
- return caml_call4(Runtime_ocaml_Runtime[62],_UO_,[0],_as7_,_as6_)}],
- _aqJ_=caml_call4(Runtime_ocaml_Runtime[62],_UP_,_aqI_,_aqH_,_aqG_)}
- catch(_as5_)
- {_as5_ = caml_wrap_exception(_as5_);
- if(_as5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_UL_];
- throw _as5_}
- var
- eligibilite_allocation_logemen$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_UQ_,Runtime_ocaml_Runtime[12],_aqJ_);
- try
- {var
- _aqK_=function(param){return 0},
- _aqL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_US_,1)},
- _aqM_=
- [0,
- function(param)
- {function _asB_(param){throw Runtime_ocaml_Runtime[2]}
- function _asC_(param){return 0}
- var
- _asD_=
- [0,
- function(param)
- {function _asE_(param){return 1}
- function _asF_(param)
- {switch(informations_calcul[0])
- {case 0:var _asY_=0;break;
- case 1:var _asY_=0;break;
- default:
- var infos=informations_calcul[1],_asZ_=menage[2][3];
- switch(_asZ_[0])
- {case 0:var _as0_=0;break;
- case 1:var _as0_=0;break;
- case 2:
- var
- proprietaire=_asZ_[1],
- _as1_=0 === proprietaire[1][3][0]?1:0;
- if(_as1_)
- {switch(infos[6][0])
- {case 0:var _as2_=0;break;
- case 1:var _as2_=0;break;
- case 2:var _as2_=0;break;
- default:var _as2_=1}
- if(_as2_)
- var _as3_=_as2_;
- else
- {switch(infos[6][0])
- {case 0:var _as4_=1;break;
- case 1:var _as4_=0;break;
- case 2:var _as4_=0;break;
- default:var _as4_=0}
- var _as3_=_as4_}}
- else
- var _as3_=_as1_;
- var _as0_=_as3_;
- break;
- case 3:var _as0_=0;break;
- default:var _as0_=0}
- var _asY_=_as0_}
- return caml_call2(Runtime_ocaml_Runtime[29],_UT_,_asY_)}
- var
- _asG_=
- [0,
- function(param)
- {function _asH_(param){return 1}
- function _asI_(param)
- {switch(informations_calcul[0])
- {case 0:var _asS_=0;break;
- case 1:var _asS_=0;break;
- default:
- var infos=informations_calcul[1],_asT_=menage[2][3];
- switch(_asT_[0])
- {case 0:var _asU_=0;break;
- case 1:var _asU_=0;break;
- case 2:
- var
- proprietaire=_asT_[1],
- _asV_=0 === proprietaire[1][3][0]?1:0;
- if(_asV_)
- {switch(infos[6][0])
- {case 0:var _asW_=0;break;
- case 1:var _asW_=1;break;
- case 2:var _asW_=0;break;
- default:var _asW_=0}
- var _asX_=_asW_}
- else
- var _asX_=_asV_;
- var _asU_=_asX_;
- break;
- case 3:var _asU_=0;break;
- default:var _asU_=0}
- var _asS_=_asU_}
- return caml_call2(Runtime_ocaml_Runtime[29],_UU_,_asS_)}
- var
- _asJ_=
- [0,
- function(param)
- {function _asK_(param){return 1}
- function _asL_(param)
- {switch(informations_calcul[0])
- {case 0:var _asM_=0;break;
- case 1:var _asM_=0;break;
- default:
- var infos=informations_calcul[1],_asN_=menage[2][3];
- switch(_asN_[0])
- {case 0:var _asO_=0;break;
- case 1:var _asO_=0;break;
- case 2:
- var
- proprietaire=_asN_[1],
- _asP_=0 === proprietaire[1][3][0]?1:0;
- if(_asP_)
- {switch(infos[6][0])
- {case 0:var _asQ_=0;break;
- case 1:var _asQ_=0;break;
- case 2:var _asQ_=1;break;
- default:var _asQ_=0}
- var _asR_=_asQ_}
- else
- var _asR_=_asP_;
- var _asO_=_asR_;
- break;
- case 3:var _asO_=0;break;
- default:var _asO_=0}
- var _asM_=_asO_}
- return caml_call2(Runtime_ocaml_Runtime[29],_UV_,_asM_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_UW_,[0],_asL_,_asK_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_UX_,_asJ_,_asI_,_asH_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_UY_,_asG_,_asF_,_asE_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_UZ_,_asD_,_asC_,_asB_)}],
- _aqN_=caml_call4(Runtime_ocaml_Runtime[62],_U0_,_aqM_,_aqL_,_aqK_)}
- catch(_asA_)
- {_asA_ = caml_wrap_exception(_asA_);
- if(_asA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_UR_];
- throw _asA_}
- var
- condition_logement=
- caml_call3
- (Runtime_ocaml_Runtime[28],_U1_,Runtime_ocaml_Runtime[12],_aqN_);
- try
- {var
- _aqO_=function(param){return eligibilite_commune_dot_coeffi},
- _aqP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U3_,1)},
- _aqQ_=caml_call4(Runtime_ocaml_Runtime[62],_U4_,[0],_aqP_,_aqO_)}
- catch(_asz_)
- {_asz_ = caml_wrap_exception(_asz_);
- if(_asz_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_U2_];
- throw _asz_}
- var
- _aqR_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]),
- coefficents_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],_U5_,_aqR_,_aqQ_);
- try
- {var
- _aqS_=function(param){return eligibilite_commune_dot_nombre},
- _aqT_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U7_,1)},
- _aqU_=caml_call4(Runtime_ocaml_Runtime[62],_U8_,[0],_aqT_,_aqS_)}
- catch(_asy_)
- {_asy_ = caml_wrap_exception(_asy_);
- if(_asy_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_U6_];
- throw _asy_}
- var
- nombre_personnes_a_charge_pris=
- caml_call3
- (Runtime_ocaml_Runtime[28],_U9_,Runtime_ocaml_Runtime[14],_aqU_);
- try
- {var
- _aqV_=
- function(param){return eligibilite_commune_dot_eligib?_U$_:_Va_},
- _aqW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vb_,1)},
- _aqX_=caml_call4(Runtime_ocaml_Runtime[62],_Vc_,[0],_aqW_,_aqV_)}
- catch(_asx_)
- {_asx_ = caml_wrap_exception(_asx_);
- if(_asx_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_U__];
- throw _asx_}
- var
- eligibilite_dispositions_commu=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Vd_,embed_eligibilite_allocation_l,_aqX_);
- try
- {var
- _aqY_=function(param){return 0},
- _aqZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vf_,1)},
- _aq0_=
- [0,
- function(param)
- {function _arf_(param){return 1}
- function _arg_(param)
- {var _asq_=menage[1],_asr_=0;
- function _ass_(acc,prestation)
- {if(acc)
- var acc$0=acc;
- else
- {var _asu_=caml_equal(prestation,_Vg_);
- if(_asu_)
- var acc$0=_asu_;
- else
- {var _asv_=caml_equal(prestation,_Vh_);
- if(_asv_)
- var acc$0=_asv_;
- else
- var
- _asw_=caml_equal(prestation,_Vi_),
- acc$0=_asw_ || caml_equal(prestation,_Vj_)}}
- return acc$0}
- var _ast_=caml_call3(Stdlib_Array[17],_ass_,_asr_,_asq_);
- return caml_call2(Runtime_ocaml_Runtime[29],_Vk_,_ast_)}
- var
- _arh_=
- [0,
- function(param)
- {function _ari_(param){return 1}
- function _arj_(param)
- {var
- _asd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$262),
- _ase_=menage[3],
- _asf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$386);
- function _asg_(acc,personne_a_charge)
- {if(0 === personne_a_charge[0])
- {var
- enfant=personne_a_charge[1],
- _asi_=enfant[2],
- _asj_=enfant[3];
- switch(enfant[7][0])
- {case 0:var _ask_=_Vl_;break;
- case 1:var _ask_=_Vq_;break;
- default:var _ask_=_Vr_}
- var
- _asl_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Vm_,
- embed_enfant_prestations_famil,
- [0,
- enfant[1],
- enfant[6],
- enfant[5],
- enfant[4],
- enfant[8],
- _ask_,
- _asj_,
- _asi_]),
- _asm_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Vn_,
- prestations_familiales_dot_dro),
- _asl_),
- _asn_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Vo_,
- Runtime_ocaml_Runtime[12],
- _asm_),
- _aso_=caml_call2(Runtime_ocaml_Runtime[27],_Vp_,_asn_)}
- else
- var _aso_=0;
- if(_aso_)
- {var _asp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$263);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_asp_)}
- return acc}
- var
- _ash_=
- caml_equal
- (caml_call3(Stdlib_Array[17],_asg_,_asf_,_ase_),_asd_);
- return caml_call2(Runtime_ocaml_Runtime[29],_Vs_,_ash_)}
- var
- _ark_=
- [0,
- function(param)
- {function _arl_(param){return 1}
- function _arm_(param)
- {var
- _arY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$387),
- _arZ_=menage[3],
- _ar0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$388);
- function _ar1_(acc,personne_a_charge)
- {if(0 === personne_a_charge[0])
- {var
- enfant=personne_a_charge[1],
- _ar7_=enfant[2],
- _ar8_=enfant[3];
- switch(enfant[7][0])
- {case 0:var _ar9_=_Vt_;break;
- case 1:var _ar9_=_Vy_;break;
- default:var _ar9_=_Vz_}
- var
- _ar__=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Vu_,
- embed_enfant_prestations_famil,
- [0,
- enfant[1],
- enfant[6],
- enfant[5],
- enfant[4],
- enfant[8],
- _ar9_,
- _ar8_,
- _ar7_]),
- _ar$_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Vv_,
- prestations_familiales_dot_dro),
- _ar__),
- _asa_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Vw_,
- Runtime_ocaml_Runtime[12],
- _ar$_),
- _asb_=1 - caml_call2(Runtime_ocaml_Runtime[27],_Vx_,_asa_)}
- else
- var _asb_=0;
- if(_asb_)
- {var _asc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$264);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_asc_)}
- return acc}
- var
- _ar2_=
- caml_equal
- (caml_call3(Stdlib_Array[17],_ar1_,_ar0_,_arZ_),_arY_);
- if(_ar2_)
- {var _ar3_=menage[5];
- switch(_ar3_[0])
- {case 0:var _ar4_=0;break;
- case 1:
- var
- date_mariage=_ar3_[1],
- _ar6_=
- caml_call2
- (Runtime_ocaml_Runtime[95],date_mariage,duree_l841_1_3),
- _ar4_=
- caml_call2(Runtime_ocaml_Runtime[99],date_courante,_ar6_);
- break;
- case 2:var _ar4_=0;break;
- case 3:var _ar4_=0;break;
- case 4:var _ar4_=0;break;
- default:var _ar4_=0}
- var _ar5_=_ar4_}
- else
- var _ar5_=_ar2_;
- return caml_call2(Runtime_ocaml_Runtime[29],_VA_,_ar5_)}
- var
- _arn_=
- [0,
- function(param)
- {function _aro_(param)
- {function _arw_(param){throw Runtime_ocaml_Runtime[2]}
- function _arx_(param){return 0}
- var
- _ary_=
- [0,
- function(param)
- {function _arz_(param){return 1}
- function _arA_(param)
- {var
- _arO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$265),
- _arP_=menage[3],
- _arQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$389);
- function _arR_(acc,personne_a_charge)
- {var
- _arU_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _VB_,
- embed_personne_a_charge,
- personne_a_charge),
- _arV_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _VC_,
- eligibilite_commune_dot_condit$1),
- _arU_),
- _arW_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _VD_,
- Runtime_ocaml_Runtime[12],
- _arV_);
- if(caml_call2(Runtime_ocaml_Runtime[27],_VE_,_arW_))
- {var _arX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$266);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_arX_)}
- return acc}
- var
- _arS_=caml_call3(Stdlib_Array[17],_arR_,_arQ_,_arP_),
- _arT_=caml_call2(Runtime_ocaml_Runtime[81],_arS_,_arO_);
- return caml_call2(Runtime_ocaml_Runtime[29],_VF_,_arT_)}
- var
- _arB_=
- [0,
- function(param)
- {function _arC_(param){return 1}
- function _arD_(param)
- {var
- _arE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$267),
- _arF_=menage[3],
- _arG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$390);
- function _arH_(acc,personne_a_charge)
- {if(0 === personne_a_charge[0])
- var _arK_=0;
- else
- var
- parent=personne_a_charge[1],
- _arM_=parent[3],
- _arN_=_arM_?parent[5]:_arM_,
- _arK_=_arN_;
- if(_arK_)
- {var _arL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$268);
- return caml_call2(Runtime_ocaml_Runtime[75],acc,_arL_)}
- return acc}
- var
- _arI_=caml_call3(Stdlib_Array[17],_arH_,_arG_,_arF_),
- _arJ_=caml_call2(Runtime_ocaml_Runtime[81],_arI_,_arE_);
- return caml_call2(Runtime_ocaml_Runtime[29],_VG_,_arJ_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VH_,[0],_arD_,_arC_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VI_,_arB_,_arA_,_arz_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VJ_,_ary_,_arx_,_arw_)}
- function _arp_(param){return 1}
- var
- _arq_=
- [0,
- function(param)
- {function _arr_(param){return 1}
- function _ars_(param)
- {switch(menage[5][0])
- {case 0:
- var
- _art_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391),
- _aru_=
- caml_equal
- (caml_call1(Runtime_ocaml_Runtime[113],menage[3]),_art_),
- _arv_=_aru_?menage[8]:_aru_;
- break;
- case 1:var _arv_=0;break;
- case 2:var _arv_=0;break;
- case 3:var _arv_=0;break;
- case 4:var _arv_=0;break;
- default:var _arv_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_VK_,_arv_)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VL_,[0],_ars_,_arr_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VM_,_arq_,_arp_,_aro_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VN_,_arn_,_arm_,_arl_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VO_,_ark_,_arj_,_ari_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_VP_,_arh_,_arg_,_arf_)}],
- _aq1_=caml_call4(Runtime_ocaml_Runtime[62],_VQ_,_aq0_,_aqZ_,_aqY_)}
- catch(_are_)
- {_are_ = caml_wrap_exception(_are_);
- if(_are_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ve_];
- throw _are_}
- var
- eligibilite_allocation_logemen$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_VR_,Runtime_ocaml_Runtime[12],_aq1_);
- try
- {var
- _aq2_=
- function(param)
- {if
- (!
- caml_equal(eligibilite_dispositions_commu,_VT_)
- &&
- !
- beneficie_aide_personnalisee_l)
- return eligibilite_allocation_logemen$1
- ?_VV_
- :eligibilite_allocation_logemen$0?_VW_:_VX_;
- return _VU_},
- _aq3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_VY_,1)},
- _aq4_=
- [0,
- function(param)
- {function _aq$_(param){return _VZ_}
- function _ara_(param)
- {var _arb_=menage[2][3];
- switch(_arb_[0])
- {case 0:var _arc_=0;break;
- case 1:var _arc_=0;break;
- case 2:
- var
- proprietaire=_arb_[1],
- _ard_=caml_call3(Runtime_ocaml_Runtime[56],2017,12,31),
- _arc_=
- caml_call2
- (Runtime_ocaml_Runtime[100],proprietaire[1][2],_ard_);
- break;
- case 3:var _arc_=0;break;
- default:var _arc_=0}
- return caml_call2(Runtime_ocaml_Runtime[29],_V0_,_arc_)}
- return caml_call4(Runtime_ocaml_Runtime[62],_V1_,[0],_ara_,_aq$_)}],
- _aq5_=caml_call4(Runtime_ocaml_Runtime[62],_V2_,_aq4_,_aq3_,_aq2_)}
- catch(_aq__)
- {_aq__ = caml_wrap_exception(_aq__);
- if(_aq__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_VS_];
- throw _aq__}
- var
- eligibilite_l841_2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_V3_,embed_eligibilite_allocation_l,_aq5_);
- try
- {var
- _aq6_=
- function(param){return condition_logement?eligibilite_l841_2:_V5_},
- _aq7_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_V6_,1)},
- _aq8_=caml_call4(Runtime_ocaml_Runtime[62],_V7_,[0],_aq7_,_aq6_)}
- catch(_aq9_)
- {_aq9_ = caml_wrap_exception(_aq9_);
- if(_aq9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_V4_];
- throw _aq9_}
- var
- eligibilite_avec_condition_log=
- caml_call3
- (Runtime_ocaml_Runtime[28],_V8_,embed_eligibilite_allocation_l,_aq8_);
- return [0,
- eligibilite_avec_condition_log,
- nombre_personnes_a_charge_pris,
- coefficents_enfants_garde_alte]}
- function calcul_allocation_logement(calcul_allocation_logement_in)
- {var
- mode_occupation=calcul_allocation_logement_in[1],
- informations_calcul=calcul_allocation_logement_in[2],
- ressources_menage_sans_arrondi=calcul_allocation_logement_in[3],
- situation_familiale=calcul_allocation_logement_in[4],
- nombre_personnes_a_charge=calcul_allocation_logement_in[5],
- zone=calcul_allocation_logement_in[6],
- date_courante=calcul_allocation_logement_in[7],
- type_aide=calcul_allocation_logement_in[8];
- try
- {var
- _anq_=
- function(param)
- {switch(mode_occupation[0])
- {case 0:return _V__;
- case 1:return _V$_;
- case 2:return _Wa_;
- case 3:return _Wb_;
- default:return _Wc_}},
- _anr_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wd_,1)},
- _ans_=caml_call4(Runtime_ocaml_Runtime[62],_We_,[0],_anr_,_anq_)}
- catch(_aqi_)
- {_aqi_ = caml_wrap_exception(_aqi_);
- if(_aqi_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_V9_];
- throw _aqi_}
- var
- categorie_calcul_apl=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Wf_,embed_categorie_calcul_a_p_l,_ans_);
- try
- {var
- _ant_=
- function(param)
- {var
- _aqc_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11),
- _aqd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$1),
- _aqe_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999$1),
- _aqf_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- ressources_menage_sans_arrondi,
- _aqe_),
- _aqg_=caml_call2(Runtime_ocaml_Runtime[65],_aqf_,_aqd_),
- _aqh_=caml_call1(Runtime_ocaml_Runtime[38],_aqg_);
- return caml_call2(Runtime_ocaml_Runtime[65],_aqh_,_aqc_)},
- _anu_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wh_,1)},
- _anv_=caml_call4(Runtime_ocaml_Runtime[62],_Wi_,[0],_anu_,_ant_)}
- catch(_aqb_)
- {_aqb_ = caml_wrap_exception(_aqb_);
- if(_aqb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Wg_];
- throw _aqb_}
- var
- ressources_menage_avec_arrondi=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Wj_,Runtime_ocaml_Runtime[13],_anv_);
- try
- {var
- _anw_=
- function(param)
- {switch(situation_familiale[0])
- {case 0:return _Wl_;
- case 1:return _Wm_;
- case 2:return _Wn_;
- case 3:return _Wo_;
- case 4:return _Wp_;
- default:return _Wq_}},
- _anx_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wr_,1)},
- _any_=caml_call4(Runtime_ocaml_Runtime[62],_Ws_,[0],_anx_,_anw_)}
- catch(_aqa_)
- {_aqa_ = caml_wrap_exception(_aqa_);
- if(_aqa_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Wk_];
- throw _aqa_}
- var
- situation_familiale_calcul_apl=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Wt_,embed_situation_familiale_calc,_any_);
- try
- {var
- _anz_=function(param){return ressources_menage_avec_arrondi},
- _anA_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wv_,1)},
- _anB_=caml_call4(Runtime_ocaml_Runtime[62],_Ww_,[0],_anA_,_anz_),
- accession_propriete_dot_ressou=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Wx_,Runtime_ocaml_Runtime[13],_anB_)}
- catch(_ap$_)
- {_ap$_ = caml_wrap_exception(_ap$_);
- if(_ap$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Wu_];
- throw _ap$_}
- try
- {var
- _anC_=function(param){return nombre_personnes_a_charge},
- _anD_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Wz_,1)},
- _anE_=caml_call4(Runtime_ocaml_Runtime[62],_WA_,[0],_anD_,_anC_),
- accession_propriete_dot_nombre=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WB_,Runtime_ocaml_Runtime[14],_anE_)}
- catch(_ap__)
- {_ap__ = caml_wrap_exception(_ap__);
- if(_ap__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Wy_];
- throw _ap__}
- try
- {var
- _anF_=function(param){return situation_familiale_calcul_apl},
- _anG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WD_,1)},
- _anH_=caml_call4(Runtime_ocaml_Runtime[62],_WE_,[0],_anG_,_anF_),
- accession_propriete_dot_situat=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _WF_,
- embed_situation_familiale_calc,
- _anH_)}
- catch(_ap9_)
- {_ap9_ = caml_wrap_exception(_ap9_);
- if(_ap9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WC_];
- throw _ap9_}
- try
- {var
- _anI_=function(param){return zone},
- _anJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WH_,1)},
- _anK_=caml_call4(Runtime_ocaml_Runtime[62],_WI_,[0],_anJ_,_anI_),
- accession_propriete_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WJ_,embed_zone_d_habitation,_anK_)}
- catch(_ap8_)
- {_ap8_ = caml_wrap_exception(_ap8_);
- if(_ap8_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WG_];
- throw _ap8_}
- try
- {var
- _anL_=function(param){return date_courante},
- _anM_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WL_,1)},
- _anN_=caml_call4(Runtime_ocaml_Runtime[62],_WM_,[0],_anM_,_anL_),
- accession_propriete_dot_date_c=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WN_,Runtime_ocaml_Runtime[16],_anN_)}
- catch(_ap7_)
- {_ap7_ = caml_wrap_exception(_ap7_);
- if(_ap7_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WK_];
- throw _ap7_}
- try
- {var
- _anO_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$392);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$393);
- default:var infos=informations_calcul[1];return infos[1]}},
- _anP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WP_,1)},
- _anQ_=caml_call4(Runtime_ocaml_Runtime[62],_WQ_,[0],_anP_,_anO_),
- accession_propriete_dot_mensua=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WR_,Runtime_ocaml_Runtime[13],_anQ_)}
- catch(_ap6_)
- {_ap6_ = caml_wrap_exception(_ap6_);
- if(_ap6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WO_];
- throw _ap6_}
- try
- {var
- _anR_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[9]}},
- _anS_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WT_,1)},
- _anT_=caml_call4(Runtime_ocaml_Runtime[62],_WU_,[0],_anS_,_anR_),
- accession_propriete_dot_situat$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WV_,Runtime_ocaml_Runtime[12],_anT_)}
- catch(_ap5_)
- {_ap5_ = caml_wrap_exception(_ap5_);
- if(_ap5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WS_];
- throw _ap5_}
- try
- {var
- _anU_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- default:var infos=informations_calcul[1];return infos[3]}},
- _anV_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_WX_,1)},
- _anW_=caml_call4(Runtime_ocaml_Runtime[62],_WY_,[0],_anV_,_anU_),
- accession_propriete_dot_date_s=
- caml_call3
- (Runtime_ocaml_Runtime[28],_WZ_,Runtime_ocaml_Runtime[16],_anW_)}
- catch(_ap4_)
- {_ap4_ = caml_wrap_exception(_ap4_);
- if(_ap4_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_WW_];
- throw _ap4_}
- try
- {var
- _anX_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return _W1_;
- case 1:return _W2_;
- default:var infos=informations_calcul[1];return infos[6]}},
- _anY_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W3_,1)},
- _anZ_=caml_call4(Runtime_ocaml_Runtime[62],_W4_,[0],_anY_,_anX_),
- accession_propriete_dot_type_t=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _W5_,
- embed_type_travaux_logement_r8,
- _anZ_)}
- catch(_ap3_)
- {_ap3_ = caml_wrap_exception(_ap3_);
- if(_ap3_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_W0_];
- throw _ap3_}
- try
- {var
- _an0_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[7]}},
- _an1_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W7_,1)},
- _an2_=caml_call4(Runtime_ocaml_Runtime[62],_W8_,[0],_an1_,_an0_),
- accession_propriete_dot_local_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_W9_,Runtime_ocaml_Runtime[12],_an2_)}
- catch(_ap2_)
- {_ap2_ = caml_wrap_exception(_ap2_);
- if(_ap2_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_W6_];
- throw _ap2_}
- try
- {var
- _an3_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- case 1:return caml_call3(Runtime_ocaml_Runtime[56],2010,1,1);
- default:var infos=informations_calcul[1];return infos[4]}},
- _an4_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_W$_,1)},
- _an5_=caml_call4(Runtime_ocaml_Runtime[62],_Xa_,[0],_an4_,_an3_),
- accession_propriete_dot_date_e=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xb_,Runtime_ocaml_Runtime[16],_an5_)}
- catch(_ap1_)
- {_ap1_ = caml_wrap_exception(_ap1_);
- if(_ap1_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_W__];
- throw _ap1_}
- try
- {var
- _an6_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$394);
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$395);
- default:var infos=informations_calcul[1];return infos[2]}},
- _an7_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xd_,1)},
- _an8_=caml_call4(Runtime_ocaml_Runtime[62],_Xe_,[0],_an7_,_an6_),
- accession_propriete_dot_charge=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xf_,Runtime_ocaml_Runtime[13],_an8_)}
- catch(_ap0_)
- {_ap0_ = caml_wrap_exception(_ap0_);
- if(_ap0_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xc_];
- throw _ap0_}
- try
- {var
- _an9_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return 0;
- case 1:return 0;
- default:var infos=informations_calcul[1];return infos[8]}},
- _an__=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xh_,1)},
- _an$_=caml_call4(Runtime_ocaml_Runtime[62],_Xi_,[0],_an__,_an9_),
- accession_propriete_dot_coprop=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xj_,Runtime_ocaml_Runtime[12],_an$_)}
- catch(_apZ_)
- {_apZ_ = caml_wrap_exception(_apZ_);
- if(_apZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xg_];
- throw _apZ_}
- var
- _aoa_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Xk_,calcul_allocation_logement_acc),
- [0,
- accession_propriete_dot_ressou,
- accession_propriete_dot_nombre,
- accession_propriete_dot_situat,
- accession_propriete_dot_zone,
- accession_propriete_dot_date_c,
- accession_propriete_dot_mensua,
- accession_propriete_dot_situat$0,
- accession_propriete_dot_date_s,
- accession_propriete_dot_type_t,
- accession_propriete_dot_local_,
- accession_propriete_dot_date_e,
- accession_propriete_dot_charge,
- accession_propriete_dot_coprop]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Xl_,_aoa_),
- accession_propriete_dot_aide_f=result[1],
- accession_propriete_dot_traite=result[2];
- try
- {var
- _aob_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$396);
- case 1:var infos=informations_calcul[1];return infos[1];
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$397)}},
- _aoc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xn_,1)},
- _aod_=caml_call4(Runtime_ocaml_Runtime[62],_Xo_,[0],_aoc_,_aob_),
- logement_foyer_dot_redevance=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xp_,Runtime_ocaml_Runtime[13],_aod_)}
- catch(_apY_)
- {_apY_ = caml_wrap_exception(_apY_);
- if(_apY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xm_];
- throw _apY_}
- try
- {var
- _aoe_=function(param){return mode_occupation},
- _aof_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xr_,1)},
- _aog_=caml_call4(Runtime_ocaml_Runtime[62],_Xs_,[0],_aof_,_aoe_),
- logement_foyer_dot_mode_occupa=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xt_,embed_mode_occupation,_aog_)}
- catch(_apX_)
- {_apX_ = caml_wrap_exception(_apX_);
- if(_apX_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xq_];
- throw _apX_}
- try
- {var
- _aoh_=function(param){return ressources_menage_avec_arrondi},
- _aoi_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xv_,1)},
- _aoj_=caml_call4(Runtime_ocaml_Runtime[62],_Xw_,[0],_aoi_,_aoh_),
- logement_foyer_dot_ressources_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Xx_,Runtime_ocaml_Runtime[13],_aoj_)}
- catch(_apW_)
- {_apW_ = caml_wrap_exception(_apW_);
- if(_apW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xu_];
- throw _apW_}
- try
- {var
- _aok_=function(param){return nombre_personnes_a_charge},
- _aol_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Xz_,1)},
- _aom_=caml_call4(Runtime_ocaml_Runtime[62],_XA_,[0],_aol_,_aok_),
- logement_foyer_dot_nombre_pers=
- caml_call3
- (Runtime_ocaml_Runtime[28],_XB_,Runtime_ocaml_Runtime[14],_aom_)}
- catch(_apV_)
- {_apV_ = caml_wrap_exception(_apV_);
- if(_apV_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Xy_];
- throw _apV_}
- try
- {var
- _aon_=function(param){return situation_familiale_calcul_apl},
- _aoo_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XD_,1)},
- _aop_=caml_call4(Runtime_ocaml_Runtime[62],_XE_,[0],_aoo_,_aon_),
- logement_foyer_dot_situation_f=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _XF_,
- embed_situation_familiale_calc,
- _aop_)}
- catch(_apU_)
- {_apU_ = caml_wrap_exception(_apU_);
- if(_apU_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_XC_];
- throw _apU_}
- try
- {var
- _aoq_=function(param){return zone},
- _aor_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XH_,1)},
- _aos_=caml_call4(Runtime_ocaml_Runtime[62],_XI_,[0],_aor_,_aoq_),
- logement_foyer_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_XJ_,embed_zone_d_habitation,_aos_)}
- catch(_apT_)
- {_apT_ = caml_wrap_exception(_apT_);
- if(_apT_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_XG_];
- throw _apT_}
- try
- {var
- _aot_=function(param){return date_courante},
- _aou_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XL_,1)},
- _aov_=caml_call4(Runtime_ocaml_Runtime[62],_XM_,[0],_aou_,_aot_),
- logement_foyer_dot_date_couran=
- caml_call3
- (Runtime_ocaml_Runtime[28],_XN_,Runtime_ocaml_Runtime[16],_aov_)}
- catch(_apS_)
- {_apS_ = caml_wrap_exception(_apS_);
- if(_apS_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_XK_];
- throw _apS_}
- try
- {var
- _aow_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:return _XP_;
- case 1:var infos=informations_calcul[1];return infos[2];
- default:return _XQ_}},
- _aox_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XR_,1)},
- _aoy_=caml_call4(Runtime_ocaml_Runtime[62],_XS_,[0],_aox_,_aow_),
- logement_foyer_dot_categorie_e=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _XT_,
- embed_categorie_equivalence_lo,
- _aoy_)}
- catch(_apR_)
- {_apR_ = caml_wrap_exception(_apR_);
- if(_apR_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_XO_];
- throw _apR_}
- var
- _aoz_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_XU_,calcul_allocation_logement_foy),
- [0,
- logement_foyer_dot_redevance,
- logement_foyer_dot_mode_occupa,
- logement_foyer_dot_ressources_,
- logement_foyer_dot_nombre_pers,
- logement_foyer_dot_situation_f,
- logement_foyer_dot_zone,
- logement_foyer_dot_date_couran,
- logement_foyer_dot_categorie_e]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_XV_,_aoz_),
- logement_foyer_dot_aide_finale=result$0[5],
- logement_foyer_dot_traitement_=result$0[6];
- try
- {var
- _aoA_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[1];
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$398);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$399)}},
- _aoB_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_XX_,1)},
- _aoC_=caml_call4(Runtime_ocaml_Runtime[62],_XY_,[0],_aoB_,_aoA_),
- locatif_dot_loyer_principal=
- caml_call3
- (Runtime_ocaml_Runtime[28],_XZ_,Runtime_ocaml_Runtime[13],_aoC_)}
- catch(_apQ_)
- {_apQ_ = caml_wrap_exception(_apQ_);
- if(_apQ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_XW_];
- throw _apQ_}
- try
- {var
- _aoD_=function(param){return ressources_menage_avec_arrondi},
- _aoE_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X1_,1)},
- _aoF_=caml_call4(Runtime_ocaml_Runtime[62],_X2_,[0],_aoE_,_aoD_),
- locatif_dot_ressources_menage_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_X3_,Runtime_ocaml_Runtime[13],_aoF_)}
- catch(_apP_)
- {_apP_ = caml_wrap_exception(_apP_);
- if(_apP_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_X0_];
- throw _apP_}
- try
- {var
- _aoG_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[2];
- case 1:return 0;
- default:return 0}},
- _aoH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X5_,1)},
- _aoI_=caml_call4(Runtime_ocaml_Runtime[62],_X6_,[0],_aoH_,_aoG_),
- locatif_dot_beneficiaire_aide_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_X7_,Runtime_ocaml_Runtime[12],_aoI_)}
- catch(_apO_)
- {_apO_ = caml_wrap_exception(_apO_);
- if(_apO_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_X4_];
- throw _apO_}
- try
- {var
- _aoJ_=function(param){return date_courante},
- _aoK_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_X9_,1)},
- _aoL_=caml_call4(Runtime_ocaml_Runtime[62],_X__,[0],_aoK_,_aoJ_),
- locatif_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_X$_,Runtime_ocaml_Runtime[16],_aoL_)}
- catch(_apN_)
- {_apN_ = caml_wrap_exception(_apN_);
- if(_apN_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_X8_];
- throw _apN_}
- try
- {var
- _aoM_=function(param){return nombre_personnes_a_charge},
- _aoN_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yb_,1)},
- _aoO_=caml_call4(Runtime_ocaml_Runtime[62],_Yc_,[0],_aoN_,_aoM_),
- locatif_dot_nombre_personnes_a=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Yd_,Runtime_ocaml_Runtime[14],_aoO_)}
- catch(_apM_)
- {_apM_ = caml_wrap_exception(_apM_);
- if(_apM_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ya_];
- throw _apM_}
- try
- {var
- _aoP_=function(param){return situation_familiale_calcul_apl},
- _aoQ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yf_,1)},
- _aoR_=caml_call4(Runtime_ocaml_Runtime[62],_Yg_,[0],_aoQ_,_aoP_),
- locatif_dot_situation_familial=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Yh_,
- embed_situation_familiale_calc,
- _aoR_)}
- catch(_apL_)
- {_apL_ = caml_wrap_exception(_apL_);
- if(_apL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ye_];
- throw _apL_}
- try
- {var
- _aoS_=function(param){return zone},
- _aoT_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yj_,1)},
- _aoU_=caml_call4(Runtime_ocaml_Runtime[62],_Yk_,[0],_aoT_,_aoS_),
- locatif_dot_zone=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Yl_,embed_zone_d_habitation,_aoU_)}
- catch(_apK_)
- {_apK_ = caml_wrap_exception(_apK_);
- if(_apK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Yi_];
- throw _apK_}
- try
- {var
- _aoV_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[3];
- case 1:return 0;
- default:return 0}},
- _aoW_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yn_,1)},
- _aoX_=caml_call4(Runtime_ocaml_Runtime[62],_Yo_,[0],_aoW_,_aoV_),
- locatif_dot_logement_est_chamb=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Yp_,Runtime_ocaml_Runtime[12],_aoX_)}
- catch(_apJ_)
- {_apJ_ = caml_wrap_exception(_apJ_);
- if(_apJ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Ym_];
- throw _apJ_}
- try
- {var
- _aoY_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[5];
- case 1:return 0;
- default:return 0}},
- _aoZ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yr_,1)},
- _ao0_=caml_call4(Runtime_ocaml_Runtime[62],_Ys_,[0],_aoZ_,_aoY_),
- locatif_dot_agees_ou_handicap_=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Yt_,Runtime_ocaml_Runtime[12],_ao0_)}
- catch(_apI_)
- {_apI_ = caml_wrap_exception(_apI_);
- if(_apI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Yq_];
- throw _apI_}
- try
- {var
- _ao1_=function(param){return type_aide},
- _ao2_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yv_,1)},
- _ao3_=caml_call4(Runtime_ocaml_Runtime[62],_Yw_,[0],_ao2_,_ao1_),
- locatif_dot_type_aide=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Yx_,
- embed_type_aides_personnelle_l,
- _ao3_)}
- catch(_apH_)
- {_apH_ = caml_wrap_exception(_apH_);
- if(_apH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Yu_];
- throw _apH_}
- try
- {var
- _ao4_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[4];
- case 1:return 0;
- default:return 0}},
- _ao5_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Yz_,1)},
- _ao6_=caml_call4(Runtime_ocaml_Runtime[62],_YA_,[0],_ao5_,_ao4_),
- locatif_dot_colocation=
- caml_call3
- (Runtime_ocaml_Runtime[28],_YB_,Runtime_ocaml_Runtime[12],_ao6_)}
- catch(_apG_)
- {_apG_ = caml_wrap_exception(_apG_);
- if(_apG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Yy_];
- throw _apG_}
- try
- {var
- _ao7_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[6];
- case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$400);
- default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$401)}},
- _ao8_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YD_,1)},
- _ao9_=caml_call4(Runtime_ocaml_Runtime[62],_YE_,[0],_ao8_,_ao7_),
- locatif_dot_reduction_loyer_so=
- caml_call3
- (Runtime_ocaml_Runtime[28],_YF_,Runtime_ocaml_Runtime[13],_ao9_)}
- catch(_apF_)
- {_apF_ = caml_wrap_exception(_apF_);
- if(_apF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_YC_];
- throw _apF_}
- try
- {var
- _ao__=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[7];
- case 1:return 0;
- default:return 0}},
- _ao$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YH_,1)},
- _apa_=caml_call4(Runtime_ocaml_Runtime[62],_YI_,[0],_ao$_,_ao__),
- locatif_dot_logement_meuble_d8=
- caml_call3
- (Runtime_ocaml_Runtime[28],_YJ_,Runtime_ocaml_Runtime[12],_apa_)}
- catch(_apE_)
- {_apE_ = caml_wrap_exception(_apE_);
- if(_apE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_YG_];
- throw _apE_}
- try
- {var
- _apb_=
- function(param)
- {switch(informations_calcul[0])
- {case 0:var infos=informations_calcul[1];return infos[8];
- case 1:return _YL_;
- default:return _YM_}},
- _apc_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_YN_,1)},
- _apd_=caml_call4(Runtime_ocaml_Runtime[62],_YO_,[0],_apc_,_apb_),
- locatif_dot_changement_logemen=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _YP_,
- embed_changement_logement_d842,
- _apd_)}
- catch(_apD_)
- {_apD_ = caml_wrap_exception(_apD_);
- if(_apD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_YK_];
- throw _apD_}
- var
- _ape_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_YQ_,calcul_allocation_logement_loc),
- [0,
- locatif_dot_loyer_principal,
- locatif_dot_ressources_menage_,
- locatif_dot_beneficiaire_aide_,
- locatif_dot_date_courante,
- locatif_dot_nombre_personnes_a,
- locatif_dot_situation_familial,
- locatif_dot_zone,
- locatif_dot_logement_est_chamb,
- locatif_dot_agees_ou_handicap_,
- locatif_dot_type_aide,
- locatif_dot_colocation,
- locatif_dot_reduction_loyer_so,
- locatif_dot_logement_meuble_d8,
- locatif_dot_changement_logemen]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],_YR_,_ape_),
- locatif_dot_aide_finale_formul=result$1[1],
- locatif_dot_traitement_aide_fi=result$1[2];
- function _apf_(param)
- {try
- {var
- _apq_=
- function(param$0)
- {switch(categorie_calcul_apl[0])
- {case 0:
- var
- _apu_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _YT_,
- Runtime_ocaml_Runtime[13],
- param),
- _apv_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _YU_,
- locatif_dot_traitement_aide_fi),
- _apu_),
- _apw_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _YV_,
- Runtime_ocaml_Runtime[13],
- _apv_);
- return caml_call2(Runtime_ocaml_Runtime[27],_YW_,_apw_);
- case 1:
- var
- _apx_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _YX_,
- Runtime_ocaml_Runtime[13],
- param),
- _apy_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _YY_,
- accession_propriete_dot_traite),
- _apx_),
- _apz_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _YZ_,
- Runtime_ocaml_Runtime[13],
- _apy_);
- return caml_call2(Runtime_ocaml_Runtime[27],_Y0_,_apz_);
- default:
- var
- _apA_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Y1_,
- Runtime_ocaml_Runtime[13],
- param),
- _apB_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _Y2_,
- logement_foyer_dot_traitement_),
- _apA_),
- _apC_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Y3_,
- Runtime_ocaml_Runtime[13],
- _apB_);
- return caml_call2(Runtime_ocaml_Runtime[27],_Y4_,_apC_)}},
- _apr_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_Y5_,1)},
- _aps_=caml_call4(Runtime_ocaml_Runtime[62],_Y6_,[0],_apr_,_apq_);
- return _aps_}
- catch(_apt_)
- {_apt_ = caml_wrap_exception(_apt_);
- if(_apt_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_YS_];
- throw _apt_}}
- var
- traitement_aide_finale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Y7_,Runtime_ocaml_Runtime[10],_apf_);
- try
- {var
- _apg_=
- function(param)
- {switch(categorie_calcul_apl[0])
- {case 0:return locatif_dot_aide_finale_formul;
- case 1:return accession_propriete_dot_aide_f;
- default:return logement_foyer_dot_aide_finale}},
- _aph_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Y9_,1)},
- _api_=caml_call4(Runtime_ocaml_Runtime[62],_Y__,[0],_aph_,_apg_)}
- catch(_app_)
- {_app_ = caml_wrap_exception(_app_);
- if(_app_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Y8_];
- throw _app_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Y$_,Runtime_ocaml_Runtime[13],_api_);
- switch(categorie_calcul_apl[0])
- {case 0:var _apj_=0;break;case 1:var _apj_=1;break;default:var _apj_=0}
- if(_apj_)
- switch(informations_calcul[0])
- {case 0:var _apk_=0;break;
- case 1:var _apk_=0;break;
- default:var _apk_=1}
- else
- var _apk_=1;
- if(_apk_)
- {switch(categorie_calcul_apl[0])
- {case 0:var _apl_=0;break;
- case 1:var _apl_=0;break;
- default:var _apl_=1}
- if(_apl_)
- switch(informations_calcul[0])
- {case 0:var _apm_=0;break;
- case 1:var _apm_=1;break;
- default:var _apm_=0}
- else
- var _apm_=1;
- if(_apm_)
- {switch(categorie_calcul_apl[0])
- {case 0:var _apn_=1;break;
- case 1:var _apn_=0;break;
- default:var _apn_=0}
- if(_apn_)
- switch(informations_calcul[0])
- {case 0:var _apo_=1;break;
- case 1:var _apo_=0;break;
- default:var _apo_=0}
- else
- var _apo_=1;
- if(_apo_)return [0,aide_finale_formule,traitement_aide_finale];
- throw [0,Runtime_ocaml_Runtime[3],_Za_]}
- throw [0,Runtime_ocaml_Runtime[3],_Zb_]}
- throw [0,Runtime_ocaml_Runtime[3],_Zc_]}
- function calculette_aides_au_logement(calculette_aides_au_logement_i)
- {var
- menage=calculette_aides_au_logement_i[1],
- demandeur=calculette_aides_au_logement_i[2],
- informations_calcul=calculette_aides_au_logement_i[3],
- date_courante=calculette_aides_au_logement_i[4],
- ressources_menage_prises_en_co=calculette_aides_au_logement_i[5];
- try
- {var
- _akW_=function(param){return date_courante},
- _akX_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ze_,1)},
- _akY_=caml_call4(Runtime_ocaml_Runtime[62],_Zf_,[0],_akX_,_akW_),
- eligibilite_allocation_logemen$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Zg_,Runtime_ocaml_Runtime[16],_akY_)}
- catch(_anp_)
- {_anp_ = caml_wrap_exception(_anp_);
- if(_anp_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zd_];
- throw _anp_}
- try
- {var
- _akZ_=function(param){return menage},
- _ak0_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zi_,1)},
- _ak1_=caml_call4(Runtime_ocaml_Runtime[62],_Zj_,[0],_ak0_,_akZ_),
- eligibilite_allocation_logemen$1=
- caml_call3(Runtime_ocaml_Runtime[28],_Zk_,embed_menage,_ak1_)}
- catch(_ano_)
- {_ano_ = caml_wrap_exception(_ano_);
- if(_ano_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zh_];
- throw _ano_}
- try
- {var
- _ak2_=function(param){return demandeur},
- _ak3_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zm_,1)},
- _ak4_=caml_call4(Runtime_ocaml_Runtime[62],_Zn_,[0],_ak3_,_ak2_),
- eligibilite_allocation_logemen$2=
- caml_call3(Runtime_ocaml_Runtime[28],_Zo_,embed_demandeur,_ak4_)}
- catch(_ann_)
- {_ann_ = caml_wrap_exception(_ann_);
- if(_ann_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zl_];
- throw _ann_}
- try
- {var
- _ak5_=function(param){return 0},
- _ak6_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zq_,1)},
- _ak7_=caml_call4(Runtime_ocaml_Runtime[62],_Zr_,[0],_ak6_,_ak5_),
- eligibilite_allocation_logemen$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Zs_,Runtime_ocaml_Runtime[12],_ak7_)}
- catch(_anm_)
- {_anm_ = caml_wrap_exception(_anm_);
- if(_anm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zp_];
- throw _anm_}
- try
- {var
- _ak8_=function(param){return informations_calcul},
- _ak9_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Zu_,1)},
- _ak__=caml_call4(Runtime_ocaml_Runtime[62],_Zv_,[0],_ak9_,_ak8_),
- eligibilite_allocation_logemen$4=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _Zw_,
- embed_informations_calcul_a_p_$2,
- _ak__)}
- catch(_anl_)
- {_anl_ = caml_wrap_exception(_anl_);
- if(_anl_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zt_];
- throw _anl_}
- var
- _ak$_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_Zx_,eligibilite_allocation_logemen),
- [0,
- eligibilite_allocation_logemen$0,
- eligibilite_allocation_logemen$1,
- eligibilite_allocation_logemen$2,
- eligibilite_allocation_logemen$3,
- eligibilite_allocation_logemen$4]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_Zy_,_ak$_),
- eligibilite_allocation_logemen$5=result[1],
- eligibilite_allocation_logemen$6=result[2];
- try
- {var
- _ala_=function(param){return menage},
- _alb_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZA_,1)},
- _alc_=caml_call4(Runtime_ocaml_Runtime[62],_ZB_,[0],_alb_,_ala_),
- eligibilite_aide_personnalisee$0=
- caml_call3(Runtime_ocaml_Runtime[28],_ZC_,embed_menage,_alc_)}
- catch(_ank_)
- {_ank_ = caml_wrap_exception(_ank_);
- if(_ank_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Zz_];
- throw _ank_}
- try
- {var
- _ald_=function(param){return demandeur},
- _ale_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZE_,1)},
- _alf_=caml_call4(Runtime_ocaml_Runtime[62],_ZF_,[0],_ale_,_ald_),
- eligibilite_aide_personnalisee$1=
- caml_call3(Runtime_ocaml_Runtime[28],_ZG_,embed_demandeur,_alf_)}
- catch(_anj_)
- {_anj_ = caml_wrap_exception(_anj_);
- if(_anj_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ZD_];
- throw _anj_}
- try
- {var
- _alg_=function(param){return date_courante},
- _alh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZI_,1)},
- _ali_=caml_call4(Runtime_ocaml_Runtime[62],_ZJ_,[0],_alh_,_alg_),
- eligibilite_aide_personnalisee$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ZK_,Runtime_ocaml_Runtime[16],_ali_)}
- catch(_ani_)
- {_ani_ = caml_wrap_exception(_ani_);
- if(_ani_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ZH_];
- throw _ani_}
- var
- _alj_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_ZL_,eligibilite_aide_personnalisee),
- [0,
- eligibilite_aide_personnalisee$0,
- eligibilite_aide_personnalisee$1,
- eligibilite_aide_personnalisee$2]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_ZM_,_alj_),
- eligibilite_aide_personnalisee$3=result$0[2],
- eligibilite_aide_personnalisee$4=result$0[3],
- eligibilite_aide_personnalisee$5=result$0[4];
- try
- {var
- _alk_=function(param){return menage[2][3]},
- _all_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZO_,1)},
- _alm_=caml_call4(Runtime_ocaml_Runtime[62],_ZP_,[0],_all_,_alk_),
- calcul_allocation_logement_dot=
- caml_call3
- (Runtime_ocaml_Runtime[28],_ZQ_,embed_mode_occupation,_alm_)}
- catch(_anh_)
- {_anh_ = caml_wrap_exception(_anh_);
- if(_anh_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ZN_];
- throw _anh_}
- try
- {var
- _aln_=function(param){throw Runtime_ocaml_Runtime[2]},
- _alo_=function(param){return 0},
- _alp_=
- [0,
- function(param)
- {function _anc_(param){return informations_calcul}
- function _and_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_ZS_,1)}
- var
- _ane_=
- [0,
- function(param)
- {function _anf_(param){return informations_calcul}
- function _ang_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_ZT_,1)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ZU_,[0],_ang_,_anf_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],_ZV_,_ane_,_and_,_anc_)}],
- _alq_=caml_call4(Runtime_ocaml_Runtime[62],_ZW_,_alp_,_alo_,_aln_),
- calcul_allocation_logement_dot$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _ZX_,
- embed_informations_calcul_a_p_$2,
- _alq_)}
- catch(_anb_)
- {_anb_ = caml_wrap_exception(_anb_);
- if(_anb_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ZR_];
- throw _anb_}
- try
- {var
- _alr_=function(param){return ressources_menage_prises_en_co},
- _als_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ZZ_,1)},
- _alt_=caml_call4(Runtime_ocaml_Runtime[62],_Z0_,[0],_als_,_alr_),
- calcul_allocation_logement_dot$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Z1_,Runtime_ocaml_Runtime[13],_alt_)}
- catch(_ana_)
- {_ana_ = caml_wrap_exception(_ana_);
- if(_ana_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_ZY_];
- throw _ana_}
- try
- {var
- _alu_=function(param){return menage[5]},
- _alv_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z3_,1)},
- _alw_=caml_call4(Runtime_ocaml_Runtime[62],_Z4_,[0],_alv_,_alu_),
- calcul_allocation_logement_dot$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Z5_,embed_situation_familiale,_alw_)}
- catch(_am$_)
- {_am$_ = caml_wrap_exception(_am$_);
- if(_am$_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Z2_];
- throw _am$_}
- try
- {var
- _alx_=function(param){return eligibilite_allocation_logemen$6},
- _aly_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z7_,1)},
- _alz_=caml_call4(Runtime_ocaml_Runtime[62],_Z8_,[0],_aly_,_alx_),
- calcul_allocation_logement_dot$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_Z9_,Runtime_ocaml_Runtime[14],_alz_)}
- catch(_am__)
- {_am__ = caml_wrap_exception(_am__);
- if(_am__ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Z6_];
- throw _am__}
- try
- {var
- _alA_=function(param){return menage[2][11]},
- _alB_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Z$_,1)},
- _alC_=caml_call4(Runtime_ocaml_Runtime[62],__a_,[0],_alB_,_alA_),
- calcul_allocation_logement_dot$4=
- caml_call3
- (Runtime_ocaml_Runtime[28],__b_,embed_zone_d_habitation,_alC_)}
- catch(_am9_)
- {_am9_ = caml_wrap_exception(_am9_);
- if(_am9_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_Z__];
- throw _am9_}
- try
- {var
- _alD_=function(param){return date_courante},
- _alE_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__d_,1)},
- _alF_=caml_call4(Runtime_ocaml_Runtime[62],__e_,[0],_alE_,_alD_),
- calcul_allocation_logement_dot$5=
- caml_call3
- (Runtime_ocaml_Runtime[28],__f_,Runtime_ocaml_Runtime[16],_alF_)}
- catch(_am8_)
- {_am8_ = caml_wrap_exception(_am8_);
- if(_am8_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__c_];
- throw _am8_}
- try
- {var
- _alG_=
- function(param)
- {switch(eligibilite_allocation_logemen$5[0])
- {case 0:return __h_;case 1:return __i_;default:return __j_}},
- _alH_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__k_,1)},
- _alI_=caml_call4(Runtime_ocaml_Runtime[62],__l_,[0],_alH_,_alG_),
- calcul_allocation_logement_dot$6=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- __m_,
- embed_type_aides_personnelle_l,
- _alI_)}
- catch(_am7_)
- {_am7_ = caml_wrap_exception(_am7_);
- if(_am7_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__g_];
- throw _am7_}
- var
- _alJ_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],__n_,calcul_allocation_logement),
- [0,
- calcul_allocation_logement_dot,
- calcul_allocation_logement_dot$0,
- calcul_allocation_logement_dot$1,
- calcul_allocation_logement_dot$2,
- calcul_allocation_logement_dot$3,
- calcul_allocation_logement_dot$4,
- calcul_allocation_logement_dot$5,
- calcul_allocation_logement_dot$6]),
- result$1=caml_call2(Runtime_ocaml_Runtime[27],__o_,_alJ_),
- calcul_allocation_logement_dot$7=result$1[1],
- calcul_allocation_logement_dot$8=result$1[2];
- try
- {var
- _alK_=function(param){return menage[2][3]},
- _alL_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__q_,1)},
- _alM_=caml_call4(Runtime_ocaml_Runtime[62],__r_,[0],_alL_,_alK_),
- calcul_aide_personnalisee_loge=
- caml_call3
- (Runtime_ocaml_Runtime[28],__s_,embed_mode_occupation,_alM_)}
- catch(_am6_)
- {_am6_ = caml_wrap_exception(_am6_);
- if(_am6_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__p_];
- throw _am6_}
- try
- {var
- _alN_=function(param){return __u_},
- _alO_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__v_,1)},
- _alP_=caml_call4(Runtime_ocaml_Runtime[62],__w_,[0],_alO_,_alN_),
- calcul_aide_personnalisee_loge$0=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- __x_,
- embed_type_aides_personnelle_l,
- _alP_)}
- catch(_am5_)
- {_am5_ = caml_wrap_exception(_am5_);
- if(_am5_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__t_];
- throw _am5_}
- try
- {var
- _alQ_=function(param){throw Runtime_ocaml_Runtime[2]},
- _alR_=function(param){return 0},
- _alS_=
- [0,
- function(param)
- {function _am0_(param){return informations_calcul}
- function _am1_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],__z_,1)}
- var
- _am2_=
- [0,
- function(param)
- {function _am3_(param){return informations_calcul}
- function _am4_(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],__A_,1)}
- return caml_call4
- (Runtime_ocaml_Runtime[62],__B_,[0],_am4_,_am3_)}];
- return caml_call4
- (Runtime_ocaml_Runtime[62],__C_,_am2_,_am1_,_am0_)}],
- _alT_=caml_call4(Runtime_ocaml_Runtime[62],__D_,_alS_,_alR_,_alQ_),
- calcul_aide_personnalisee_loge$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- __E_,
- embed_informations_calcul_a_p_$2,
- _alT_)}
- catch(_amZ_)
- {_amZ_ = caml_wrap_exception(_amZ_);
- if(_amZ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__y_];
- throw _amZ_}
- try
- {var
- _alU_=function(param){return ressources_menage_prises_en_co},
- _alV_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__G_,1)},
- _alW_=caml_call4(Runtime_ocaml_Runtime[62],__H_,[0],_alV_,_alU_),
- calcul_aide_personnalisee_loge$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],__I_,Runtime_ocaml_Runtime[13],_alW_)}
- catch(_amY_)
- {_amY_ = caml_wrap_exception(_amY_);
- if(_amY_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__F_];
- throw _amY_}
- try
- {var
- _alX_=function(param){return menage[5]},
- _alY_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__K_,1)},
- _alZ_=caml_call4(Runtime_ocaml_Runtime[62],__L_,[0],_alY_,_alX_),
- calcul_aide_personnalisee_loge$4=
- caml_call3
- (Runtime_ocaml_Runtime[28],__M_,embed_situation_familiale,_alZ_)}
- catch(_amX_)
- {_amX_ = caml_wrap_exception(_amX_);
- if(_amX_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__J_];
- throw _amX_}
- try
- {var
- _al0_=function(param){return eligibilite_aide_personnalisee$4},
- _al1_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__O_,1)},
- _al2_=caml_call4(Runtime_ocaml_Runtime[62],__P_,[0],_al1_,_al0_),
- calcul_aide_personnalisee_loge$5=
- caml_call3
- (Runtime_ocaml_Runtime[28],__Q_,Runtime_ocaml_Runtime[14],_al2_)}
- catch(_amW_)
- {_amW_ = caml_wrap_exception(_amW_);
- if(_amW_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__N_];
- throw _amW_}
- try
- {var
- _al3_=function(param){return menage[2][11]},
- _al4_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__S_,1)},
- _al5_=caml_call4(Runtime_ocaml_Runtime[62],__T_,[0],_al4_,_al3_),
- calcul_aide_personnalisee_loge$6=
- caml_call3
- (Runtime_ocaml_Runtime[28],__U_,embed_zone_d_habitation,_al5_)}
- catch(_amV_)
- {_amV_ = caml_wrap_exception(_amV_);
- if(_amV_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__R_];
- throw _amV_}
- try
- {var
- _al6_=function(param){return date_courante},
- _al7_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__W_,1)},
- _al8_=caml_call4(Runtime_ocaml_Runtime[62],__X_,[0],_al7_,_al6_),
- calcul_aide_personnalisee_loge$7=
- caml_call3
- (Runtime_ocaml_Runtime[28],__Y_,Runtime_ocaml_Runtime[16],_al8_)}
- catch(_amU_)
- {_amU_ = caml_wrap_exception(_amU_);
- if(_amU_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__V_];
- throw _amU_}
- var
- _al9_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],__Z_,calcul_aide_personnalisee_loge$2),
- [0,
- calcul_aide_personnalisee_loge,
- calcul_aide_personnalisee_loge$0,
- calcul_aide_personnalisee_loge$1,
- calcul_aide_personnalisee_loge$3,
- calcul_aide_personnalisee_loge$4,
- calcul_aide_personnalisee_loge$5,
- calcul_aide_personnalisee_loge$6,
- calcul_aide_personnalisee_loge$7]),
- result$2=caml_call2(Runtime_ocaml_Runtime[27],__0_,_al9_),
- calcul_aide_personnalisee_loge$8=result$2[1],
- calcul_aide_personnalisee_loge$9=result$2[2];
- try
- {var
- _al__=function(param){return eligibilite_aide_personnalisee$5},
- _al$_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__2_,1)},
- _ama_=caml_call4(Runtime_ocaml_Runtime[62],__3_,[0],_al$_,_al__)}
- catch(_amT_)
- {_amT_ = caml_wrap_exception(_amT_);
- if(_amT_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__1_];
- throw _amT_}
- var
- _amb_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]),
- coefficents_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],__4_,_amb_,_ama_);
- try
- {var
- _amc_=
- function(param)
- {if(eligibilite_aide_personnalisee$3)
- return eligibilite_aide_personnalisee$3;
- switch(eligibilite_allocation_logemen$5[0])
- {case 0:return 0;case 1:return 1;default:return 1}},
- _amd_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],__6_,1)},
- _ame_=caml_call4(Runtime_ocaml_Runtime[62],__7_,[0],_amd_,_amc_)}
- catch(_amS_)
- {_amS_ = caml_wrap_exception(_amS_);
- if(_amS_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__5_];
- throw _amS_}
- var
- eligibilite=
- caml_call3
- (Runtime_ocaml_Runtime[28],__8_,Runtime_ocaml_Runtime[12],_ame_);
- function _amf_(param)
- {try
- {var
- _amt_=
- function(param$0)
- {if(eligibilite)
- {if(eligibilite_aide_personnalisee$3)
- {switch(eligibilite_allocation_logemen$5[0])
- {case 0:var _amx_=1;break;
- case 1:var _amx_=0;break;
- default:var _amx_=0}
- if(! _amx_)
- {var
- _amE_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$g_,
- Runtime_ocaml_Runtime[13],
- calcul_allocation_logement_dot$7),
- _amF_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$h_,
- calcul_allocation_logement_dot$8),
- _amE_),
- _amG_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$i_,
- Runtime_ocaml_Runtime[13],
- _amF_),
- _amH_=caml_call2(Runtime_ocaml_Runtime[27],_$j_,_amG_),
- _amI_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$k_,
- Runtime_ocaml_Runtime[13],
- calcul_aide_personnalisee_loge$8),
- _amJ_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$l_,
- calcul_aide_personnalisee_loge$9),
- _amI_),
- _amK_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$m_,
- Runtime_ocaml_Runtime[13],
- _amJ_),
- _amL_=caml_call2(Runtime_ocaml_Runtime[27],_$n_,_amK_);
- if(caml_call2(Runtime_ocaml_Runtime[74],_amL_,_amH_))
- {var
- _amM_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$o_,
- Runtime_ocaml_Runtime[13],
- param),
- _amN_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$p_,
- calcul_aide_personnalisee_loge$9),
- _amM_),
- _amO_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$q_,
- Runtime_ocaml_Runtime[13],
- _amN_);
- return caml_call2(Runtime_ocaml_Runtime[27],_$r_,_amO_)}
- var
- _amP_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$s_,
- Runtime_ocaml_Runtime[13],
- param),
- _amQ_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$t_,
- calcul_allocation_logement_dot$8),
- _amP_),
- _amR_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$u_,
- Runtime_ocaml_Runtime[13],
- _amQ_);
- return caml_call2(Runtime_ocaml_Runtime[27],_$v_,_amR_)}}
- if(eligibilite_aide_personnalisee$3)
- {var
- _amy_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- ____,
- Runtime_ocaml_Runtime[13],
- param),
- _amz_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- __$_,
- calcul_aide_personnalisee_loge$9),
- _amy_),
- _amA_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$a_,
- Runtime_ocaml_Runtime[13],
- _amz_);
- return caml_call2(Runtime_ocaml_Runtime[27],_$b_,_amA_)}
- var
- _amB_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$c_,
- Runtime_ocaml_Runtime[13],
- param),
- _amC_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$d_,
- calcul_allocation_logement_dot$8),
- _amB_),
- _amD_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$e_,
- Runtime_ocaml_Runtime[13],
- _amC_);
- return caml_call2(Runtime_ocaml_Runtime[27],_$f_,_amD_)}
- return param},
- _amu_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_$w_,1)},
- _amv_=caml_call4(Runtime_ocaml_Runtime[62],_$x_,[0],_amu_,_amt_);
- return _amv_}
- catch(_amw_)
- {_amw_ = caml_wrap_exception(_amw_);
- if(_amw_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],__9_];
- throw _amw_}}
- var
- traitement_aide_finale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_$y_,Runtime_ocaml_Runtime[10],_amf_);
- try
- {var
- _amg_=
- function(param)
- {if(eligibilite)
- {if(eligibilite_aide_personnalisee$3)
- {switch(eligibilite_allocation_logemen$5[0])
- {case 0:var _amk_=1;break;
- case 1:var _amk_=0;break;
- default:var _amk_=0}
- if(! _amk_)
- {var
- _aml_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$A_,
- Runtime_ocaml_Runtime[13],
- calcul_allocation_logement_dot$7),
- _amm_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$B_,
- calcul_allocation_logement_dot$8),
- _aml_),
- _amn_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$C_,
- Runtime_ocaml_Runtime[13],
- _amm_),
- _amo_=caml_call2(Runtime_ocaml_Runtime[27],_$D_,_amn_),
- _amp_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$E_,
- Runtime_ocaml_Runtime[13],
- calcul_aide_personnalisee_loge$8),
- _amq_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _$F_,
- calcul_aide_personnalisee_loge$9),
- _amp_),
- _amr_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$G_,
- Runtime_ocaml_Runtime[13],
- _amq_),
- _ams_=caml_call2(Runtime_ocaml_Runtime[27],_$H_,_amr_);
- return caml_call2(Runtime_ocaml_Runtime[74],_ams_,_amo_)
- ?calcul_aide_personnalisee_loge$8
- :calcul_allocation_logement_dot$7}}
- return eligibilite_aide_personnalisee$3
- ?calcul_aide_personnalisee_loge$8
- :calcul_allocation_logement_dot$7}
- return caml_call1(Runtime_ocaml_Runtime[31],cst_0$402)},
- _amh_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$I_,1)},
- _ami_=caml_call4(Runtime_ocaml_Runtime[62],_$J_,[0],_amh_,_amg_)}
- catch(_amj_)
- {_amj_ = caml_wrap_exception(_amj_);
- if(_amj_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$z_];
- throw _amj_}
- var
- aide_finale_formule=
- caml_call3
- (Runtime_ocaml_Runtime[28],_$K_,Runtime_ocaml_Runtime[13],_ami_);
- return [0,
- eligibilite,
- aide_finale_formule,
- traitement_aide_finale,
- coefficents_enfants_garde_alte]}
- function calculette_aides_au_logement_g(calculette_aides_au_logement_g)
- {var
- menage=calculette_aides_au_logement_g[1],
- demandeur=calculette_aides_au_logement_g[2],
- informations_calcul=calculette_aides_au_logement_g[3],
- date_courante=calculette_aides_au_logement_g[4],
- ressources_menage_prises_en_co=calculette_aides_au_logement_g[5];
- try
- {var
- _ajF_=
- function(param)
- {var
- _akN_=menage[9],
- _akO_=menage[8],
- _akP_=menage[7],
- _akQ_=menage[6],
- _akR_=menage[5],
- _akS_=menage[4],
- _akT_=menage[3];
- function _akU_(personne_a_charge)
- {if(0 === personne_a_charge[0])
- {var enfant=personne_a_charge[1];return 0 === enfant[9][0]?1:0}
- return 1}
- var _akV_=caml_call2(Runtime_ocaml_Runtime[112],_akU_,_akT_);
- return [0,
- menage[1],
- menage[2],
- _akV_,
- _akS_,
- _akR_,
- _akQ_,
- _akP_,
- _akO_,
- _akN_]},
- _ajG_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$M_,1)},
- _ajH_=caml_call4(Runtime_ocaml_Runtime[62],_$N_,[0],_ajG_,_ajF_)}
- catch(_akM_)
- {_akM_ = caml_wrap_exception(_akM_);
- if(_akM_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$L_];
- throw _akM_}
- var
- menage_sans_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],_$O_,embed_menage,_ajH_);
- try
- {var
- _ajI_=function(param){return menage},
- _ajJ_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$Q_,1)},
- _ajK_=caml_call4(Runtime_ocaml_Runtime[62],_$R_,[0],_ajJ_,_ajI_),
- calculette_dot_menage=
- caml_call3(Runtime_ocaml_Runtime[28],_$S_,embed_menage,_ajK_)}
- catch(_akL_)
- {_akL_ = caml_wrap_exception(_akL_);
- if(_akL_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$P_];
- throw _akL_}
- try
- {var
- _ajL_=function(param){return demandeur},
- _ajM_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$U_,1)},
- _ajN_=caml_call4(Runtime_ocaml_Runtime[62],_$V_,[0],_ajM_,_ajL_),
- calculette_dot_demandeur=
- caml_call3(Runtime_ocaml_Runtime[28],_$W_,embed_demandeur,_ajN_)}
- catch(_akK_)
- {_akK_ = caml_wrap_exception(_akK_);
- if(_akK_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$T_];
- throw _akK_}
- try
- {var
- _ajO_=function(param){return informations_calcul},
- _ajP_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$Y_,1)},
- _ajQ_=caml_call4(Runtime_ocaml_Runtime[62],_$Z_,[0],_ajP_,_ajO_),
- calculette_dot_informations_ca=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _$0_,
- embed_informations_calcul_a_p_$2,
- _ajQ_)}
- catch(_akJ_)
- {_akJ_ = caml_wrap_exception(_akJ_);
- if(_akJ_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$X_];
- throw _akJ_}
- try
- {var
- _ajR_=function(param){return date_courante},
- _ajS_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$2_,1)},
- _ajT_=caml_call4(Runtime_ocaml_Runtime[62],_$3_,[0],_ajS_,_ajR_),
- calculette_dot_date_courante=
- caml_call3
- (Runtime_ocaml_Runtime[28],_$4_,Runtime_ocaml_Runtime[16],_ajT_)}
- catch(_akI_)
- {_akI_ = caml_wrap_exception(_akI_);
- if(_akI_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$1_];
- throw _akI_}
- try
- {var
- _ajU_=function(param){return ressources_menage_prises_en_co},
- _ajV_=
- function(param){return caml_call2(Runtime_ocaml_Runtime[29],_$6_,1)},
- _ajW_=caml_call4(Runtime_ocaml_Runtime[62],_$7_,[0],_ajV_,_ajU_),
- calculette_dot_ressources_mena=
- caml_call3
- (Runtime_ocaml_Runtime[28],_$8_,Runtime_ocaml_Runtime[13],_ajW_)}
- catch(_akH_)
- {_akH_ = caml_wrap_exception(_akH_);
- if(_akH_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$5_];
- throw _akH_}
- var
- _ajX_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_$9_,calculette_aides_au_logement),
- [0,
- calculette_dot_menage,
- calculette_dot_demandeur,
- calculette_dot_informations_ca,
- calculette_dot_date_courante,
- calculette_dot_ressources_mena]),
- result=caml_call2(Runtime_ocaml_Runtime[27],_$__,_ajX_),
- calculette_dot_eligibilite=result[1],
- calculette_dot_aide_finale_for=result[2],
- calculette_dot_traitement_aide=result[3],
- calculette_dot_coefficents_enf=result[4];
- try
- {var
- _ajY_=function(param){return menage_sans_enfants_garde_alte},
- _ajZ_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aaa_,1)},
- _aj0_=caml_call4(Runtime_ocaml_Runtime[62],_aab_,[0],_ajZ_,_ajY_),
- calculette_sans_garde_alternee=
- caml_call3(Runtime_ocaml_Runtime[28],_aac_,embed_menage,_aj0_)}
- catch(_akG_)
- {_akG_ = caml_wrap_exception(_akG_);
- if(_akG_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_$$_];
- throw _akG_}
- try
- {var
- _aj1_=function(param){return demandeur},
- _aj2_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aae_,1)},
- _aj3_=caml_call4(Runtime_ocaml_Runtime[62],_aaf_,[0],_aj2_,_aj1_),
- calculette_sans_garde_alternee$0=
- caml_call3(Runtime_ocaml_Runtime[28],_aag_,embed_demandeur,_aj3_)}
- catch(_akF_)
- {_akF_ = caml_wrap_exception(_akF_);
- if(_akF_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aad_];
- throw _akF_}
- try
- {var
- _aj4_=function(param){return informations_calcul},
- _aj5_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aai_,1)},
- _aj6_=caml_call4(Runtime_ocaml_Runtime[62],_aaj_,[0],_aj5_,_aj4_),
- calculette_sans_garde_alternee$1=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _aak_,
- embed_informations_calcul_a_p_$2,
- _aj6_)}
- catch(_akE_)
- {_akE_ = caml_wrap_exception(_akE_);
- if(_akE_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aah_];
- throw _akE_}
- try
- {var
- _aj7_=function(param){return date_courante},
- _aj8_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aam_,1)},
- _aj9_=caml_call4(Runtime_ocaml_Runtime[62],_aan_,[0],_aj8_,_aj7_),
- calculette_sans_garde_alternee$2=
- caml_call3
- (Runtime_ocaml_Runtime[28],_aao_,Runtime_ocaml_Runtime[16],_aj9_)}
- catch(_akD_)
- {_akD_ = caml_wrap_exception(_akD_);
- if(_akD_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aal_];
- throw _akD_}
- try
- {var
- _aj__=function(param){return ressources_menage_prises_en_co},
- _aj$_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aaq_,1)},
- _aka_=caml_call4(Runtime_ocaml_Runtime[62],_aar_,[0],_aj$_,_aj__),
- calculette_sans_garde_alternee$3=
- caml_call3
- (Runtime_ocaml_Runtime[28],_aas_,Runtime_ocaml_Runtime[13],_aka_)}
- catch(_akC_)
- {_akC_ = caml_wrap_exception(_akC_);
- if(_akC_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aap_];
- throw _akC_}
- var
- _akb_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],_aat_,calculette_aides_au_logement),
- [0,
- calculette_sans_garde_alternee,
- calculette_sans_garde_alternee$0,
- calculette_sans_garde_alternee$1,
- calculette_sans_garde_alternee$2,
- calculette_sans_garde_alternee$3]),
- result$0=caml_call2(Runtime_ocaml_Runtime[27],_aau_,_akb_),
- calculette_sans_garde_alternee$4=result$0[2];
- try
- {var
- _akc_=function(param){return calculette_dot_eligibilite},
- _akd_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aaw_,1)},
- _ake_=caml_call4(Runtime_ocaml_Runtime[62],_aax_,[0],_akd_,_akc_)}
- catch(_akB_)
- {_akB_ = caml_wrap_exception(_akB_);
- if(_akB_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aav_];
- throw _akB_}
- var
- eligibilite=
- caml_call3
- (Runtime_ocaml_Runtime[28],_aay_,Runtime_ocaml_Runtime[12],_ake_);
- try
- {var
- _akf_=function(param){return calculette_dot_coefficents_enf},
- _akg_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aaA_,1)},
- _akh_=caml_call4(Runtime_ocaml_Runtime[62],_aaB_,[0],_akg_,_akf_)}
- catch(_akA_)
- {_akA_ = caml_wrap_exception(_akA_);
- if(_akA_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aaz_];
- throw _akA_}
- var
- _aki_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]),
- coefficents_enfants_garde_alte=
- caml_call3(Runtime_ocaml_Runtime[28],_aaC_,_aki_,_akh_);
- try
- {var
- _akj_=
- function(param)
- {var _akn_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$403);
- if
- (caml_equal
- (caml_call1
- (Runtime_ocaml_Runtime[113],coefficents_enfants_garde_alte),
- _akn_))
- var _ako_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$404);
- else
- var
- _akt_=
- caml_call1
- (Runtime_ocaml_Runtime[113],coefficents_enfants_garde_alte),
- _aku_=caml_call1(Runtime_ocaml_Runtime[41],_akt_),
- _akv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$405),
- _akw_=
- function(acc,coeff)
- {return caml_call2(Runtime_ocaml_Runtime[85],acc,coeff)},
- _akx_=
- caml_call3
- (Stdlib_Array[17],_akw_,_akv_,coefficents_enfants_garde_alte),
- _aky_=caml_call2(Runtime_ocaml_Runtime[89],_akx_,_aku_),
- _akz_=
- caml_call2
- (Runtime_ocaml_Runtime[68],
- calculette_dot_aide_finale_for,
- calculette_sans_garde_alternee$4),
- _ako_=caml_call2(Runtime_ocaml_Runtime[65],_akz_,_aky_);
- var
- _akp_=
- caml_call2
- (Runtime_ocaml_Runtime[67],
- calculette_sans_garde_alternee$4,
- _ako_),
- _akq_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _aaE_,
- Runtime_ocaml_Runtime[13],
- _akp_),
- _akr_=
- caml_call1
- (caml_call2
- (Runtime_ocaml_Runtime[26],
- _aaF_,
- calculette_dot_traitement_aide),
- _akq_),
- _aks_=
- caml_call3
- (Runtime_ocaml_Runtime[28],
- _aaG_,
- Runtime_ocaml_Runtime[13],
- _akr_);
- return caml_call2(Runtime_ocaml_Runtime[27],_aaH_,_aks_)},
- _akk_=
- function(param)
- {return caml_call2(Runtime_ocaml_Runtime[29],_aaI_,1)},
- _akl_=caml_call4(Runtime_ocaml_Runtime[62],_aaJ_,[0],_akk_,_akj_)}
- catch(_akm_)
- {_akm_ = caml_wrap_exception(_akm_);
- if(_akm_ === Runtime_ocaml_Runtime[2])
- throw [0,Runtime_ocaml_Runtime[8],_aaD_];
- throw _akm_}
- var
- aide_finale=
- caml_call3
- (Runtime_ocaml_Runtime[28],_aaK_,Runtime_ocaml_Runtime[13],_akl_);
- return [0,eligibilite,aide_finale]}
- var
- Law_source_Aides_logement=
- [0,
- TypeBailleur,
- embed_type_bailleur,
- TypePret,
- embed_type_pret,
- TitulairePret,
- embed_titulaire_pret,
- TypeTravauxLogementD83215,
- embed_type_travaux_logement_d8,
- TypeTravauxLogementR8425,
- embed_type_travaux_logement_r8,
- AmelioreParOccupant,
- embed_ameliore_par_occupant,
- LimiteTranche,
- embed_limite_tranche,
- LimiteTrancheDecimal,
- embed_limite_tranche_decimal,
- PrestationRecue,
- embed_prestation_recue,
- TypeContratTravail,
- embed_type_contrat_travail,
- ParentOuAutre,
- embed_parent_ou_autre,
- SituationGardeAlternee,
- embed_situation_garde_alternee,
- Parente,
- embed_parente,
- DateDeNaissanceOuMoisDeGrosses,
- embed_date_de_naissance_ou_moi,
- Nationalite,
- embed_nationalite,
- ZoneDHabitation,
- embed_zone_d_habitation,
- CategorieCalculAPL,
- embed_categorie_calcul_a_p_l,
- PaiementLogementDistinctProfes,
- embed_paiement_logement_distin,
- VersementA,
- embed_versement_a,
- DepenseLogement,
- embed_depense_logement,
- ModeOccupationImpaye,
- embed_mode_occupation_impaye,
- EligibiliteAllocationLogement,
- embed_eligibilite_allocation_l,
- TypeAidesPersonnelleLogement,
- embed_type_aides_personnelle_l,
- SituationFamiliale,
- embed_situation_familiale,
- PriseEnCharge$0,
- embed_prise_en_charge$0,
- TypeLogementFoyer,
- embed_type_logement_foyer,
- CategorieEquivalenceLoyerAlloc,
- embed_categorie_equivalence_lo,
- SituationFamilialeCalculAPL,
- embed_situation_familiale_calc,
- Collectivite$0,
- embed_collectivite$0,
- PriseEnChargeEnfant,
- embed_prise_en_charge_enfant,
- SituationObligationScolaire$0,
- embed_situation_obligation_sco$0,
- ElementPrestationsFamiliales$0,
- embed_element_prestations_fami$0,
- PersonneSousLocation,
- embed_personne_sous_location,
- Patrimoine,
- embed_patrimoine,
- PersonneVivantHabituellementAu,
- embed_personne_vivant_habituel,
- InfosChangementLogementD8424,
- embed_infos_changement_logemen,
- Bailleur,
- embed_bailleur,
- Pret,
- embed_pret,
- NeufOuAncien,
- embed_neuf_ou_ancien,
- TrancheRevenu,
- embed_tranche_revenu,
- TrancheRevenuDecimal,
- embed_tranche_revenu_decimal,
- AutrePersonneACharge,
- embed_autre_personne_a_charge,
- DateNaissanceTroisiemeOuDernie,
- embed_date_naissance_troisieme,
- InformationsCalculAPLLogementF,
- embed_informations_calcul_a_p_,
- EnfantPrestationsFamiliales,
- embed_enfant_prestations_famil,
- EnfantACharge,
- embed_enfant_a_charge,
- LoueOuSousLoueADesTiers,
- embed_loue_ou_sous_loue_a_des_,
- Demandeur,
- embed_demandeur,
- ChangementLogementD8424,
- embed_changement_logement_d842,
- Location,
- embed_location,
- Proprietaire,
- embed_proprietaire,
- InformationsCalculAPLAccession,
- embed_informations_calcul_a_p_$0,
- PersonneACharge,
- embed_personne_a_charge,
- InformationsCalculAPLLocatif,
- embed_informations_calcul_a_p_$1,
- LogementFoyer,
- embed_logement_foyer,
- InformationsCalculAPL,
- embed_informations_calcul_a_p_$2,
- ModeOccupation,
- embed_mode_occupation,
- Logement,
- embed_logement,
- Menage,
- embed_menage,
- EligibiliteAidesPersonnelleLog,
- embed_eligibilite_aides_person,
- EligibiliteAidesPersonnelleLog$0,
- embed_eligibilite_aides_person$0,
- EligibiliteAidePersonnaliseeLo,
- embed_eligibilite_aide_personn,
- EligibiliteAidePersonnaliseeLo$0,
- embed_eligibilite_aide_personn$0,
- EligibiliteAllocationLogementO,
- embed_eligibilite_allocation_l$0,
- EligibiliteAllocationLogementI,
- embed_eligibilite_allocation_l$1,
- EligibilitePrimeDeDemenagement,
- embed_eligibilite_prime_de_dem,
- EligibilitePrimeDeDemenagement$0,
- embed_eligibilite_prime_de_dem$0,
- RessourcesAidesPersonnelleLoge,
- embed_ressources_aides_personn,
- RessourcesAidesPersonnelleLoge$0,
- embed_ressources_aides_personn$0,
- ContributionsSocialesAidesPers,
- embed_contributions_sociales_a,
- ContributionsSocialesAidesPers$0,
- embed_contributions_sociales_a$0,
- CalculAidePersonnaliseeLogemen,
- embed_calcul_aide_personnalise,
- CalculAidePersonnaliseeLogemen$0,
- embed_calcul_aide_personnalise$0,
- CalculEquivalenceLoyerMinimale,
- embed_calcul_equivalence_loyer,
- CalculEquivalenceLoyerMinimale$0,
- embed_calcul_equivalence_loyer$0,
- CalculNombrePartLogementFoyerO,
- embed_calcul_nombre_part_logem,
- CalculNombrePartLogementFoyerI,
- embed_calcul_nombre_part_logem$0,
- CalculAidePersonnaliseeLogemen$1,
- embed_calcul_aide_personnalise$1,
- CalculAidePersonnaliseeLogemen$2,
- embed_calcul_aide_personnalise$2,
- CalculNombrePartsAccessionProp,
- embed_calcul_nombre_parts_acce,
- CalculNombrePartsAccessionProp$0,
- embed_calcul_nombre_parts_acce$0,
- CalculAidePersonnaliseeLogemen$3,
- embed_calcul_aide_personnalise$3,
- CalculAidePersonnaliseeLogemen$4,
- embed_calcul_aide_personnalise$4,
- CalculAidePersonnaliseeLogemen$5,
- embed_calcul_aide_personnalise$5,
- CalculAidePersonnaliseeLogemen$6,
- embed_calcul_aide_personnalise$6,
- CalculAllocationLogementLocati,
- embed_calcul_allocation_logeme,
- CalculAllocationLogementLocati$0,
- embed_calcul_allocation_logeme$0,
- CalculAllocationLogementAccess,
- embed_calcul_allocation_logeme$1,
- CalculAllocationLogementAccess$0,
- embed_calcul_allocation_logeme$2,
- CalculAllocationLogementFoyerO,
- embed_calcul_allocation_logeme$3,
- CalculAllocationLogementFoyerI,
- embed_calcul_allocation_logeme$4,
- CalculAllocationLogementOut,
- embed_calcul_allocation_logeme$5,
- CalculAllocationLogementIn,
- embed_calcul_allocation_logeme$6,
- OuvertureDroitsRetraiteOut,
- embed_ouverture_droits_retrait,
- OuvertureDroitsRetraiteIn,
- embed_ouverture_droits_retrait$0,
- ImpayeDepenseLogementOut,
- embed_impaye_depense_logement_,
- ImpayeDepenseLogementIn,
- embed_impaye_depense_logement_$0,
- CalculetteAidesAuLogementOut,
- embed_calculette_aides_au_loge,
- CalculetteAidesAuLogementIn,
- embed_calculette_aides_au_loge$0,
- CalculetteAidesAuLogementGarde,
- embed_calculette_aides_au_loge$1,
- CalculetteAidesAuLogementGarde$0,
- embed_calculette_aides_au_loge$2,
- BaseMensuelleAllocationsFamili$1,
- embed_base_mensuelle_allocatio$1,
- BaseMensuelleAllocationsFamili$2,
- embed_base_mensuelle_allocatio$2,
- SmicOut$0,
- embed_smic_out$0,
- SmicIn$0,
- embed_smic_in$0,
- EligibilitePrestationsFamilial,
- embed_eligibilite_prestations_,
- EligibilitePrestationsFamilial$0,
- embed_eligibilite_prestations_$0,
- contributions_sociales_aides_p,
- calcul_equivalence_loyer_minim,
- calcul_nombre_part_logement_fo,
- calcul_nombre_parts_accession_,
- ouverture_droits_retraite,
- impaye_depense_logement,
- base_mensuelle_allocations_fam$5,
- smic$1,
- calcul_aide_personnalisee_loge,
- calcul_aide_personnalisee_loge$0,
- calcul_aide_personnalisee_loge$1,
- eligibilite_aides_personnelle_,
- ressources_aides_personnelle_l,
- eligibilite_prestations_famili,
- calcul_allocation_logement_loc,
- calcul_allocation_logement_foy,
- calcul_allocation_logement_acc,
- calcul_aide_personnalisee_loge$2,
- eligibilite_prime_de_demenagem,
- eligibilite_aide_personnalisee,
- eligibilite_allocation_logemen,
- calcul_allocation_logement,
- calculette_aides_au_logement,
- calculette_aides_au_logement_g];
- caml_register_global
- (8859,Law_source_Aides_logement,"Law_source__Aides_logement");
- function type_bailleur_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"BailleurSocial","payload":arg}}
- var arg$0=param[1];
- return {"kind":"BailleurPrive","payload":arg$0}}
- function type_bailleur_of_jsoo(type_bailleur)
- {var cons=caml_string_of_jsstring(type_bailleur.kind);
- if(caml_string_notequal(cons,cst_BailleurPrive))
- {if(caml_string_notequal(cons,cst_BailleurSocial$0))
- {var _ajE_=caml_call2(Stdlib_Printf[4],_aaL_,cons);
- return caml_call1(Stdlib[2],_ajE_)}
- return _aaM_}
- return _aaN_}
- function type_pret_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"D331_32","payload":arg};
- case 1:
- var arg$0=param[1];return {"kind":"D331_63_64","payload":arg$0};
- case 2:var arg$1=param[1];return {"kind":"D331_59_8","payload":arg$1};
- case 3:var arg$2=param[1];return {"kind":"D331_76_1","payload":arg$2};
- default:var arg$3=param[1];return {"kind":"Autre","payload":arg$3}}}
- function type_pret_of_jsoo(type_pret)
- {var cons=caml_string_of_jsstring(type_pret.kind);
- if(caml_string_notequal(cons,cst_Autre$2))
- {if(caml_string_notequal(cons,cst_D331_32$0))
- {if(caml_string_notequal(cons,cst_D331_59_8$0))
- {if(caml_string_notequal(cons,cst_D331_63_64$0))
- {if(caml_string_notequal(cons,cst_D331_76_1$0))
- {var _ajD_=caml_call2(Stdlib_Printf[4],_aaO_,cons);
- return caml_call1(Stdlib[2],_ajD_)}
- return _aaP_}
- return _aaQ_}
- return _aaR_}
- return _aaS_}
- return _aaT_}
- function titulaire_pret_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"Demandeur","payload":arg}}
- var arg$0=param[1];
- return {"kind":"VendeurQuandDemandeurAContratLocationAccession",
- "payload":arg$0}}
- function titulaire_pret_of_jsoo(titulaire_pret)
- {var cons=caml_string_of_jsstring(titulaire_pret.kind);
- if(caml_string_notequal(cons,cst_Demandeur$0))
- {if(caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0))
- {var _ajC_=caml_call2(Stdlib_Printf[4],_aaU_,cons);
- return caml_call1(Stdlib[2],_ajC_)}
- return _aaV_}
- return _aaW_}
- function type_travaux_logement_d832_15_(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"TravauxPourAcquisitionD832_15_1","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"TravauxSurLogementDejaAcquisD832_15_2",
- "payload":arg$0};
- default:
- var arg$1=param[1];return {"kind":"PasDeTravaux","payload":arg$1}}}
- function type_travaux_logement_d832_15_$0(type_travaux_logement_d832_15)
- {var cons=caml_string_of_jsstring(type_travaux_logement_d832_15.kind);
- if(caml_string_notequal(cons,cst_PasDeTravaux$1))
- {if(caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0))
- {if(caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu))
- {var _ajB_=caml_call2(Stdlib_Printf[4],_aaX_,cons);
- return caml_call1(Stdlib[2],_ajB_)}
- return _aaY_}
- return _aaZ_}
- return _aa0_}
- function type_travaux_logement_r842_5_t(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"ObjectifDecenceLogement","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"PrevuDansListeR321_15","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"AgrandirOuRendreHabitableD331_63","payload":arg$1};
- default:
- var arg$2=param[1];return {"kind":"PasDeTravaux","payload":arg$2}}}
- function type_travaux_logement_r842_5_o(type_travaux_logement_r842_5)
- {var cons=caml_string_of_jsstring(type_travaux_logement_r842_5.kind);
- if(caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0))
- {if(caml_string_notequal(cons,cst_ObjectifDecenceLogement))
- {if(caml_string_notequal(cons,cst_PasDeTravaux$2))
- {if(caml_string_notequal(cons,cst_PrevuDansListeR321_15))
- {var _ajA_=caml_call2(Stdlib_Printf[4],_aa1_,cons);
- return caml_call1(Stdlib[2],_ajA_)}
- return _aa2_}
- return _aa3_}
- return _aa4_}
- return _aa5_}
- function ameliore_par_occupant_to_jsoo(param)
- {if(0 === param[0]){var arg=param[1];return {"kind":"Oui","payload":arg}}
- var arg$0=param[1];
- return {"kind":"Non","payload":arg$0}}
- function ameliore_par_occupant_of_jsoo(ameliore_par_occupant)
- {var cons=caml_string_of_jsstring(ameliore_par_occupant.kind);
- if(caml_string_notequal(cons,cst_Non$2))
- {if(caml_string_notequal(cons,cst_Oui$1))
- {var _ajz_=caml_call2(Stdlib_Printf[4],_aa6_,cons);
- return caml_call1(Stdlib[2],_ajz_)}
- return _aa7_}
- return _aa8_}
- function limite_tranche_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1],t43=caml_call1(Runtime_ocaml_Runtime[35],arg);
- return {"kind":"Revenu","payload":t43}}
- var arg$0=param[1];
- return {"kind":"Infini","payload":arg$0}}
- function limite_tranche_of_jsoo(limite_tranche)
- {var cons=caml_string_of_jsstring(limite_tranche.kind);
- if(caml_string_notequal(cons,cst_Infini$1))
- {if(caml_string_notequal(cons,cst_Revenu$1))
- {var _ajx_=caml_call2(Stdlib_Printf[4],_aa9_,cons);
- return caml_call1(Stdlib[2],_ajx_)}
- var
- _ajy_=
- caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajy_)]}
- return _aa__}
- function limite_tranche_decimal_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1],t49=caml_call1(Runtime_ocaml_Runtime[43],arg);
- return {"kind":"Revenu","payload":t49}}
- var arg$0=param[1];
- return {"kind":"Infini","payload":arg$0}}
- function limite_tranche_decimal_of_jsoo(limite_tranche_decimal)
- {var cons=caml_string_of_jsstring(limite_tranche_decimal.kind);
- if(caml_string_notequal(cons,cst_Infini$2))
- {if(caml_string_notequal(cons,cst_Revenu$2))
- {var _ajw_=caml_call2(Stdlib_Printf[4],_aa$_,cons);
- return caml_call1(Stdlib[2],_ajw_)}
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]}
- return _aba_}
- function prestation_recue_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"AllocationsFamiliales","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"ComplementFamilial","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"AllocationJeuneEnfant","payload":arg$1};
- case 3:
- var arg$2=param[1];
- return {"kind":"AllocationSoutienFamilial","payload":arg$2};
- case 4:
- var arg$3=param[1];
- return {"kind":"AllocationSoutienEnfantHandicape","payload":arg$3};
- default:
- var arg$4=param[1];
- return {"kind":"AllocationAdulteHandicape","payload":arg$4}}}
- function prestation_recue_of_jsoo(prestation_recue)
- {var cons=caml_string_of_jsstring(prestation_recue.kind);
- if(caml_string_notequal(cons,cst_AllocationAdulteHandicape))
- {if(caml_string_notequal(cons,cst_AllocationJeuneEnfant$0))
- {if(caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0))
- {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$3))
- {if(caml_string_notequal(cons,cst_AllocationsFamiliales$3))
- {if(caml_string_notequal(cons,cst_ComplementFamilial$0))
- {var _ajv_=caml_call2(Stdlib_Printf[4],_abb_,cons);
- return caml_call1(Stdlib[2],_ajv_)}
- return _abc_}
- return _abd_}
- return _abe_}
- return _abf_}
- return _abg_}
- return _abh_}
- function type_contrat_travail_to_jsoo(param)
- {if(0 === param[0]){var arg=param[1];return {"kind":"CDI","payload":arg}}
- var arg$0=param[1];
- return {"kind":"Autres","payload":arg$0}}
- function type_contrat_travail_of_jsoo(type_contrat_travail)
- {var cons=caml_string_of_jsstring(type_contrat_travail.kind);
- if(caml_string_notequal(cons,cst_Autres$0))
- {if(caml_string_notequal(cons,cst_CDI$0))
- {var _aju_=caml_call2(Stdlib_Printf[4],_abi_,cons);
- return caml_call1(Stdlib[2],_aju_)}
- return _abj_}
- return _abk_}
- function parent_ou_autre_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1],t73=caml_call1(Runtime_ocaml_Runtime[43],arg);
- return {"kind":"DemandeurOuConjointOuParentOuViaPartsSocietes",
- "payload":t73}}
- var arg$0=param[1];
- return {"kind":"Autre","payload":arg$0}}
- function parent_ou_autre_of_jsoo(parent_ou_autre)
- {var cons=caml_string_of_jsstring(parent_ou_autre.kind);
- if(caml_string_notequal(cons,cst_Autre$3))
- {if(caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0))
- {var _ajt_=caml_call2(Stdlib_Printf[4],_abl_,cons);
- return caml_call1(Stdlib[2],_ajt_)}
- return [0,
- caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]}
- return _abm_}
- function situation_garde_alternee_to_js(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}}
- var arg$0=param[1],t81=caml_call1(Runtime_ocaml_Runtime[43],arg$0);
- return {"kind":"GardeAlterneeCoefficientPriseEnCharge","payload":t81}}
- function situation_garde_alternee_of_js(situation_garde_alternee)
- {var cons=caml_string_of_jsstring(situation_garde_alternee.kind);
- if(caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr))
- {if(caml_string_notequal(cons,cst_PasDeGardeAlternee))
- {var _ajs_=caml_call2(Stdlib_Printf[4],_abn_,cons);
- return caml_call1(Stdlib[2],_ajs_)}
- return _abo_}
- return [1,
- caml_call1
- (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]}
- function parente_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg};
- case 1:
- var arg$0=param[1];return {"kind":"Descendant","payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"CollateralDeuxiemeTroisiemeDegre","payload":arg$1}}}
- function parente_of_jsoo(parente)
- {var cons=caml_string_of_jsstring(parente.kind);
- if(caml_string_notequal(cons,cst_Ascendant$0))
- {if(caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem))
- {if(caml_string_notequal(cons,cst_Descendant$0))
- {var _ajr_=caml_call2(Stdlib_Printf[4],_abp_,cons);
- return caml_call1(Stdlib[2],_ajr_)}
- return _abq_}
- return _abr_}
- return _abs_}
- function date_de_naissance_ou_mois_de_g(param)
- {switch(param[0])
- {case 0:
- var arg=param[1],t92=caml_call1(Runtime_jsoo_Runtime[5],arg);
- return {"kind":"DateDeNaissance","payload":t92};
- case 1:
- var arg$0=param[1];
- return {"kind":"AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse",
- "payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse",
- "payload":arg$1}}}
- function date_de_naissance_ou_mois_de_g$0(date_de_naissance_ou_mois_de_g)
- {var cons=caml_string_of_jsstring(date_de_naissance_ou_mois_de_g.kind);
- if(caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT))
- {if(caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0))
- {if(caml_string_notequal(cons,cst_DateDeNaissance$0))
- {var _ajq_=caml_call2(Stdlib_Printf[4],_abt_,cons);
- return caml_call1(Stdlib[2],_ajq_)}
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- date_de_naissance_ou_mois_de_g.payload)]}
- return _abu_}
- return _abv_}
- function nationalite_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"Francaise","payload":arg}}
- var arg$0=param[1];
- return {"kind":"Etrangere","payload":arg$0}}
- function nationalite_of_jsoo(nationalite)
- {var cons=caml_string_of_jsstring(nationalite.kind);
- if(caml_string_notequal(cons,cst_Etrangere))
- {if(caml_string_notequal(cons,cst_Francaise))
- {var _ajp_=caml_call2(Stdlib_Printf[4],_abw_,cons);
- return caml_call1(Stdlib[2],_ajp_)}
- return _abx_}
- return _aby_}
- function zone_d_habitation_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Zone2","payload":arg$0};
- default:var arg$1=param[1];return {"kind":"Zone3","payload":arg$1}}}
- function zone_d_habitation_of_jsoo(zone_d_habitation)
- {var cons=caml_string_of_jsstring(zone_d_habitation.kind);
- if(caml_string_notequal(cons,cst_Zone1$0))
- {if(caml_string_notequal(cons,cst_Zone2$0))
- {if(caml_string_notequal(cons,cst_Zone3$0))
- {var _ajo_=caml_call2(Stdlib_Printf[4],_abz_,cons);
- return caml_call1(Stdlib[2],_ajo_)}
- return _abA_}
- return _abB_}
- return _abC_}
- function categorie_calcul_a_p_l_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Location","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"AccessionPropriete","payload":arg$0};
- default:
- var arg$1=param[1];return {"kind":"LogementFoyer","payload":arg$1}}}
- function categorie_calcul_a_p_l_of_jsoo(categorie_calcul_a_p_l)
- {var cons=caml_string_of_jsstring(categorie_calcul_a_p_l.kind);
- if(caml_string_notequal(cons,cst_AccessionPropriete))
- {if(caml_string_notequal(cons,cst_Location$0))
- {if(caml_string_notequal(cons,cst_LogementFoyer$0))
- {var _ajn_=caml_call2(Stdlib_Printf[4],_abD_,cons);
- return caml_call1(Stdlib[2],_ajn_)}
- return _abE_}
- return _abF_}
- return _abG_}
- function paiement_logement_distinct_pro(param)
- {if(0 === param[0])
- {var arg=param[1],t119=caml_call1(Runtime_ocaml_Runtime[35],arg);
- return {"kind":"OuiAvecLoyerOuCharges","payload":t119}}
- var arg$0=param[1];
- return {"kind":"Non","payload":arg$0}}
- function paiement_logement_distinct_pro$0(paiement_logement_distinct_pro)
- {var cons=caml_string_of_jsstring(paiement_logement_distinct_pro.kind);
- if(caml_string_notequal(cons,cst_Non$3))
- {if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0))
- {var _ajl_=caml_call2(Stdlib_Printf[4],_abH_,cons);
- return caml_call1(Stdlib[2],_ajl_)}
- var
- _ajm_=
- caml_call1
- (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajm_)]}
- return _abI_}
- function versement_a_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg};
- case 1:
- var arg$0=param[1];return {"kind":"Beneficiaire","payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"EtablissementHabilite","payload":arg$1}}}
- function versement_a_of_jsoo(versement_a)
- {var cons=caml_string_of_jsstring(versement_a.kind);
- if(caml_string_notequal(cons,cst_Bailleur$0))
- {if(caml_string_notequal(cons,cst_Beneficiaire))
- {if(caml_string_notequal(cons,cst_EtablissementHabilite))
- {var _ajk_=caml_call2(Stdlib_Printf[4],_abJ_,cons);
- return caml_call1(Stdlib[2],_ajk_)}
- return _abK_}
- return _abL_}
- return _abM_}
- function depense_logement_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1],t132=caml_call1(Runtime_ocaml_Runtime[35],arg);
- return {"kind":"TotalAnnuelEcheances","payload":t132};
- case 1:
- var arg$0=param[1],t134=caml_call1(Runtime_ocaml_Runtime[35],arg$0);
- return {"kind":"Mensualite","payload":t134};
- default:
- var arg$1=param[1],t136=caml_call1(Runtime_ocaml_Runtime[35],arg$1);
- return {"kind":"Loyer","payload":t136}}}
- function depense_logement_of_jsoo(depense_logement)
- {var cons=caml_string_of_jsstring(depense_logement.kind);
- if(caml_string_notequal(cons,cst_Loyer$0))
- {if(caml_string_notequal(cons,cst_Mensualite))
- {if(caml_string_notequal(cons,cst_TotalAnnuelEcheances))
- {var _ajg_=caml_call2(Stdlib_Printf[4],_abN_,cons);
- return caml_call1(Stdlib[2],_ajg_)}
- var
- _ajh_=
- caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ajh_)]}
- var
- _aji_=
- caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload);
- return [1,caml_call1(Runtime_ocaml_Runtime[33],_aji_)]}
- var
- _ajj_=
- caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload);
- return [2,caml_call1(Runtime_ocaml_Runtime[33],_ajj_)]}
- function mode_occupation_impaye_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}}
- var arg$0=param[1];
- return {"kind":"ImpayePret","payload":arg$0}}
- function mode_occupation_impaye_of_jsoo(mode_occupation_impaye)
- {var cons=caml_string_of_jsstring(mode_occupation_impaye.kind);
- if(caml_string_notequal(cons,cst_ImpayeLoyer))
- {if(caml_string_notequal(cons,cst_ImpayePret))
- {var _ajf_=caml_call2(Stdlib_Printf[4],_abO_,cons);
- return caml_call1(Stdlib[2],_ajf_)}
- return _abP_}
- return _abQ_}
- function eligibilite_allocation_logemen$0(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"AllocationLogementFamiliale","payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"AllocationLogementSociale","payload":arg$1}}}
- function eligibilite_allocation_logemen$1(eligibilite_allocation_logemen)
- {var cons=caml_string_of_jsstring(eligibilite_allocation_logemen.kind);
- if(caml_string_notequal(cons,cst_AllocationLogementFamilial$1))
- {if(caml_string_notequal(cons,cst_AllocationLogementSociale$1))
- {if(caml_string_notequal(cons,cst_PasEligible))
- {var _aje_=caml_call2(Stdlib_Printf[4],_abR_,cons);
- return caml_call1(Stdlib[2],_aje_)}
- return _abS_}
- return _abT_}
- return _abU_}
- function type_aides_personnelle_logemen(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"AidePersonnaliseeLogement","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"AllocationLogementFamiliale","payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"AllocationLogementSociale","payload":arg$1}}}
- function type_aides_personnelle_logemen$0(type_aides_personnelle_logemen)
- {var cons=caml_string_of_jsstring(type_aides_personnelle_logemen.kind);
- if(caml_string_notequal(cons,cst_AidePersonnaliseeLogement))
- {if(caml_string_notequal(cons,cst_AllocationLogementFamilial$2))
- {if(caml_string_notequal(cons,cst_AllocationLogementSociale$2))
- {var _ajd_=caml_call2(Stdlib_Printf[4],_abV_,cons);
- return caml_call1(Stdlib[2],_ajd_)}
- return _abW_}
- return _abX_}
- return _abY_}
- function situation_familiale_to_jsoo(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg};
- case 1:
- var arg$0=param[1],t163=caml_call1(Runtime_jsoo_Runtime[5],arg$0);
- return {"kind":"Maries","payload":t163};
- case 2:var arg$1=param[1];return {"kind":"Pacses","payload":arg$1};
- case 3:var arg$2=param[1];return {"kind":"Concubins","payload":arg$2};
- case 4:
- var arg$3=param[1];
- return {"kind":"CelibataireSepareDeFait","payload":arg$3};
- default:
- var arg$4=param[1];
- return {"kind":"ConcubinageDontSepareDeFait","payload":arg$4}}}
- function situation_familiale_of_jsoo(situation_familiale)
- {var cons=caml_string_of_jsstring(situation_familiale.kind);
- if(caml_string_notequal(cons,cst_Celibataire))
- {if(caml_string_notequal(cons,cst_CelibataireSepareDeFait))
- {if(caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai))
- {if(caml_string_notequal(cons,cst_Concubins$0))
- {if(caml_string_notequal(cons,cst_Maries))
- {if(caml_string_notequal(cons,cst_Pacses))
- {var _ajc_=caml_call2(Stdlib_Printf[4],_abZ_,cons);
- return caml_call1(Stdlib[2],_ajc_)}
- return _ab0_}
- return [1,
- caml_call1
- (Runtime_jsoo_Runtime[4],situation_familiale.payload)]}
- return _ab1_}
- return _ab2_}
- return _ab3_}
- return _ab4_}
- function prise_en_charge_to_jsoo$0(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"EffectiveEtPermanente","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"ResidenceAlterneeAllocataireUnique","payload":arg$0};
- default:
- var arg$1=param[1];
- return {"kind":"ResidenceAlterneeAllocationsPartagee",
- "payload":arg$1}}}
- function prise_en_charge_of_jsoo$0(prise_en_charge)
- {var cons=caml_string_of_jsstring(prise_en_charge.kind);
- if(caml_string_notequal(cons,cst_EffectiveEtPermanente$3))
- {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai))
- {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio))
- {var _ajb_=caml_call2(Stdlib_Printf[4],_ab5_,cons);
- return caml_call1(Stdlib[2],_ajb_)}
- return _ab6_}
- return _ab7_}
- return _ab8_}
- function type_logement_foyer_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"LogementPersonnesAgeesOuHandicapees","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"ResidenceSociale","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":
- "FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995",
- "payload":arg$1};
- default:var arg$2=param[1];return {"kind":"Autre","payload":arg$2}}}
- function type_logement_foyer_of_jsoo(type_logement_foyer)
- {var cons=caml_string_of_jsstring(type_logement_foyer.kind);
- if(caml_string_notequal(cons,cst_Autre$4))
- {if(caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0))
- {if(caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa))
- {if(caml_string_notequal(cons,cst_ResidenceSociale))
- {var _aja_=caml_call2(Stdlib_Printf[4],_ab9_,cons);
- return caml_call1(Stdlib[2],_aja_)}
- return _ab__}
- return _ab$_}
- return _aca_}
- return _acb_}
- function categorie_equivalence_loyer_al(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"EtudiantLogeEnChambre","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"EtudiantLogeEnChambreRehabilitee","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"PersonnesAgeesSelon3DeD842_16","payload":arg$1};
- default:
- var arg$2=param[1];return {"kind":"AutresPersonnes","payload":arg$2}}}
- function categorie_equivalence_loyer_al$0(categorie_equivalence_loyer_al)
- {var cons=caml_string_of_jsstring(categorie_equivalence_loyer_al.kind);
- if(caml_string_notequal(cons,cst_AutresPersonnes$0))
- {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambre))
- {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreRehab))
- {if(caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842))
- {var _ai$_=caml_call2(Stdlib_Printf[4],_acc_,cons);
- return caml_call1(Stdlib[2],_ai$_)}
- return _acd_}
- return _ace_}
- return _acf_}
- return _acg_}
- function situation_familiale_calcul_a_p(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}}
- var arg$0=param[1];
- return {"kind":"Couple","payload":arg$0}}
- function situation_familiale_calcul_a_p$0(situation_familiale_calcul_a_p)
- {var cons=caml_string_of_jsstring(situation_familiale_calcul_a_p.kind);
- if(caml_string_notequal(cons,cst_Couple$0))
- {if(caml_string_notequal(cons,cst_PersonneSeule$0))
- {var _ai__=caml_call2(Stdlib_Printf[4],_ach_,cons);
- return caml_call1(Stdlib[2],_ai__)}
- return _aci_}
- return _acj_}
- function collectivite_to_jsoo$0(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0};
- case 2:
- var arg$1=param[1];return {"kind":"Martinique","payload":arg$1};
- case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2};
- case 4:
- var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3};
- case 5:
- var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4};
- case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5};
- case 7:
- var arg$6=param[1];
- return {"kind":"SaintPierreEtMiquelon","payload":arg$6};
- default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}}
- function collectivite_of_jsoo$0(collectivite)
- {var cons=caml_string_of_jsstring(collectivite.kind);
- if(caml_string_notequal(cons,cst_Guadeloupe$2))
- {if(caml_string_notequal(cons,cst_Guyane$2))
- {if(caml_string_notequal(cons,cst_LaReunion$0))
- {if(caml_string_notequal(cons,cst_Martinique$2))
- {if(caml_string_notequal(cons,cst_Mayotte$2))
- {if(caml_string_notequal(cons,cst_Metropole$0))
- {if(caml_string_notequal(cons,cst_SaintBarthelemy$0))
- {if(caml_string_notequal(cons,cst_SaintMartin$2))
- {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2))
- {var _ai9_=caml_call2(Stdlib_Printf[4],_ack_,cons);
- return caml_call1(Stdlib[2],_ai9_)}
- return _acl_}
- return _acm_}
- return _acn_}
- return _aco_}
- return _acp_}
- return _acq_}
- return _acr_}
- return _acs_}
- return _act_}
- function prise_en_charge_enfant_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"GardeAlterneePartageAllocations","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"EffectiveEtPermanente","payload":arg$1};
- case 3:
- var arg$2=param[1];
- return {"kind":"ServicesSociauxAllocationVerseeALaFamille",
- "payload":arg$2};
- default:
- var arg$3=param[1];
- return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux",
- "payload":arg$3}}}
- function prise_en_charge_enfant_of_jsoo(prise_en_charge_enfant)
- {var cons=caml_string_of_jsstring(prise_en_charge_enfant.kind);
- if(caml_string_notequal(cons,cst_EffectiveEtPermanente$4))
- {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0))
- {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0))
- {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5))
- {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6))
- {var _ai8_=caml_call2(Stdlib_Printf[4],_acu_,cons);
- return caml_call1(Stdlib[2],_ai8_)}
- return _acv_}
- return _acw_}
- return _acx_}
- return _acy_}
- return _acz_}
- function situation_obligation_scolaire_$1(param)
- {switch(param[0])
- {case 0:var arg=param[1];return {"kind":"Avant","payload":arg};
- case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0};
- default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}}
- function situation_obligation_scolaire_$2(situation_obligation_scolaire)
- {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind);
- if(caml_string_notequal(cons,cst_Apres$0))
- {if(caml_string_notequal(cons,cst_Avant$2))
- {if(caml_string_notequal(cons,cst_Pendant$2))
- {var _ai7_=caml_call2(Stdlib_Printf[4],_acA_,cons);
- return caml_call1(Stdlib[2],_ai7_)}
- return _acB_}
- return _acC_}
- return _acD_}
- function element_prestations_familiales$1(param)
- {switch(param[0])
- {case 0:
- var arg=param[1];
- return {"kind":"PrestationAccueilJeuneEnfant","payload":arg};
- case 1:
- var arg$0=param[1];
- return {"kind":"AllocationsFamiliales","payload":arg$0};
- case 2:
- var arg$1=param[1];
- return {"kind":"ComplementFamilial","payload":arg$1};
- case 3:
- var arg$2=param[1];
- return {"kind":"AllocationLogement","payload":arg$2};
- case 4:
- var arg$3=param[1];
- return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3};
- case 5:
- var arg$4=param[1];
- return {"kind":"AllocationSoutienFamilial","payload":arg$4};
- case 6:
- var arg$5=param[1];
- return {"kind":"AllocationRentreeScolaire","payload":arg$5};
- default:
- var arg$6=param[1];
- return {"kind":"AllocationJournalierePresenceParentale",
- "payload":arg$6}}}
- function element_prestations_familiales$2(element_prestations_familiales)
- {var cons=caml_string_of_jsstring(element_prestations_familiales.kind);
- if(caml_string_notequal(cons,cst_AllocationEducationEnfantH$0))
- {if(caml_string_notequal(cons,cst_AllocationJournalierePrese$0))
- {if(caml_string_notequal(cons,cst_AllocationLogement$2))
- {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire$0))
- {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$4))
- {if(caml_string_notequal(cons,cst_AllocationsFamiliales$4))
- {if(caml_string_notequal(cons,cst_ComplementFamilial$1))
- {if
- (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2))
- {var _ai6_=caml_call2(Stdlib_Printf[4],_acE_,cons);
- return caml_call1(Stdlib[2],_ai6_)}
- return _acF_}
- return _acG_}
- return _acH_}
- return _acI_}
- return _acJ_}
- return _acK_}
- return _acL_}
- return _acM_}
- function personne_sous_location_to_jsoo(personne_sous_location)
- {var
- t259=! ! personne_sous_location[2],
- t258=caml_call1(Runtime_ocaml_Runtime[48],personne_sous_location[1]);
- return {"agePersonneSousLocation":t258,"conformeArticleL4421":t259}}
- function personne_sous_location_of_jsoo(personne_sous_location)
- {var _ai5_=personne_sous_location.conformeArticleL4421 | 0;
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[49],
- personne_sous_location.agePersonneSousLocation),
- _ai5_]}
- function patrimoine_to_jsoo(patrimoine)
- {var
- t263=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[2]),
- t262=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[1]);
- return {"produisantRevenuPeriodeR82233R8224":t262,
- "neProduisantPasRevenuPeriodeR82233R8224":t263}}
- function patrimoine_of_jsoo(patrimoine)
- {var
- _ai2_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- patrimoine.neProduisantPasRevenuPeriodeR82233R8224),
- _ai3_=caml_call1(Runtime_ocaml_Runtime[33],_ai2_),
- _ai4_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- patrimoine.produisantRevenuPeriodeR82233R8224);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ai4_),_ai3_]}
- function personne_vivant_habituellement(personne_vivant_habituellement)
- {var
- t267=
- caml_call1
- (Runtime_ocaml_Runtime[35],personne_vivant_habituellement[2]),
- t266=! ! personne_vivant_habituellement[1];
- return {"dureeResidenceDurantPeriodeR82231SuperieureA6Mois":t266,
- "ressources":t267}}
- function personne_vivant_habituellement$0(personne_vivant_habituellement)
- {var
- _ai0_=
- caml_call1
- (Runtime_ocaml_Runtime[42],personne_vivant_habituellement.ressources),
- _ai1_=caml_call1(Runtime_ocaml_Runtime[33],_ai0_);
- return [0,
- personne_vivant_habituellement.dureeResidenceDurantPeriodeR82231SuperieureA6Mois
- |
- 0,
- _ai1_]}
- function infos_changement_logement_d842(infos_changement_logement_d842)
- {var
- t271=
- caml_call1
- (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[2]),
- t270=
- caml_call1
- (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[1]);
- return {"ancienLoyerPrincipal":t270,"ancienneAllocationLogement":t271}}
- function infos_changement_logement_d842$0(infos_changement_logement_d842)
- {var
- _aiX_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- infos_changement_logement_d842.ancienneAllocationLogement),
- _aiY_=caml_call1(Runtime_ocaml_Runtime[33],_aiX_),
- _aiZ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- infos_changement_logement_d842.ancienLoyerPrincipal);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_aiZ_),_aiY_]}
- function bailleur_to_jsoo(bailleur)
- {var
- t278=! ! bailleur[5],
- t277=! ! bailleur[4],
- t276=! ! bailleur[3],
- t275=! ! bailleur[2],
- t274=type_bailleur_to_jsoo(bailleur[1]);
- return {"typeBailleur":t274,
- "respecteConventionTitreV":t275,
- "respecteConventionTitreII":t276,
- "construitAmelioreConditionsL83114":t277,
- "acquisitionAidesEtatPretTitreIIOuLivreIII":t278}}
- function bailleur_of_jsoo(bailleur)
- {var
- _aiT_=bailleur.acquisitionAidesEtatPretTitreIIOuLivreIII | 0,
- _aiU_=bailleur.construitAmelioreConditionsL83114 | 0,
- _aiV_=bailleur.respecteConventionTitreII | 0,
- _aiW_=bailleur.respecteConventionTitreV | 0;
- return [0,
- type_bailleur_of_jsoo(bailleur.typeBailleur),
- _aiW_,
- _aiV_,
- _aiU_,
- _aiT_]}
- function pret_to_jsoo(pret)
- {var
- t286=titulaire_pret_to_jsoo(pret[3]),
- t285=caml_call1(Runtime_jsoo_Runtime[5],pret[2]),
- t284=type_pret_to_jsoo(pret[1]);
- return {"typePret":t284,"dateSignature":t285,"titulairePret":t286}}
- function pret_of_jsoo(pret)
- {var
- _aiR_=titulaire_pret_of_jsoo(pret.titulairePret),
- _aiS_=caml_call1(Runtime_jsoo_Runtime[4],pret.dateSignature);
- return [0,type_pret_of_jsoo(pret.typePret),_aiS_,_aiR_]}
- function neuf_ou_ancien_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"Neuf","payload":arg}}
- var arg$0=param[1],t293=ameliore_par_occupant_to_jsoo(arg$0);
- return {"kind":"Ancien","payload":t293}}
- function neuf_ou_ancien_of_jsoo(neuf_ou_ancien)
- {var cons=caml_string_of_jsstring(neuf_ou_ancien.kind);
- if(caml_string_notequal(cons,cst_Ancien$0))
- {if(caml_string_notequal(cons,cst_Neuf$0))
- {var _aiQ_=caml_call2(Stdlib_Printf[4],_acN_,cons);
- return caml_call1(Stdlib[2],_aiQ_)}
- return _acO_}
- return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]}
- function tranche_revenu_to_jsoo(tranche_revenu)
- {var
- t298=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]),
- t297=caml_call1(Runtime_ocaml_Runtime[35],tranche_revenu[2]),
- t296=limite_tranche_to_jsoo(tranche_revenu[1]);
- return {"haut":t296,"bas":t297,"taux":t298}}
- function tranche_revenu_of_jsoo(tranche_revenu)
- {var
- _aiN_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.taux),
- _aiO_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.bas),
- _aiP_=caml_call1(Runtime_ocaml_Runtime[33],_aiO_);
- return [0,limite_tranche_of_jsoo(tranche_revenu.haut),_aiP_,_aiN_]}
- function tranche_revenu_decimal_to_jsoo(tranche_revenu_decimal)
- {var
- t304=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[3]),
- t303=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[2]),
- t302=limite_tranche_decimal_to_jsoo(tranche_revenu_decimal[1]);
- return {"haut":t302,"bas":t303,"taux":t304}}
- function tranche_revenu_decimal_of_jsoo(tranche_revenu_decimal)
- {var
- _aiL_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.taux),
- _aiM_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.bas);
- return [0,
- limite_tranche_decimal_of_jsoo(tranche_revenu_decimal.haut),
- _aiM_,
- _aiL_]}
- function autre_personne_a_charge_to_jso(autre_personne_a_charge)
- {var
- t314=! ! autre_personne_a_charge[7],
- t313=! ! autre_personne_a_charge[6],
- t312=! ! autre_personne_a_charge[5],
- t311=parente_to_jsoo(autre_personne_a_charge[4]),
- t310=! ! autre_personne_a_charge[3],
- t309=caml_call1(Runtime_ocaml_Runtime[35],autre_personne_a_charge[2]),
- t308=caml_call1(Runtime_jsoo_Runtime[5],autre_personne_a_charge[1]);
- return {"dateNaissance":t308,
- "ressources":t309,
- "ascendantDescendantCollateralDeuxiemeTroisiemeDegre":t310,
- "parente":t311,
- "incapacite80PourcentOuRestrictionEmploi":t312,
- "beneficiaireL16119L3518L6433Secu":t313,
- "titulaireAllocationPersonneAgee":t314}}
- function autre_personne_a_charge_of_jso(autre_personne_a_charge)
- {var
- _aiE_=autre_personne_a_charge.titulaireAllocationPersonneAgee | 0,
- _aiF_=autre_personne_a_charge.beneficiaireL16119L3518L6433Secu | 0,
- _aiG_=
- autre_personne_a_charge.incapacite80PourcentOuRestrictionEmploi
- |
- 0,
- _aiH_=parente_of_jsoo(autre_personne_a_charge.parente),
- _aiI_=
- autre_personne_a_charge.ascendantDescendantCollateralDeuxiemeTroisiemeDegre
- |
- 0,
- _aiJ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],autre_personne_a_charge.ressources),
- _aiK_=caml_call1(Runtime_ocaml_Runtime[33],_aiJ_);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],autre_personne_a_charge.dateNaissance),
- _aiK_,
- _aiI_,
- _aiH_,
- _aiG_,
- _aiF_,
- _aiE_]}
- function date_naissance_troisieme_ou_de(param)
- {if(0 === param[0])
- {var arg=param[1];return {"kind":"MoinsDeTroisEnfants","payload":arg}}
- var arg$0=param[1],t325=date_de_naissance_ou_mois_de_g(arg$0);
- return {"kind":"PlusDeTroisEnfants","payload":t325}}
- function date_naissance_troisieme_ou_de$0(date_naissance_troisieme_ou_de)
- {var cons=caml_string_of_jsstring(date_naissance_troisieme_ou_de.kind);
- if(caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0))
- {if(caml_string_notequal(cons,cst_PlusDeTroisEnfants$0))
- {var _aiD_=caml_call2(Stdlib_Printf[4],_acP_,cons);
- return caml_call1(Stdlib[2],_aiD_)}
- return [1,
- date_de_naissance_ou_mois_de_g$0
- (date_naissance_troisieme_ou_de.payload)]}
- return _acQ_}
- function informations_calcul_a_p_l_loge(informations_calcul_a_p_l_loge)
- {var
- t329=categorie_equivalence_loyer_al(informations_calcul_a_p_l_loge[2]),
- t328=
- caml_call1
- (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loge[1]);
- return {"redevance":t328,"categorieEquivalenceLoyerD84216":t329}}
- function informations_calcul_a_p_l_loge$0(informations_calcul_a_p_l_loge)
- {var
- _aiB_=
- categorie_equivalence_loyer_al$0
- (informations_calcul_a_p_l_loge.categorieEquivalenceLoyerD84216),
- _aiC_=
- caml_call1
- (Runtime_ocaml_Runtime[42],informations_calcul_a_p_l_loge.redevance);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_aiC_),_aiB_]}
- function enfant_prestations_familiales_(enfant_prestations_familiales)
- {var
- t339=! ! enfant_prestations_familiales[8],
- t338=! ! enfant_prestations_familiales[7],
- t337=prise_en_charge_enfant_to_jsoo(enfant_prestations_familiales[6]),
- t336=
- caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[5]),
- t335=
- caml_call1(Runtime_jsoo_Runtime[5],enfant_prestations_familiales[4]),
- t334=
- caml_call1(Runtime_ocaml_Runtime[35],enfant_prestations_familiales[3]),
- t333=situation_obligation_scolaire_$1(enfant_prestations_familiales[2]),
- t332=
- caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[1]);
- return {"identifiant":t332,
- "obligationScolaire":t333,
- "remunerationMensuelle":t334,
- "dateDeNaissance":t335,
- "age":t336,
- "priseEnCharge":t337,
- "aDejaOuvertDroitAuxAllocationsFamiliales":t338,
- "beneficieTitrePersonnelAidePersonnelleLogement":t339}}
- function enfant_prestations_familiales_$0(enfant_prestations_familiales)
- {var
- _ait_=
- enfant_prestations_familiales.beneficieTitrePersonnelAidePersonnelleLogement
- |
- 0,
- _aiu_=
- enfant_prestations_familiales.aDejaOuvertDroitAuxAllocationsFamiliales
- |
- 0,
- _aiv_=
- prise_en_charge_enfant_of_jsoo
- (enfant_prestations_familiales.priseEnCharge),
- _aiw_=
- caml_call1
- (Runtime_ocaml_Runtime[49],enfant_prestations_familiales.age),
- _aix_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- enfant_prestations_familiales.dateDeNaissance),
- _aiy_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- enfant_prestations_familiales.remunerationMensuelle),
- _aiz_=caml_call1(Runtime_ocaml_Runtime[33],_aiy_),
- _aiA_=
- situation_obligation_scolaire_$2
- (enfant_prestations_familiales.obligationScolaire);
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[49],
- enfant_prestations_familiales.identifiant),
- _aiA_,
- _aiz_,
- _aix_,
- _aiw_,
- _aiv_,
- _aiu_,
- _ait_]}
- function enfant_a_charge_to_jsoo(enfant_a_charge)
- {var
- t356=situation_garde_alternee_to_js(enfant_a_charge[9]),
- t355=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[8]),
- t354=prise_en_charge_to_jsoo$0(enfant_a_charge[7]),
- t353=situation_obligation_scolaire_$1(enfant_a_charge[6]),
- t352=caml_call1(Runtime_ocaml_Runtime[35],enfant_a_charge[5]),
- t351=caml_call1(Runtime_jsoo_Runtime[5],enfant_a_charge[4]),
- t350=! ! enfant_a_charge[3],
- t349=! ! enfant_a_charge[2],
- t348=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[1]);
- return {"identifiant":t348,
- "beneficieTitrePersonnelAidePersonnelleLogement":t349,
- "aDejaOuvertDroitAuxAllocationsFamiliales":t350,
- "dateDeNaissance":t351,
- "remunerationMensuelle":t352,
- "obligationScolaire":t353,
- "priseEnCharge":t354,
- "age":t355,
- "situationGardeAlternee":t356}}
- function enfant_a_charge_of_jsoo(enfant_a_charge)
- {var
- _aik_=
- situation_garde_alternee_of_js(enfant_a_charge.situationGardeAlternee),
- _ail_=caml_call1(Runtime_ocaml_Runtime[49],enfant_a_charge.age),
- _aim_=prise_en_charge_of_jsoo$0(enfant_a_charge.priseEnCharge),
- _ain_=
- situation_obligation_scolaire_$2(enfant_a_charge.obligationScolaire),
- _aio_=
- caml_call1
- (Runtime_ocaml_Runtime[42],enfant_a_charge.remunerationMensuelle),
- _aip_=caml_call1(Runtime_ocaml_Runtime[33],_aio_),
- _aiq_=
- caml_call1(Runtime_jsoo_Runtime[4],enfant_a_charge.dateDeNaissance),
- _air_=enfant_a_charge.aDejaOuvertDroitAuxAllocationsFamiliales | 0,
- _ais_=
- enfant_a_charge.beneficieTitrePersonnelAidePersonnelleLogement
- |
- 0;
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[49],enfant_a_charge.identifiant),
- _ais_,
- _air_,
- _aiq_,
- _aip_,
- _ain_,
- _aim_,
- _ail_,
- _aik_]}
- function loue_ou_sous_loue_a_des_tiers_(param)
- {if(0 === param[0]){var arg=param[1];return {"kind":"Non","payload":arg}}
- var arg$0=param[1],t369=personne_sous_location_to_jsoo(arg$0);
- return {"kind":"Oui","payload":t369}}
- function loue_ou_sous_loue_a_des_tiers_$0(loue_ou_sous_loue_a_des_tiers)
- {var cons=caml_string_of_jsstring(loue_ou_sous_loue_a_des_tiers.kind);
- if(caml_string_notequal(cons,cst_Non$4))
- {if(caml_string_notequal(cons,cst_Oui$2))
- {var _aij_=caml_call2(Stdlib_Printf[4],_acR_,cons);
- return caml_call1(Stdlib[2],_aij_)}
- return [1,
- personne_sous_location_of_jsoo
- (loue_ou_sous_loue_a_des_tiers.payload)]}
- return _acS_}
- function demandeur_to_jsoo(demandeur)
- {var
- t378=! ! demandeur[7],
- t377=patrimoine_to_jsoo(demandeur[6]),
- t376=nationalite_to_jsoo(demandeur[5]),
- t375=type_contrat_travail_to_jsoo(demandeur[4]),
- t374=caml_call1(Runtime_jsoo_Runtime[5],demandeur[3]),
- t373=caml_call1(Runtime_ocaml_Runtime[48],demandeur[2]),
- t372=! ! demandeur[1];
- return {"satisfaitConditionsL5122CodeSecuriteSociale":t372,
- "ageDemandeur":t373,
- "dateNaissance":t374,
- "contratDeTravail":t375,
- "nationalite":t376,
- "patrimoine":t377,
- "personneHebergeeCentreSoinLL162223SecuriteSociale":t378}}
- function demandeur_of_jsoo(demandeur)
- {var
- _aid_=demandeur.personneHebergeeCentreSoinLL162223SecuriteSociale | 0,
- _aie_=patrimoine_of_jsoo(demandeur.patrimoine),
- _aif_=nationalite_of_jsoo(demandeur.nationalite),
- _aig_=type_contrat_travail_of_jsoo(demandeur.contratDeTravail),
- _aih_=caml_call1(Runtime_jsoo_Runtime[4],demandeur.dateNaissance),
- _aii_=caml_call1(Runtime_ocaml_Runtime[49],demandeur.ageDemandeur);
- return [0,
- demandeur.satisfaitConditionsL5122CodeSecuriteSociale | 0,
- _aii_,
- _aih_,
- _aig_,
- _aif_,
- _aie_,
- _aid_]}
- function changement_logement_d842_4_to_(param)
- {if(0 === param[0])
- {var arg=param[1],t387=infos_changement_logement_d842(arg);
- return {"kind":"Changement","payload":t387}}
- var arg$0=param[1];
- return {"kind":"PasDeChangement","payload":arg$0}}
- function changement_logement_d842_4_of_(changement_logement_d842_4)
- {var cons=caml_string_of_jsstring(changement_logement_d842_4.kind);
- if(caml_string_notequal(cons,cst_Changement$0))
- {if(caml_string_notequal(cons,cst_PasDeChangement$0))
- {var _aic_=caml_call2(Stdlib_Printf[4],_acT_,cons);
- return caml_call1(Stdlib[2],_aic_)}
- return _acU_}
- return [0,
- infos_changement_logement_d842$0
- (changement_logement_d842_4.payload)]}
- function location_to_jsoo(location)
- {var t392=bailleur_to_jsoo(location[1]);return {"bailleur":t392}}
- function location_of_jsoo(location)
- {return [0,bailleur_of_jsoo(location.bailleur)]}
- function proprietaire_to_jsoo(proprietaire)
- {var t394=pret_to_jsoo(proprietaire[1]);return {"pret":t394}}
- function proprietaire_of_jsoo(proprietaire)
- {return [0,pret_of_jsoo(proprietaire.pret)]}
- function informations_calcul_a_p_l_acce(informations_calcul_a_p_l_acce)
- {var
- t406=neuf_ou_ancien_to_jsoo(informations_calcul_a_p_l_acce[11]),
- t405=type_pret_to_jsoo(informations_calcul_a_p_l_acce[10]),
- t404=! ! informations_calcul_a_p_l_acce[9],
- t403=! ! informations_calcul_a_p_l_acce[8],
- t402=! ! informations_calcul_a_p_l_acce[7],
- t401=type_travaux_logement_r842_5_t(informations_calcul_a_p_l_acce[6]),
- t400=type_travaux_logement_d832_15_(informations_calcul_a_p_l_acce[5]),
- t399=
- caml_call1(Runtime_jsoo_Runtime[5],informations_calcul_a_p_l_acce[4]),
- t398=
- caml_call1(Runtime_jsoo_Runtime[5],informations_calcul_a_p_l_acce[3]),
- t397=
- caml_call1
- (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_acce[2]),
- t396=
- caml_call1
- (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_acce[1]);
- return {"mensualitePrincipale":t396,
- "chargesMensuellesPret":t397,
- "dateSignaturePret":t398,
- "dateEntreeLogement":t399,
- "typeTravauxLogementD83215":t400,
- "typeTravauxLogementR8425":t401,
- "localHabitePremiereFoisBeneficiaire":t402,
- "copropriete":t403,
- "situationR822111317":t404,
- "typePret":t405,
- "ancienneteLogement":t406}}
- function informations_calcul_a_p_l_acce$0(informations_calcul_a_p_l_acce)
- {var
- _ah2_=
- neuf_ou_ancien_of_jsoo
- (informations_calcul_a_p_l_acce.ancienneteLogement),
- _ah3_=type_pret_of_jsoo(informations_calcul_a_p_l_acce.typePret),
- _ah4_=informations_calcul_a_p_l_acce.situationR822111317 | 0,
- _ah5_=informations_calcul_a_p_l_acce.copropriete | 0,
- _ah6_=
- informations_calcul_a_p_l_acce.localHabitePremiereFoisBeneficiaire
- |
- 0,
- _ah7_=
- type_travaux_logement_r842_5_o
- (informations_calcul_a_p_l_acce.typeTravauxLogementR8425),
- _ah8_=
- type_travaux_logement_d832_15_$0
- (informations_calcul_a_p_l_acce.typeTravauxLogementD83215),
- _ah9_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- informations_calcul_a_p_l_acce.dateEntreeLogement),
- _ah__=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- informations_calcul_a_p_l_acce.dateSignaturePret),
- _ah$_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- informations_calcul_a_p_l_acce.chargesMensuellesPret),
- _aia_=caml_call1(Runtime_ocaml_Runtime[33],_ah$_),
- _aib_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- informations_calcul_a_p_l_acce.mensualitePrincipale);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_aib_),
- _aia_,
- _ah__,
- _ah9_,
- _ah8_,
- _ah7_,
- _ah6_,
- _ah5_,
- _ah4_,
- _ah3_,
- _ah2_]}
- function personne_a_charge_to_jsoo(param)
- {if(0 === param[0])
- {var arg=param[1],t419=enfant_a_charge_to_jsoo(arg);
- return {"kind":"EnfantACharge","payload":t419}}
- var arg$0=param[1],t421=autre_personne_a_charge_to_jso(arg$0);
- return {"kind":"AutrePersonneACharge","payload":t421}}
- function personne_a_charge_of_jsoo(personne_a_charge)
- {var cons=caml_string_of_jsstring(personne_a_charge.kind);
- if(caml_string_notequal(cons,cst_AutrePersonneACharge))
- {if(caml_string_notequal(cons,cst_EnfantACharge))
- {var _ah1_=caml_call2(Stdlib_Printf[4],_acV_,cons);
- return caml_call1(Stdlib[2],_ah1_)}
- return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]}
- return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]}
- function informations_calcul_a_p_l_loca(informations_calcul_a_p_l_loca)
- {var
- t432=changement_logement_d842_4_to_(informations_calcul_a_p_l_loca[8]),
- t431=! ! informations_calcul_a_p_l_loca[7],
- t430=
- caml_call1
- (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loca[6]),
- t429=! ! informations_calcul_a_p_l_loca[5],
- t428=! ! informations_calcul_a_p_l_loca[4],
- t427=! ! informations_calcul_a_p_l_loca[3],
- t426=! ! informations_calcul_a_p_l_loca[2],
- t425=
- caml_call1
- (Runtime_ocaml_Runtime[35],informations_calcul_a_p_l_loca[1]);
- return {"loyerPrincipal":t425,
- "beneficiaireAideAdulteOuEnfantHandicapes":t426,
- "logementEstChambre":t427,
- "colocation":t428,
- "ageesOuHandicapAdultesHebergeesOnereuxParticuliers":t429,
- "reductionLoyerSolidarite":t430,
- "logementMeubleD8422":t431,
- "changementLogementD8424":t432}}
- function informations_calcul_a_p_l_loca$0(informations_calcul_a_p_l_loca)
- {var
- _ahS_=
- changement_logement_d842_4_of_
- (informations_calcul_a_p_l_loca.changementLogementD8424),
- _ahT_=informations_calcul_a_p_l_loca.logementMeubleD8422 | 0,
- _ahU_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- informations_calcul_a_p_l_loca.reductionLoyerSolidarite),
- _ahV_=caml_call1(Runtime_ocaml_Runtime[33],_ahU_),
- _ahW_=
- informations_calcul_a_p_l_loca.ageesOuHandicapAdultesHebergeesOnereuxParticuliers
- |
- 0,
- _ahX_=informations_calcul_a_p_l_loca.colocation | 0,
- _ahY_=informations_calcul_a_p_l_loca.logementEstChambre | 0,
- _ahZ_=
- informations_calcul_a_p_l_loca.beneficiaireAideAdulteOuEnfantHandicapes
- |
- 0,
- _ah0_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- informations_calcul_a_p_l_loca.loyerPrincipal);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_ah0_),
- _ahZ_,
- _ahY_,
- _ahX_,
- _ahW_,
- _ahV_,
- _ahT_,
- _ahS_]}
- function logement_foyer_to_jsoo(logement_foyer)
- {var
- t445=! ! logement_foyer[5],
- t444=! ! logement_foyer[4],
- t443=location_to_jsoo(logement_foyer[3]),
- t442=caml_call1(Runtime_jsoo_Runtime[5],logement_foyer[2]),
- t441=type_logement_foyer_to_jsoo(logement_foyer[1]);
- return {"typeUser":t441,
- "dateConventionnement":t442,
- "location":t443,
- "remplitConditionsR83221":t444,
- "construitApplicationLoi195712III":t445}}
- function logement_foyer_of_jsoo(logement_foyer)
- {var
- _ahO_=logement_foyer.construitApplicationLoi195712III | 0,
- _ahP_=logement_foyer.remplitConditionsR83221 | 0,
- _ahQ_=location_of_jsoo(logement_foyer.location),
- _ahR_=
- caml_call1
- (Runtime_jsoo_Runtime[4],logement_foyer.dateConventionnement);
- return [0,
- type_logement_foyer_of_jsoo(logement_foyer.typeUser),
- _ahR_,
- _ahQ_,
- _ahP_,
- _ahO_]}
- function informations_calcul_a_p_l_to_j(param)
- {switch(param[0])
- {case 0:
- var arg=param[1],t452=informations_calcul_a_p_l_loca(arg);
- return {"kind":"InfosLocatif","payload":t452};
- case 1:
- var arg$0=param[1],t454=informations_calcul_a_p_l_loge(arg$0);
- return {"kind":"InfosLogementFoyer","payload":t454};
- default:
- var arg$1=param[1],t456=informations_calcul_a_p_l_acce(arg$1);
- return {"kind":"InfosAccessionPropriete","payload":t456}}}
- function informations_calcul_a_p_l_of_j(informations_calcul_a_p_l)
- {var cons=caml_string_of_jsstring(informations_calcul_a_p_l.kind);
- if(caml_string_notequal(cons,cst_InfosAccessionPropriete))
- {if(caml_string_notequal(cons,cst_InfosLocatif$0))
- {if(caml_string_notequal(cons,cst_InfosLogementFoyer$0))
- {var _ahN_=caml_call2(Stdlib_Printf[4],_acW_,cons);
- return caml_call1(Stdlib[2],_ahN_)}
- return [1,
- informations_calcul_a_p_l_loge$0
- (informations_calcul_a_p_l.payload)]}
- return [0,
- informations_calcul_a_p_l_loca$0
- (informations_calcul_a_p_l.payload)]}
- return [2,
- informations_calcul_a_p_l_acce$0
- (informations_calcul_a_p_l.payload)]}
- function mode_occupation_to_jsoo(param)
- {switch(param[0])
- {case 0:
- var arg=param[1],t462=location_to_jsoo(arg);
- return {"kind":"Locataire","payload":t462};
- case 1:
- var arg$0=param[1],t464=logement_foyer_to_jsoo(arg$0);
- return {"kind":"ResidentLogementFoyer","payload":t464};
- case 2:
- var arg$1=param[1],t466=proprietaire_to_jsoo(arg$1);
- return {"kind":"AccessionProprieteLocalUsageExclusifHabitation",
- "payload":t466};
- case 3:
- var arg$2=param[1],t468=location_to_jsoo(arg$2);
- return {"kind":"SousLocataire","payload":t468};
- default:
- var arg$3=param[1],t470=proprietaire_to_jsoo(arg$3);
- return {"kind":"LocationAccession","payload":t470}}}
- function mode_occupation_of_jsoo(mode_occupation)
- {var cons=caml_string_of_jsstring(mode_occupation.kind);
- if(caml_string_notequal(cons,cst_AccessionProprieteLocalUsa))
- {if(caml_string_notequal(cons,cst_Locataire$0))
- {if(caml_string_notequal(cons,cst_LocationAccession$0))
- {if(caml_string_notequal(cons,cst_ResidentLogementFoyer))
- {if(caml_string_notequal(cons,cst_SousLocataire$0))
- {var _ahM_=caml_call2(Stdlib_Printf[4],_acX_,cons);
- return caml_call1(Stdlib[2],_ahM_)}
- return [3,location_of_jsoo(mode_occupation.payload)]}
- return [1,logement_foyer_of_jsoo(mode_occupation.payload)]}
- return [4,proprietaire_of_jsoo(mode_occupation.payload)]}
- return [0,location_of_jsoo(mode_occupation.payload)]}
- return [2,proprietaire_of_jsoo(mode_occupation.payload)]}
- function logement_to_jsoo(logement)
- {var
- t487=zone_d_habitation_to_jsoo(logement[11]),
- t486=! ! logement[10],
- t485=! ! logement[9],
- t484=caml_call1(Runtime_ocaml_Runtime[48],logement[8]),
- t483=! ! logement[7],
- t482=parent_ou_autre_to_jsoo(logement[6]),
- t481=loue_ou_sous_loue_a_des_tiers_(logement[5]),
- t480=parent_ou_autre_to_jsoo(logement[4]),
- t479=mode_occupation_to_jsoo(logement[3]),
- t478=! ! logement[2],
- t477=! ! logement[1];
- return {"residencePrincipale":t477,
- "estEhpadOuMaisonAutonomieL31312Asf":t478,
- "modeOccupation":t479,
- "proprietaire":t480,
- "loueOuSousLoueADesTiers":t481,
- "usufruit":t482,
- "logementDecentL89462":t483,
- "surfaceMCarres":t484,
- "estAncienL8312":t485,
- "situeCommuneDesequilibreL8312":t486,
- "zone":t487}}
- function logement_of_jsoo(logement)
- {var
- _ahD_=zone_d_habitation_of_jsoo(logement.zone),
- _ahE_=logement.situeCommuneDesequilibreL8312 | 0,
- _ahF_=logement.estAncienL8312 | 0,
- _ahG_=caml_call1(Runtime_ocaml_Runtime[49],logement.surfaceMCarres),
- _ahH_=logement.logementDecentL89462 | 0,
- _ahI_=parent_ou_autre_of_jsoo(logement.usufruit),
- _ahJ_=
- loue_ou_sous_loue_a_des_tiers_$0(logement.loueOuSousLoueADesTiers),
- _ahK_=parent_ou_autre_of_jsoo(logement.proprietaire),
- _ahL_=mode_occupation_of_jsoo(logement.modeOccupation);
- return [0,
- logement.residencePrincipale | 0,
- logement.estEhpadOuMaisonAutonomieL31312Asf | 0,
- _ahL_,
- _ahK_,
- _ahJ_,
- _ahI_,
- _ahH_,
- _ahG_,
- _ahF_,
- _ahE_,
- _ahD_]}
- function menage_to_jsoo(menage)
- {var
- t507=date_naissance_troisieme_ou_de(menage[9]),
- t506=! ! menage[8],
- t505=caml_call1(Runtime_ocaml_Runtime[48],menage[7]),
- t504=! ! menage[6],
- t503=situation_familiale_to_jsoo(menage[5]),
- t502=caml_call1(Runtime_ocaml_Runtime[48],menage[4]),
- _ahz_=menage[3];
- function _ahA_(x){return personne_a_charge_to_jsoo(x)}
- var
- t501=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahA_,_ahz_)),
- t500=logement_to_jsoo(menage[2]),
- _ahB_=menage[1];
- function _ahC_(x){return prestation_recue_to_jsoo(x)}
- var t499=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahC_,_ahB_));
- return {"prestationsRecues":t499,
- "logement":t500,
- "personnesACharge":t501,
- "nombreAutresOccupantsLogement":t502,
- "situationFamiliale":t503,
- "conditionRattacheFoyerFiscalParentIfi":t504,
- "nombreEnfantsANaitreApresTroisiemeMoisGrossesse":t505,
- "enfantANaitreApresQuatriemeMoisGrossesse":t506,
- "dateNaissanceTroisiemeEnfantOuDernierSiPlus":t507}}
- function menage_of_jsoo(menage)
- {var
- _ahn_=
- date_naissance_troisieme_ou_de$0
- (menage.dateNaissanceTroisiemeEnfantOuDernierSiPlus),
- _aho_=menage.enfantANaitreApresQuatriemeMoisGrossesse | 0,
- _ahp_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- menage.nombreEnfantsANaitreApresTroisiemeMoisGrossesse),
- _ahq_=menage.conditionRattacheFoyerFiscalParentIfi | 0,
- _ahr_=situation_familiale_of_jsoo(menage.situationFamiliale),
- _ahs_=
- caml_call1
- (Runtime_ocaml_Runtime[49],menage.nombreAutresOccupantsLogement),
- _aht_=caml_js_to_array(menage.personnesACharge);
- function _ahu_(x){return personne_a_charge_of_jsoo(x)}
- var
- _ahv_=caml_call1(caml_call1(Stdlib_Array[15],_ahu_),_aht_),
- _ahw_=logement_of_jsoo(menage.logement),
- _ahx_=caml_js_to_array(menage.prestationsRecues);
- function _ahy_(x){return prestation_recue_of_jsoo(x)}
- return [0,
- caml_call1(caml_call1(Stdlib_Array[15],_ahy_),_ahx_),
- _ahw_,
- _ahv_,
- _ahs_,
- _ahr_,
- _ahq_,
- _ahp_,
- _aho_,
- _ahn_]}
- function eligibilite_aides_personnelle_$0(eligibilite_aides_personnelle_)
- {function t521(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var _ahm_=personne_a_charge_of_jsoo(input);
- return !
- !
- caml_call1(eligibilite_aides_personnelle_[5],_ahm_)})}
- var _ahk_=eligibilite_aides_personnelle_[4];
- function _ahl_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)}
- var
- t520=caml_js_from_array(caml_call2(Stdlib_Array[15],_ahl_,_ahk_)),
- t519=
- caml_call1
- (Runtime_ocaml_Runtime[48],eligibilite_aides_personnelle_[3]),
- t518=! ! eligibilite_aides_personnelle_[2],
- t517=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[1]);
- return {"dateCouranteOut":t517,
- "eligibiliteOut":t518,
- "nombrePersonnesAChargePrisesEnCompteOut":t519,
- "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t520,
- "condition2R8234Out":caml_js_wrap_meth_callback(t521)}}
- function eligibilite_aides_personnelle_$1(eligibilite_aides_personnelle_)
- {var
- _ahe_=caml_call1(Stdlib[2],cst_The_function_condition_2_r),
- _ahf_=
- caml_js_to_array
- (eligibilite_aides_personnelle_.coefficentsEnfantsGardeAlterneePrisEnCompteOut);
- function _ahg_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)}
- var
- _ahh_=caml_call1(caml_call1(Stdlib_Array[15],_ahg_),_ahf_),
- _ahi_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- eligibilite_aides_personnelle_.nombrePersonnesAChargePrisesEnCompteOut),
- _ahj_=eligibilite_aides_personnelle_.eligibiliteOut | 0;
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_aides_personnelle_.dateCouranteOut),
- _ahj_,
- _ahi_,
- _ahh_,
- _ahe_]}
- function eligibilite_aides_personnelle_$2(eligibilite_aides_personnelle_)
- {function t530(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {return !
- !
- caml_call1(eligibilite_aides_personnelle_[5],input)})}
- function t529(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {return !
- !
- caml_call1(eligibilite_aides_personnelle_[4],input)})}
- var
- t528=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[3]),
- t527=demandeur_to_jsoo(eligibilite_aides_personnelle_[2]),
- t526=menage_to_jsoo(eligibilite_aides_personnelle_[1]);
- return {"menageIn":t526,
- "demandeurIn":t527,
- "dateCouranteIn":t528,
- "conditionLogementResidencePrincipaleIn":
- caml_js_wrap_meth_callback(t529),
- "conditionLogementSurfaceIn":caml_js_wrap_meth_callback(t530)}}
- function eligibilite_aides_personnelle_$3(eligibilite_aides_personnelle_)
- {var
- _aha_=caml_call1(Stdlib[2],cst_The_function_condition_log),
- _ahb_=caml_call1(Stdlib[2],cst_The_function_condition_log$0),
- _ahc_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_aides_personnelle_.dateCouranteIn),
- _ahd_=demandeur_of_jsoo(eligibilite_aides_personnelle_.demandeurIn);
- return [0,
- menage_of_jsoo(eligibilite_aides_personnelle_.menageIn),
- _ahd_,
- _ahc_,
- _ahb_,
- _aha_]}
- function eligibilite_aide_personnalisee$0(eligibilite_aide_personnalisee)
- {var _ag__=eligibilite_aide_personnalisee[4];
- function _ag$_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)}
- var
- t537=caml_js_from_array(caml_call2(Stdlib_Array[15],_ag$_,_ag__)),
- t536=
- caml_call1
- (Runtime_ocaml_Runtime[48],eligibilite_aide_personnalisee[3]),
- t535=! ! eligibilite_aide_personnalisee[2],
- t534=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[1]);
- return {"dateCouranteOut":t534,
- "eligibiliteOut":t535,
- "nombrePersonnesAChargePrisesEnCompteOut":t536,
- "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t537}}
- function eligibilite_aide_personnalisee$1(eligibilite_aide_personnalisee)
- {var
- _ag5_=
- caml_js_to_array
- (eligibilite_aide_personnalisee.coefficentsEnfantsGardeAlterneePrisEnCompteOut);
- function _ag6_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)}
- var
- _ag7_=caml_call1(caml_call1(Stdlib_Array[15],_ag6_),_ag5_),
- _ag8_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- eligibilite_aide_personnalisee.nombrePersonnesAChargePrisesEnCompteOut),
- _ag9_=eligibilite_aide_personnalisee.eligibiliteOut | 0;
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_aide_personnalisee.dateCouranteOut),
- _ag9_,
- _ag8_,
- _ag7_]}
- function eligibilite_aide_personnalisee$2(eligibilite_aide_personnalisee)
- {var
- t544=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[3]),
- t543=demandeur_to_jsoo(eligibilite_aide_personnalisee[2]),
- t542=menage_to_jsoo(eligibilite_aide_personnalisee[1]);
- return {"menageIn":t542,"demandeurIn":t543,"dateCouranteIn":t544}}
- function eligibilite_aide_personnalisee$3(eligibilite_aide_personnalisee)
- {var
- _ag3_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_aide_personnalisee.dateCouranteIn),
- _ag4_=demandeur_of_jsoo(eligibilite_aide_personnalisee.demandeurIn);
- return [0,
- menage_of_jsoo(eligibilite_aide_personnalisee.menageIn),
- _ag4_,
- _ag3_]}
- function eligibilite_allocation_logemen$2(eligibilite_allocation_logemen)
- {var _ag1_=eligibilite_allocation_logemen[3];
- function _ag2_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)}
- var
- t550=caml_js_from_array(caml_call2(Stdlib_Array[15],_ag2_,_ag1_)),
- t549=
- caml_call1
- (Runtime_ocaml_Runtime[48],eligibilite_allocation_logemen[2]),
- t548=
- eligibilite_allocation_logemen$0(eligibilite_allocation_logemen[1]);
- return {"eligibiliteAvecConditionLogementOut":t548,
- "nombrePersonnesAChargePrisesEnCompteOut":t549,
- "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t550}}
- function eligibilite_allocation_logemen$3(eligibilite_allocation_logemen)
- {var
- _agX_=
- caml_js_to_array
- (eligibilite_allocation_logemen.coefficentsEnfantsGardeAlterneePrisEnCompteOut);
- function _agY_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)}
- var
- _agZ_=caml_call1(caml_call1(Stdlib_Array[15],_agY_),_agX_),
- _ag0_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- eligibilite_allocation_logemen.nombrePersonnesAChargePrisesEnCompteOut);
- return [0,
- eligibilite_allocation_logemen$1
- (eligibilite_allocation_logemen.eligibiliteAvecConditionLogementOut),
- _ag0_,
- _agZ_]}
- function eligibilite_allocation_logemen$4(eligibilite_allocation_logemen)
- {var
- t558=informations_calcul_a_p_l_to_j(eligibilite_allocation_logemen[5]),
- t557=! ! eligibilite_allocation_logemen[4],
- t556=demandeur_to_jsoo(eligibilite_allocation_logemen[3]),
- t555=menage_to_jsoo(eligibilite_allocation_logemen[2]),
- t554=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_allocation_logemen[1]);
- return {"dateCouranteIn":t554,
- "menageIn":t555,
- "demandeurIn":t556,
- "beneficieAidePersonnaliseeLogementIn":t557,
- "informationsCalculIn":t558}}
- function eligibilite_allocation_logemen$5(eligibilite_allocation_logemen)
- {var
- _agT_=
- informations_calcul_a_p_l_of_j
- (eligibilite_allocation_logemen.informationsCalculIn),
- _agU_=
- eligibilite_allocation_logemen.beneficieAidePersonnaliseeLogementIn
- |
- 0,
- _agV_=demandeur_of_jsoo(eligibilite_allocation_logemen.demandeurIn),
- _agW_=menage_of_jsoo(eligibilite_allocation_logemen.menageIn);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_allocation_logemen.dateCouranteIn),
- _agW_,
- _agV_,
- _agU_,
- _agT_]}
- function eligibilite_prime_de_demenagem$0(eligibilite_prime_de_demenagem)
- {var
- t564=
- caml_call1
- (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[1]);
- return {"montantPrimeDemenagementOut":t564}}
- function eligibilite_prime_de_demenagem$1(eligibilite_prime_de_demenagem)
- {var
- _agS_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- eligibilite_prime_de_demenagem.montantPrimeDemenagementOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_agS_)]}
- function eligibilite_prime_de_demenagem$2(eligibilite_prime_de_demenagem)
- {var
- t570=
- caml_call1
- (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[5]),
- t569=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[4]),
- t568=demandeur_to_jsoo(eligibilite_prime_de_demenagem[3]),
- t567=menage_to_jsoo(eligibilite_prime_de_demenagem[2]),
- t566=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[1]);
- return {"dateEmmenagementIn":t566,
- "menageIn":t567,
- "demandeurIn":t568,
- "dateCouranteIn":t569,
- "depensesJustifieesReellementEngageesIn":t570}}
- function eligibilite_prime_de_demenagem$3(eligibilite_prime_de_demenagem)
- {var
- _agN_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- eligibilite_prime_de_demenagem.depensesJustifieesReellementEngageesIn),
- _agO_=caml_call1(Runtime_ocaml_Runtime[33],_agN_),
- _agP_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_prime_de_demenagem.dateCouranteIn),
- _agQ_=demandeur_of_jsoo(eligibilite_prime_de_demenagem.demandeurIn),
- _agR_=menage_of_jsoo(eligibilite_prime_de_demenagem.menageIn);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_prime_de_demenagem.dateEmmenagementIn),
- _agR_,
- _agQ_,
- _agP_,
- _agO_]}
- function ressources_aides_personnelle_l$0(ressources_aides_personnelle_l)
- {var
- t576=
- caml_call1
- (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]);
- return {"ressourcesPrisesEnCompteOut":t576}}
- function ressources_aides_personnelle_l$1(ressources_aides_personnelle_l)
- {var
- _agM_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- ressources_aides_personnelle_l.ressourcesPrisesEnCompteOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_agM_)]}
- function ressources_aides_personnelle_l$2(ressources_aides_personnelle_l)
- {var
- t590=
- caml_call1
- (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[13]),
- t589=paiement_logement_distinct_pro(ressources_aides_personnelle_l[12]),
- t588=
- caml_call1(Runtime_jsoo_Runtime[5],ressources_aides_personnelle_l[11]),
- t587=! ! ressources_aides_personnelle_l[10],
- t586=! ! ressources_aides_personnelle_l[9],
- t585=mode_occupation_to_jsoo(ressources_aides_personnelle_l[8]),
- t584=situation_familiale_to_jsoo(ressources_aides_personnelle_l[7]),
- _agI_=ressources_aides_personnelle_l[6];
- function _agJ_(x){return personne_a_charge_to_jsoo(x)}
- var
- t583=caml_js_from_array(caml_call2(Stdlib_Array[15],_agJ_,_agI_)),
- t582=! ! ressources_aides_personnelle_l[5],
- t581=! ! ressources_aides_personnelle_l[4],
- _agK_=ressources_aides_personnelle_l[3];
- function _agL_(x){return personne_vivant_habituellement(x)}
- var
- t580=caml_js_from_array(caml_call2(Stdlib_Array[15],_agL_,_agK_)),
- t579=
- caml_call1
- (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[2]),
- t578=
- caml_call1
- (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]);
- return {"ressourcesDemandeurIn":t578,
- "ressourcesConjointIn":t579,
- "personnesVivantHabituellementFoyerIn":t580,
- "demandeurExerceActiviteRemunereeIn":t581,
- "conjointExerceActiviteRemunereeIn":t582,
- "personnesAChargeIn":t583,
- "situationFamilialeIn":t584,
- "modeOccupationIn":t585,
- "conditionAgeBourseEnseignementSuperieurIn":t586,
- "demandeurPoursuitDesEtudesIn":t587,
- "dateDemandeOuReexamenDroitIn":t588,
- "paiementLogementDistinctProfessionnelIn":t589,
- "ressourcesMenageArrondiesBaseIn":t590}}
- function ressources_aides_personnelle_l$3(ressources_aides_personnelle_l)
- {var
- _agp_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- ressources_aides_personnelle_l.ressourcesMenageArrondiesBaseIn),
- _agq_=caml_call1(Runtime_ocaml_Runtime[33],_agp_),
- _agr_=
- paiement_logement_distinct_pro$0
- (ressources_aides_personnelle_l.paiementLogementDistinctProfessionnelIn),
- _ags_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- ressources_aides_personnelle_l.dateDemandeOuReexamenDroitIn),
- _agt_=ressources_aides_personnelle_l.demandeurPoursuitDesEtudesIn | 0,
- _agu_=
- ressources_aides_personnelle_l.conditionAgeBourseEnseignementSuperieurIn
- |
- 0,
- _agv_=
- mode_occupation_of_jsoo
- (ressources_aides_personnelle_l.modeOccupationIn),
- _agw_=
- situation_familiale_of_jsoo
- (ressources_aides_personnelle_l.situationFamilialeIn),
- _agx_=
- caml_js_to_array(ressources_aides_personnelle_l.personnesAChargeIn);
- function _agy_(x){return personne_a_charge_of_jsoo(x)}
- var
- _agz_=caml_call1(caml_call1(Stdlib_Array[15],_agy_),_agx_),
- _agA_=
- ressources_aides_personnelle_l.conjointExerceActiviteRemunereeIn
- |
- 0,
- _agB_=
- ressources_aides_personnelle_l.demandeurExerceActiviteRemunereeIn
- |
- 0,
- _agC_=
- caml_js_to_array
- (ressources_aides_personnelle_l.personnesVivantHabituellementFoyerIn);
- function _agD_(x){return personne_vivant_habituellement$0(x)}
- var
- _agE_=caml_call1(caml_call1(Stdlib_Array[15],_agD_),_agC_),
- _agF_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- ressources_aides_personnelle_l.ressourcesConjointIn),
- _agG_=caml_call1(Runtime_ocaml_Runtime[33],_agF_),
- _agH_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- ressources_aides_personnelle_l.ressourcesDemandeurIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_agH_),
- _agG_,
- _agE_,
- _agB_,
- _agA_,
- _agz_,
- _agw_,
- _agv_,
- _agu_,
- _agt_,
- _ags_,
- _agr_,
- _agq_]}
- function contributions_sociales_aides_p$0(contributions_sociales_aides_p)
- {function t604(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _agm_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _agn_=caml_call1(Runtime_ocaml_Runtime[33],_agm_),
- _ago_=caml_call1(contributions_sociales_aides_p[1],_agn_);
- return caml_call1(Runtime_ocaml_Runtime[35],_ago_)})}
- return {"montantOut":caml_js_wrap_meth_callback(t604)}}
- function contributions_sociales_aides_p$1(contributions_sociales_aides_p)
- {return [0,caml_call1(Stdlib[2],cst_The_function_montant_out_t)]}
- function contributions_sociales_aides_p$2(contributions_sociales_aides_p)
- {var
- t605=
- caml_call1(Runtime_jsoo_Runtime[5],contributions_sociales_aides_p[1]);
- return {"dateCouranteIn":t605}}
- function contributions_sociales_aides_p$3(contributions_sociales_aides_p)
- {return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- contributions_sociales_aides_p.dateCouranteIn)]}
- function calcul_aide_personnalisee_loge$3(calcul_aide_personnalisee_loge)
- {function t613(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _agj_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _agk_=caml_call1(Runtime_ocaml_Runtime[33],_agj_),
- _agl_=caml_call1(calcul_aide_personnalisee_loge[7],_agk_);
- return caml_call1(Runtime_ocaml_Runtime[35],_agl_)})}
- var
- t612=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]),
- t611=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]),
- t610=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[4]),
- t609=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]),
- t608=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t607=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"montantForfaitaireChargesD82316Out":t607,
- "plafondLoyerD823162Out":t608,
- "participationMinimaleOut":t609,
- "tauxCompositionFamilialeOut":t610,
- "participationPersonnelleOut":t611,
- "aideFinaleFormuleOut":t612,
- "traitementAideFinaleMontantMinimalOut":
- caml_js_wrap_meth_callback(t613)}}
- function calcul_aide_personnalisee_loge$4(calcul_aide_personnalisee_loge)
- {var
- _af__=caml_call1(Stdlib[2],cst_The_function_traitement_ai),
- _af$_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.aideFinaleFormuleOut),
- _aga_=caml_call1(Runtime_ocaml_Runtime[33],_af$_),
- _agb_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.participationPersonnelleOut),
- _agc_=caml_call1(Runtime_ocaml_Runtime[33],_agb_),
- _agd_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.tauxCompositionFamilialeOut),
- _age_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.participationMinimaleOut),
- _agf_=caml_call1(Runtime_ocaml_Runtime[33],_age_),
- _agg_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.plafondLoyerD823162Out),
- _agh_=caml_call1(Runtime_ocaml_Runtime[33],_agg_),
- _agi_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.montantForfaitaireChargesD82316Out);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_agi_),
- _agh_,
- _agf_,
- _agd_,
- _agc_,
- _aga_,
- _af__]}
- function calcul_aide_personnalisee_loge$5(calcul_aide_personnalisee_loge)
- {var
- t631=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[12]),
- t630=! ! calcul_aide_personnalisee_loge[11],
- t629=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[10]),
- t628=! ! calcul_aide_personnalisee_loge[9],
- t627=! ! calcul_aide_personnalisee_loge[8],
- t626=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]),
- t625=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[6]),
- t624=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]),
- t623=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[4]),
- t622=! ! calcul_aide_personnalisee_loge[3],
- t621=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t620=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"loyerPrincipalIn":t620,
- "ressourcesMenageArrondiesIn":t621,
- "beneficiaireAideAdulteOuEnfantHandicapesIn":t622,
- "dateCouranteIn":t623,
- "nombrePersonnesAChargeIn":t624,
- "situationFamilialeCalculAplIn":t625,
- "zoneIn":t626,
- "logementEstChambreIn":t627,
- "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t628,
- "typeAideIn":t629,
- "colocationIn":t630,
- "reductionLoyerSolidariteIn":t631}}
- function calcul_aide_personnalisee_loge$6(calcul_aide_personnalisee_loge)
- {var
- _afW_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.reductionLoyerSolidariteIn),
- _afX_=caml_call1(Runtime_ocaml_Runtime[33],_afW_),
- _afY_=calcul_aide_personnalisee_loge.colocationIn | 0,
- _afZ_=
- type_aides_personnelle_logemen$0
- (calcul_aide_personnalisee_loge.typeAideIn),
- _af0_=
- calcul_aide_personnalisee_loge.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn
- |
- 0,
- _af1_=calcul_aide_personnalisee_loge.logementEstChambreIn | 0,
- _af2_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn),
- _af3_=
- situation_familiale_calcul_a_p$0
- (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn),
- _af4_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn),
- _af5_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateCouranteIn),
- _af6_=
- calcul_aide_personnalisee_loge.beneficiaireAideAdulteOuEnfantHandicapesIn
- |
- 0,
- _af7_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn),
- _af8_=caml_call1(Runtime_ocaml_Runtime[33],_af7_),
- _af9_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.loyerPrincipalIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_af9_),
- _af8_,
- _af6_,
- _af5_,
- _af4_,
- _af3_,
- _af2_,
- _af1_,
- _af0_,
- _afZ_,
- _afY_,
- _afX_]}
- function calcul_equivalence_loyer_minim$0(calcul_equivalence_loyer_minim)
- {var
- t644=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]);
- return {"montantOut":t644}}
- function calcul_equivalence_loyer_minim$1(calcul_equivalence_loyer_minim)
- {var
- _afV_=
- caml_call1
- (Runtime_ocaml_Runtime[42],calcul_equivalence_loyer_minim.montantOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_afV_)]}
- function calcul_equivalence_loyer_minim$2(calcul_equivalence_loyer_minim)
- {var
- t648=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_equivalence_loyer_minim[3]),
- t647=! ! calcul_equivalence_loyer_minim[2],
- t646=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]);
- return {"ressourcesMenageArrondiesIn":t646,
- "condition2Du83225In":t647,
- "nNombrePartsD83225In":t648}}
- function calcul_equivalence_loyer_minim$3(calcul_equivalence_loyer_minim)
- {var
- _afS_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_equivalence_loyer_minim.nNombrePartsD83225In),
- _afT_=calcul_equivalence_loyer_minim.condition2Du83225In | 0,
- _afU_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_equivalence_loyer_minim.ressourcesMenageArrondiesIn);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_afU_),_afT_,_afS_]}
- function calcul_nombre_part_logement_fo$0(calcul_nombre_part_logement_fo)
- {var
- t652=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_nombre_part_logement_fo[1]);
- return {"nNombrePartsD83225Out":t652}}
- function calcul_nombre_part_logement_fo$1(calcul_nombre_part_logement_fo)
- {return [0,
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_nombre_part_logement_fo.nNombrePartsD83225Out)]}
- function calcul_nombre_part_logement_fo$2(calcul_nombre_part_logement_fo)
- {var
- t656=situation_familiale_calcul_a_p(calcul_nombre_part_logement_fo[3]),
- t655=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_nombre_part_logement_fo[2]),
- t654=! ! calcul_nombre_part_logement_fo[1];
- return {"condition2Du83225In":t654,
- "nombrePersonnesAChargeIn":t655,
- "situationFamilialeCalculAplIn":t656}}
- function calcul_nombre_part_logement_fo$3(calcul_nombre_part_logement_fo)
- {var
- _afQ_=
- situation_familiale_calcul_a_p$0
- (calcul_nombre_part_logement_fo.situationFamilialeCalculAplIn),
- _afR_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_nombre_part_logement_fo.nombrePersonnesAChargeIn);
- return [0,
- calcul_nombre_part_logement_fo.condition2Du83225In | 0,
- _afR_,
- _afQ_]}
- function calcul_aide_personnalisee_loge$7(calcul_aide_personnalisee_loge)
- {function t668(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _afN_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _afO_=caml_call1(Runtime_ocaml_Runtime[33],_afN_),
- _afP_=caml_call1(calcul_aide_personnalisee_loge[9],_afO_);
- return caml_call1(Runtime_ocaml_Runtime[35],_afP_)})}
- var
- t667=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]),
- t666=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[7]),
- t665=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]),
- t664=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]),
- t663=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]),
- t662=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]),
- t661=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t660=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"coefficientMultiplicateurD83225Out":t660,
- "coefficientRD83225Out":t661,
- "nNombrePartsD83225Out":t662,
- "equivalenceLoyerEligibleOut":t663,
- "plafondEquivalenceLoyerEligibleOut":t664,
- "equivalenceLoyerMinimaleOut":t665,
- "coefficientPriseEnChargeD83225SeuilOut":t666,
- "aideFinaleFormuleOut":t667,
- "traitementAideFinaleMontantMinimalOut":
- caml_js_wrap_meth_callback(t668)}}
- function calcul_aide_personnalisee_loge$8(calcul_aide_personnalisee_loge)
- {var
- _afz_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$0),
- _afA_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.aideFinaleFormuleOut),
- _afB_=caml_call1(Runtime_ocaml_Runtime[33],_afA_),
- _afC_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83225SeuilOut),
- _afD_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.equivalenceLoyerMinimaleOut),
- _afE_=caml_call1(Runtime_ocaml_Runtime[33],_afD_),
- _afF_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.plafondEquivalenceLoyerEligibleOut),
- _afG_=caml_call1(Runtime_ocaml_Runtime[33],_afF_),
- _afH_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.equivalenceLoyerEligibleOut),
- _afI_=caml_call1(Runtime_ocaml_Runtime[33],_afH_),
- _afJ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.nNombrePartsD83225Out),
- _afK_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.coefficientRD83225Out),
- _afL_=caml_call1(Runtime_ocaml_Runtime[33],_afK_),
- _afM_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.coefficientMultiplicateurD83225Out);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_afM_),
- _afL_,
- _afJ_,
- _afI_,
- _afG_,
- _afE_,
- _afC_,
- _afB_,
- _afz_]}
- function calcul_aide_personnalisee_loge$9(calcul_aide_personnalisee_loge)
- {function t685(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _afy_=
- caml_call1(calcul_aide_personnalisee_loge[9],input);
- return caml_call1(Runtime_ocaml_Runtime[43],_afy_)})}
- function t684(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {return !
- !
- caml_call1(calcul_aide_personnalisee_loge[8],input)})}
- var
- t683=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[7]),
- t682=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]),
- t681=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[5]),
- t680=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]),
- t679=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]),
- t678=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t677=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]);
- return {"modeOccupationIn":t677,
- "ressourcesMenageArrondiesIn":t678,
- "nombrePersonnesAChargeIn":t679,
- "situationFamilialeCalculAplIn":t680,
- "zoneIn":t681,
- "dateCouranteIn":t682,
- "redevanceIn":t683,
- "condition2Du83225In":caml_js_wrap_meth_callback(t684),
- "nNombrePartsD83225In":caml_js_wrap_meth_callback(t685)}}
- function calcul_aide_personnalisee_loge$10(calcul_aide_personnalisee_loge)
- {var
- _afo_=caml_call1(Stdlib[2],cst_The_function_n_nombre_part),
- _afp_=caml_call1(Stdlib[2],cst_The_function_condition_2_d),
- _afq_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.redevanceIn),
- _afr_=caml_call1(Runtime_ocaml_Runtime[33],_afq_),
- _afs_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateCouranteIn),
- _aft_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn),
- _afu_=
- situation_familiale_calcul_a_p$0
- (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn),
- _afv_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn),
- _afw_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn),
- _afx_=caml_call1(Runtime_ocaml_Runtime[33],_afw_);
- return [0,
- mode_occupation_of_jsoo
- (calcul_aide_personnalisee_loge.modeOccupationIn),
- _afx_,
- _afv_,
- _afu_,
- _aft_,
- _afs_,
- _afr_,
- _afp_,
- _afo_]}
- function calcul_nombre_parts_accession_$0(calcul_nombre_parts_accession_)
- {var
- t693=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_nombre_parts_accession_[1]);
- return {"nNombrePartsD83211Out":t693}}
- function calcul_nombre_parts_accession_$1(calcul_nombre_parts_accession_)
- {return [0,
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_nombre_parts_accession_.nNombrePartsD83211Out)]}
- function calcul_nombre_parts_accession_$2(calcul_nombre_parts_accession_)
- {var
- t696=situation_familiale_calcul_a_p(calcul_nombre_parts_accession_[2]),
- t695=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_nombre_parts_accession_[1]);
- return {"nombrePersonnesAChargeIn":t695,
- "situationFamilialeCalculAplIn":t696}}
- function calcul_nombre_parts_accession_$3(calcul_nombre_parts_accession_)
- {var
- _afn_=
- situation_familiale_calcul_a_p$0
- (calcul_nombre_parts_accession_.situationFamilialeCalculAplIn);
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_nombre_parts_accession_.nombrePersonnesAChargeIn),
- _afn_]}
- function calcul_aide_personnalisee_loge$11(calcul_aide_personnalisee_loge)
- {function t703(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _afk_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _afl_=caml_call1(Runtime_ocaml_Runtime[33],_afk_),
- _afm_=caml_call1(calcul_aide_personnalisee_loge[5],_afl_);
- return caml_call1(Runtime_ocaml_Runtime[35],_afm_)})}
- var
- t702=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]),
- t701=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]),
- t700=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t699=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"mensualiteEligibleOut":t699,
- "mensualiteMinimaleOut":t700,
- "coefficientPriseEnChargeD83210SeuilOut":t701,
- "aideFinaleFormuleOut":t702,
- "traitementAideFinaleMontantMinimalOut":
- caml_js_wrap_meth_callback(t703)}}
- function calcul_aide_personnalisee_loge$12(calcul_aide_personnalisee_loge)
- {var
- _afd_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$1),
- _afe_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.aideFinaleFormuleOut),
- _aff_=caml_call1(Runtime_ocaml_Runtime[33],_afe_),
- _afg_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83210SeuilOut),
- _afh_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.mensualiteMinimaleOut),
- _afi_=caml_call1(Runtime_ocaml_Runtime[33],_afh_),
- _afj_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.mensualiteEligibleOut);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_afj_),
- _afi_,
- _afg_,
- _aff_,
- _afd_]}
- function calcul_aide_personnalisee_loge$13(calcul_aide_personnalisee_loge)
- {var
- t721=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[14]),
- t720=neuf_ou_ancien_to_jsoo(calcul_aide_personnalisee_loge[13]),
- t719=type_pret_to_jsoo(calcul_aide_personnalisee_loge[12]),
- t718=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[11]),
- t717=! ! calcul_aide_personnalisee_loge[10],
- t716=! ! calcul_aide_personnalisee_loge[9],
- t715=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]),
- t714=! ! calcul_aide_personnalisee_loge[7],
- t713=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]),
- t712=type_travaux_logement_d832_15_(calcul_aide_personnalisee_loge[5]),
- t711=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]),
- t710=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]),
- t709=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]),
- t708=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"mensualitePrincipaleIn":t708,
- "ressourcesMenageArrondiesIn":t709,
- "nombrePersonnesAChargeIn":t710,
- "situationFamilialeCalculAplIn":t711,
- "typeTravauxLogementIn":t712,
- "dateSignaturePretIn":t713,
- "localHabitePremiereFoisBeneficiaireIn":t714,
- "dateEntreeLogementIn":t715,
- "coproprieteIn":t716,
- "situationR822111317In":t717,
- "zoneIn":t718,
- "typePretIn":t719,
- "ancienneteLogementIn":t720,
- "dateCouranteIn":t721}}
- function calcul_aide_personnalisee_loge$14(calcul_aide_personnalisee_loge)
- {var
- _ae0_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateCouranteIn),
- _ae1_=
- neuf_ou_ancien_of_jsoo
- (calcul_aide_personnalisee_loge.ancienneteLogementIn),
- _ae2_=type_pret_of_jsoo(calcul_aide_personnalisee_loge.typePretIn),
- _ae3_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn),
- _ae4_=calcul_aide_personnalisee_loge.situationR822111317In | 0,
- _ae5_=calcul_aide_personnalisee_loge.coproprieteIn | 0,
- _ae6_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateEntreeLogementIn),
- _ae7_=
- calcul_aide_personnalisee_loge.localHabitePremiereFoisBeneficiaireIn
- |
- 0,
- _ae8_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateSignaturePretIn),
- _ae9_=
- type_travaux_logement_d832_15_$0
- (calcul_aide_personnalisee_loge.typeTravauxLogementIn),
- _ae__=
- situation_familiale_calcul_a_p$0
- (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn),
- _ae$_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn),
- _afa_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn),
- _afb_=caml_call1(Runtime_ocaml_Runtime[33],_afa_),
- _afc_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.mensualitePrincipaleIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_afc_),
- _afb_,
- _ae$_,
- _ae__,
- _ae9_,
- _ae8_,
- _ae7_,
- _ae6_,
- _ae5_,
- _ae4_,
- _ae3_,
- _ae2_,
- _ae1_,
- _ae0_]}
- function calcul_aide_personnalisee_loge$15(calcul_aide_personnalisee_loge)
- {function t737(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _aeX_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _aeY_=caml_call1(Runtime_ocaml_Runtime[33],_aeX_),
- _aeZ_=caml_call1(calcul_aide_personnalisee_loge[2],_aeY_);
- return caml_call1(Runtime_ocaml_Runtime[35],_aeZ_)})}
- var
- t736=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]);
- return {"aideFinaleFormuleOut":t736,
- "traitementAideFinaleOut":caml_js_wrap_meth_callback(t737)}}
- function calcul_aide_personnalisee_loge$16(calcul_aide_personnalisee_loge)
- {var
- _aeV_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$2),
- _aeW_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.aideFinaleFormuleOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeW_),_aeV_]}
- function calcul_aide_personnalisee_loge$17(calcul_aide_personnalisee_loge)
- {var
- t746=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]),
- t745=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]),
- t744=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[6]),
- t743=situation_familiale_to_jsoo(calcul_aide_personnalisee_loge[5]),
- t742=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]),
- t741=informations_calcul_a_p_l_to_j(calcul_aide_personnalisee_loge[3]),
- t740=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[2]),
- t739=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]);
- return {"modeOccupationIn":t739,
- "typeAideIn":t740,
- "informationsCalculIn":t741,
- "ressourcesMenageSansArrondiIn":t742,
- "situationFamilialeIn":t743,
- "nombrePersonnesAChargeIn":t744,
- "zoneIn":t745,
- "dateCouranteIn":t746}}
- function calcul_aide_personnalisee_loge$18(calcul_aide_personnalisee_loge)
- {var
- _aeN_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_aide_personnalisee_loge.dateCouranteIn),
- _aeO_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn),
- _aeP_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn),
- _aeQ_=
- situation_familiale_of_jsoo
- (calcul_aide_personnalisee_loge.situationFamilialeIn),
- _aeR_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_aide_personnalisee_loge.ressourcesMenageSansArrondiIn),
- _aeS_=caml_call1(Runtime_ocaml_Runtime[33],_aeR_),
- _aeT_=
- informations_calcul_a_p_l_of_j
- (calcul_aide_personnalisee_loge.informationsCalculIn),
- _aeU_=
- type_aides_personnelle_logemen$0
- (calcul_aide_personnalisee_loge.typeAideIn);
- return [0,
- mode_occupation_of_jsoo
- (calcul_aide_personnalisee_loge.modeOccupationIn),
- _aeU_,
- _aeT_,
- _aeS_,
- _aeQ_,
- _aeP_,
- _aeO_,
- _aeN_]}
- function calcul_allocation_logement_loc$0(calcul_allocation_logement_loc)
- {function t756(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _aeK_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _aeL_=caml_call1(Runtime_ocaml_Runtime[33],_aeK_),
- _aeM_=caml_call1(calcul_allocation_logement_loc[2],_aeL_);
- return caml_call1(Runtime_ocaml_Runtime[35],_aeM_)})}
- var
- t755=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]);
- return {"aideFinaleFormuleOut":t755,
- "traitementAideFinaleOut":caml_js_wrap_meth_callback(t756)}}
- function calcul_allocation_logement_loc$1(calcul_allocation_logement_loc)
- {var
- _aeI_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$3),
- _aeJ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_loc.aideFinaleFormuleOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeJ_),_aeI_]}
- function calcul_allocation_logement_loc$2(calcul_allocation_logement_loc)
- {var
- t771=changement_logement_d842_4_to_(calcul_allocation_logement_loc[14]),
- t770=! ! calcul_allocation_logement_loc[13],
- t769=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[12]),
- t768=! ! calcul_allocation_logement_loc[11],
- t767=type_aides_personnelle_logemen(calcul_allocation_logement_loc[10]),
- t766=! ! calcul_allocation_logement_loc[9],
- t765=! ! calcul_allocation_logement_loc[8],
- t764=zone_d_habitation_to_jsoo(calcul_allocation_logement_loc[7]),
- t763=situation_familiale_calcul_a_p(calcul_allocation_logement_loc[6]),
- t762=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_allocation_logement_loc[5]),
- t761=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_loc[4]),
- t760=! ! calcul_allocation_logement_loc[3],
- t759=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[2]),
- t758=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]);
- return {"loyerPrincipalIn":t758,
- "ressourcesMenageArrondiesIn":t759,
- "beneficiaireAideAdulteOuEnfantHandicapesIn":t760,
- "dateCouranteIn":t761,
- "nombrePersonnesAChargeIn":t762,
- "situationFamilialeCalculAplIn":t763,
- "zoneIn":t764,
- "logementEstChambreIn":t765,
- "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t766,
- "typeAideIn":t767,
- "colocationIn":t768,
- "reductionLoyerSolidariteIn":t769,
- "logementMeubleD8422In":t770,
- "changementLogementD8424In":t771}}
- function calcul_allocation_logement_loc$3(calcul_allocation_logement_loc)
- {var
- _aes_=
- changement_logement_d842_4_of_
- (calcul_allocation_logement_loc.changementLogementD8424In),
- _aet_=calcul_allocation_logement_loc.logementMeubleD8422In | 0,
- _aeu_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_loc.reductionLoyerSolidariteIn),
- _aev_=caml_call1(Runtime_ocaml_Runtime[33],_aeu_),
- _aew_=calcul_allocation_logement_loc.colocationIn | 0,
- _aex_=
- type_aides_personnelle_logemen$0
- (calcul_allocation_logement_loc.typeAideIn),
- _aey_=
- calcul_allocation_logement_loc.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn
- |
- 0,
- _aez_=calcul_allocation_logement_loc.logementEstChambreIn | 0,
- _aeA_=zone_d_habitation_of_jsoo(calcul_allocation_logement_loc.zoneIn),
- _aeB_=
- situation_familiale_calcul_a_p$0
- (calcul_allocation_logement_loc.situationFamilialeCalculAplIn),
- _aeC_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_allocation_logement_loc.nombrePersonnesAChargeIn),
- _aeD_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_loc.dateCouranteIn),
- _aeE_=
- calcul_allocation_logement_loc.beneficiaireAideAdulteOuEnfantHandicapesIn
- |
- 0,
- _aeF_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_loc.ressourcesMenageArrondiesIn),
- _aeG_=caml_call1(Runtime_ocaml_Runtime[33],_aeF_),
- _aeH_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_loc.loyerPrincipalIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_aeH_),
- _aeG_,
- _aeE_,
- _aeD_,
- _aeC_,
- _aeB_,
- _aeA_,
- _aez_,
- _aey_,
- _aex_,
- _aew_,
- _aev_,
- _aet_,
- _aes_]}
- function calcul_allocation_logement_acc$0(calcul_allocation_logement_acc)
- {function t787(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _aep_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _aeq_=caml_call1(Runtime_ocaml_Runtime[33],_aep_),
- _aer_=caml_call1(calcul_allocation_logement_acc[2],_aeq_);
- return caml_call1(Runtime_ocaml_Runtime[35],_aer_)})}
- var
- t786=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]);
- return {"aideFinaleFormuleOut":t786,
- "traitementAideFinaleMontantMinimalOut":
- caml_js_wrap_meth_callback(t787)}}
- function calcul_allocation_logement_acc$1(calcul_allocation_logement_acc)
- {var
- _aen_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$4),
- _aeo_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_acc.aideFinaleFormuleOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_aeo_),_aen_]}
- function calcul_allocation_logement_acc$2(calcul_allocation_logement_acc)
- {var
- t801=! ! calcul_allocation_logement_acc[13],
- t800=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[12]),
- t799=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[11]),
- t798=! ! calcul_allocation_logement_acc[10],
- t797=type_travaux_logement_r842_5_t(calcul_allocation_logement_acc[9]),
- t796=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[8]),
- t795=! ! calcul_allocation_logement_acc[7],
- t794=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[6]),
- t793=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[5]),
- t792=zone_d_habitation_to_jsoo(calcul_allocation_logement_acc[4]),
- t791=situation_familiale_calcul_a_p(calcul_allocation_logement_acc[3]),
- t790=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_allocation_logement_acc[2]),
- t789=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]);
- return {"ressourcesMenageArrondiesBaseIn":t789,
- "nombrePersonnesAChargeIn":t790,
- "situationFamilialeCalculAplIn":t791,
- "zoneIn":t792,
- "dateCouranteIn":t793,
- "mensualitePrincipaleIn":t794,
- "situationR822111317In":t795,
- "dateSignaturePretIn":t796,
- "typeTravauxLogementIn":t797,
- "localHabitePremiereFoisBeneficiaireIn":t798,
- "dateEntreeLogementIn":t799,
- "chargesMensuellesPretIn":t800,
- "coproprieteIn":t801}}
- function calcul_allocation_logement_acc$3(calcul_allocation_logement_acc)
- {var
- _ad__=calcul_allocation_logement_acc.coproprieteIn | 0,
- _ad$_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_acc.chargesMensuellesPretIn),
- _aea_=caml_call1(Runtime_ocaml_Runtime[33],_ad$_),
- _aeb_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_acc.dateEntreeLogementIn),
- _aec_=
- calcul_allocation_logement_acc.localHabitePremiereFoisBeneficiaireIn
- |
- 0,
- _aed_=
- type_travaux_logement_r842_5_o
- (calcul_allocation_logement_acc.typeTravauxLogementIn),
- _aee_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_acc.dateSignaturePretIn),
- _aef_=calcul_allocation_logement_acc.situationR822111317In | 0,
- _aeg_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_acc.mensualitePrincipaleIn),
- _aeh_=caml_call1(Runtime_ocaml_Runtime[33],_aeg_),
- _aei_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_acc.dateCouranteIn),
- _aej_=zone_d_habitation_of_jsoo(calcul_allocation_logement_acc.zoneIn),
- _aek_=
- situation_familiale_calcul_a_p$0
- (calcul_allocation_logement_acc.situationFamilialeCalculAplIn),
- _ael_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_allocation_logement_acc.nombrePersonnesAChargeIn),
- _aem_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_acc.ressourcesMenageArrondiesBaseIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_aem_),
- _ael_,
- _aek_,
- _aej_,
- _aei_,
- _aeh_,
- _aef_,
- _aee_,
- _aed_,
- _aec_,
- _aeb_,
- _aea_,
- _ad__]}
- function calcul_allocation_logement_foy$0(calcul_allocation_logement_foy)
- {function t820(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _ad7_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _ad8_=caml_call1(Runtime_ocaml_Runtime[33],_ad7_),
- _ad9_=caml_call1(calcul_allocation_logement_foy[6],_ad8_);
- return caml_call1(Runtime_ocaml_Runtime[35],_ad9_)})}
- var
- t819=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[5]),
- t818=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]),
- t817=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]),
- t816=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[2]),
- t815=
- caml_call1
- (Runtime_ocaml_Runtime[43],calcul_allocation_logement_foy[1]);
- return {"coefficientPriseEnChargeOut":t815,
- "equivalenceLoyerOut":t816,
- "montantForfaitaireChargesOut":t817,
- "loyerMinimalOut":t818,
- "aideFinaleFormuleOut":t819,
- "traitementAideFinaleMontantMinimalOut":
- caml_js_wrap_meth_callback(t820)}}
- function calcul_allocation_logement_foy$1(calcul_allocation_logement_foy)
- {var
- _adY_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$5),
- _adZ_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.aideFinaleFormuleOut),
- _ad0_=caml_call1(Runtime_ocaml_Runtime[33],_adZ_),
- _ad1_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.loyerMinimalOut),
- _ad2_=caml_call1(Runtime_ocaml_Runtime[33],_ad1_),
- _ad3_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.montantForfaitaireChargesOut),
- _ad4_=caml_call1(Runtime_ocaml_Runtime[33],_ad3_),
- _ad5_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.equivalenceLoyerOut),
- _ad6_=caml_call1(Runtime_ocaml_Runtime[33],_ad5_);
- return [0,
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.coefficientPriseEnChargeOut),
- _ad6_,
- _ad4_,
- _ad2_,
- _ad0_,
- _adY_]}
- function calcul_allocation_logement_foy$2(calcul_allocation_logement_foy)
- {var
- t833=categorie_equivalence_loyer_al(calcul_allocation_logement_foy[8]),
- t832=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[7]),
- t831=zone_d_habitation_to_jsoo(calcul_allocation_logement_foy[6]),
- t830=situation_familiale_calcul_a_p(calcul_allocation_logement_foy[5]),
- t829=
- caml_call1
- (Runtime_ocaml_Runtime[48],calcul_allocation_logement_foy[4]),
- t828=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]),
- t827=mode_occupation_to_jsoo(calcul_allocation_logement_foy[2]),
- t826=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[1]);
- return {"redevanceIn":t826,
- "modeOccupationIn":t827,
- "ressourcesMenageArrondiesIn":t828,
- "nombrePersonnesAChargeIn":t829,
- "situationFamilialeCalculAplIn":t830,
- "zoneIn":t831,
- "dateCouranteIn":t832,
- "categorieEquivalenceLoyerD84216In":t833}}
- function calcul_allocation_logement_foy$3(calcul_allocation_logement_foy)
- {var
- _adP_=
- categorie_equivalence_loyer_al$0
- (calcul_allocation_logement_foy.categorieEquivalenceLoyerD84216In),
- _adQ_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_foy.dateCouranteIn),
- _adR_=zone_d_habitation_of_jsoo(calcul_allocation_logement_foy.zoneIn),
- _adS_=
- situation_familiale_calcul_a_p$0
- (calcul_allocation_logement_foy.situationFamilialeCalculAplIn),
- _adT_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_allocation_logement_foy.nombrePersonnesAChargeIn),
- _adU_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.ressourcesMenageArrondiesIn),
- _adV_=caml_call1(Runtime_ocaml_Runtime[33],_adU_),
- _adW_=
- mode_occupation_of_jsoo
- (calcul_allocation_logement_foy.modeOccupationIn),
- _adX_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_foy.redevanceIn);
- return [0,
- caml_call1(Runtime_ocaml_Runtime[33],_adX_),
- _adW_,
- _adV_,
- _adT_,
- _adS_,
- _adR_,
- _adQ_,
- _adP_]}
- function calcul_allocation_logement_out(calcul_allocation_logement_out)
- {function t843(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _adM_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _adN_=caml_call1(Runtime_ocaml_Runtime[33],_adM_),
- _adO_=caml_call1(calcul_allocation_logement_out[2],_adN_);
- return caml_call1(Runtime_ocaml_Runtime[35],_adO_)})}
- var
- t842=
- caml_call1
- (Runtime_ocaml_Runtime[35],calcul_allocation_logement_out[1]);
- return {"aideFinaleFormuleOut":t842,
- "traitementAideFinaleOut":caml_js_wrap_meth_callback(t843)}}
- function calcul_allocation_logement_out$0(calcul_allocation_logement_out)
- {var
- _adK_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$6),
- _adL_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_out.aideFinaleFormuleOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_adL_),_adK_]}
- function calcul_allocation_logement_in_(calcul_allocation_logement_in)
- {var
- t852=type_aides_personnelle_logemen(calcul_allocation_logement_in[8]),
- t851=
- caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_in[7]),
- t850=zone_d_habitation_to_jsoo(calcul_allocation_logement_in[6]),
- t849=
- caml_call1(Runtime_ocaml_Runtime[48],calcul_allocation_logement_in[5]),
- t848=situation_familiale_to_jsoo(calcul_allocation_logement_in[4]),
- t847=
- caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement_in[3]),
- t846=informations_calcul_a_p_l_to_j(calcul_allocation_logement_in[2]),
- t845=mode_occupation_to_jsoo(calcul_allocation_logement_in[1]);
- return {"modeOccupationIn":t845,
- "informationsCalculIn":t846,
- "ressourcesMenageSansArrondiIn":t847,
- "situationFamilialeIn":t848,
- "nombrePersonnesAChargeIn":t849,
- "zoneIn":t850,
- "dateCouranteIn":t851,
- "typeAideIn":t852}}
- function calcul_allocation_logement_in_$0(calcul_allocation_logement_in)
- {var
- _adC_=
- type_aides_personnelle_logemen$0
- (calcul_allocation_logement_in.typeAideIn),
- _adD_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calcul_allocation_logement_in.dateCouranteIn),
- _adE_=zone_d_habitation_of_jsoo(calcul_allocation_logement_in.zoneIn),
- _adF_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- calcul_allocation_logement_in.nombrePersonnesAChargeIn),
- _adG_=
- situation_familiale_of_jsoo
- (calcul_allocation_logement_in.situationFamilialeIn),
- _adH_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calcul_allocation_logement_in.ressourcesMenageSansArrondiIn),
- _adI_=caml_call1(Runtime_ocaml_Runtime[33],_adH_),
- _adJ_=
- informations_calcul_a_p_l_of_j
- (calcul_allocation_logement_in.informationsCalculIn);
- return [0,
- mode_occupation_of_jsoo
- (calcul_allocation_logement_in.modeOccupationIn),
- _adJ_,
- _adI_,
- _adG_,
- _adF_,
- _adE_,
- _adD_,
- _adC_]}
- function ouverture_droits_retraite_out_(ouverture_droits_retraite_out)
- {var
- t861=
- caml_call1(Runtime_jsoo_Runtime[3],ouverture_droits_retraite_out[1]);
- return {"ageOuvertureDroitOut":t861}}
- function ouverture_droits_retraite_out_$0(ouverture_droits_retraite_out)
- {return [0,
- caml_call1
- (Runtime_jsoo_Runtime[2],
- ouverture_droits_retraite_out.ageOuvertureDroitOut)]}
- function ouverture_droits_retraite_in_t(ouverture_droits_retraite_in)
- {var
- t863=
- caml_call1(Runtime_jsoo_Runtime[5],ouverture_droits_retraite_in[1]);
- return {"dateNaissanceAssureIn":t863}}
- function ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)
- {return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- ouverture_droits_retraite_in.dateNaissanceAssureIn)]}
- function impaye_depense_logement_out_to(impaye_depense_logement_out)
- {var
- t865=
- caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_out[1]);
- return {"montantImpayeOut":t865}}
- function impaye_depense_logement_out_of(impaye_depense_logement_out)
- {var
- _adB_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- impaye_depense_logement_out.montantImpayeOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_adB_)]}
- function impaye_depense_logement_in_to_(impaye_depense_logement_in)
- {var
- t872=
- caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[6]),
- t871=depense_logement_to_jsoo(impaye_depense_logement_in[5]),
- t870=
- caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[4]),
- t869=
- caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[3]),
- t868=versement_a_to_jsoo(impaye_depense_logement_in[2]),
- t867=mode_occupation_to_jsoo(impaye_depense_logement_in[1]);
- return {"modeOccupationIn":t867,
- "aideVerseeIn":t868,
- "montantAplIn":t869,
- "montantChargesIn":t870,
- "depenseLogementIn":t871,
- "montantDetteIn":t872}}
- function impaye_depense_logement_in_of_(impaye_depense_logement_in)
- {var
- _adt_=
- caml_call1
- (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantDetteIn),
- _adu_=caml_call1(Runtime_ocaml_Runtime[33],_adt_),
- _adv_=
- depense_logement_of_jsoo(impaye_depense_logement_in.depenseLogementIn),
- _adw_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- impaye_depense_logement_in.montantChargesIn),
- _adx_=caml_call1(Runtime_ocaml_Runtime[33],_adw_),
- _ady_=
- caml_call1
- (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantAplIn),
- _adz_=caml_call1(Runtime_ocaml_Runtime[33],_ady_),
- _adA_=versement_a_of_jsoo(impaye_depense_logement_in.aideVerseeIn);
- return [0,
- mode_occupation_of_jsoo
- (impaye_depense_logement_in.modeOccupationIn),
- _adA_,
- _adz_,
- _adx_,
- _adv_,
- _adu_]}
- function calculette_aides_au_logement_o(calculette_aides_au_logement_o)
- {var _ado_=calculette_aides_au_logement_o[4];
- function _adp_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)}
- var t882=caml_js_from_array(caml_call2(Stdlib_Array[15],_adp_,_ado_));
- function t881(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var
- _adq_=caml_call1(Runtime_ocaml_Runtime[42],input),
- _adr_=caml_call1(Runtime_ocaml_Runtime[33],_adq_),
- _ads_=caml_call1(calculette_aides_au_logement_o[3],_adr_);
- return caml_call1(Runtime_ocaml_Runtime[35],_ads_)})}
- var
- t880=
- caml_call1
- (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_o[2]),
- t879=! ! calculette_aides_au_logement_o[1];
- return {"eligibiliteOut":t879,
- "aideFinaleFormuleOut":t880,
- "traitementAideFinaleOut":caml_js_wrap_meth_callback(t881),
- "coefficentsEnfantsGardeAlterneePrisEnCompteOut":t882}}
- function calculette_aides_au_logement_o$0(calculette_aides_au_logement_o)
- {var
- _adi_=
- caml_js_to_array
- (calculette_aides_au_logement_o.coefficentsEnfantsGardeAlterneePrisEnCompteOut);
- function _adj_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)}
- var
- _adk_=caml_call1(caml_call1(Stdlib_Array[15],_adj_),_adi_),
- _adl_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$7),
- _adm_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calculette_aides_au_logement_o.aideFinaleFormuleOut),
- _adn_=caml_call1(Runtime_ocaml_Runtime[33],_adm_);
- return [0,
- calculette_aides_au_logement_o.eligibiliteOut | 0,
- _adn_,
- _adl_,
- _adk_]}
- function calculette_aides_au_logement_i(calculette_aides_au_logement_i)
- {var
- t890=
- caml_call1
- (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_i[5]),
- t889=
- caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_i[4]),
- t888=informations_calcul_a_p_l_to_j(calculette_aides_au_logement_i[3]),
- t887=demandeur_to_jsoo(calculette_aides_au_logement_i[2]),
- t886=menage_to_jsoo(calculette_aides_au_logement_i[1]);
- return {"menageIn":t886,
- "demandeurIn":t887,
- "informationsCalculIn":t888,
- "dateCouranteIn":t889,
- "ressourcesMenagePrisesEnCompteIn":t890}}
- function calculette_aides_au_logement_i$0(calculette_aides_au_logement_i)
- {var
- _add_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calculette_aides_au_logement_i.ressourcesMenagePrisesEnCompteIn),
- _ade_=caml_call1(Runtime_ocaml_Runtime[33],_add_),
- _adf_=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calculette_aides_au_logement_i.dateCouranteIn),
- _adg_=
- informations_calcul_a_p_l_of_j
- (calculette_aides_au_logement_i.informationsCalculIn),
- _adh_=demandeur_of_jsoo(calculette_aides_au_logement_i.demandeurIn);
- return [0,
- menage_of_jsoo(calculette_aides_au_logement_i.menageIn),
- _adh_,
- _adg_,
- _adf_,
- _ade_]}
- function calculette_aides_au_logement_g$0(calculette_aides_au_logement_g)
- {var
- t897=
- caml_call1
- (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[2]),
- t896=! ! calculette_aides_au_logement_g[1];
- return {"eligibiliteOut":t896,"aideFinaleOut":t897}}
- function calculette_aides_au_logement_g$1(calculette_aides_au_logement_g)
- {var
- _adb_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calculette_aides_au_logement_g.aideFinaleOut),
- _adc_=caml_call1(Runtime_ocaml_Runtime[33],_adb_);
- return [0,calculette_aides_au_logement_g.eligibiliteOut | 0,_adc_]}
- function calculette_aides_au_logement_g$2(calculette_aides_au_logement_g)
- {var
- t904=
- caml_call1
- (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[5]),
- t903=
- caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_g[4]),
- t902=informations_calcul_a_p_l_to_j(calculette_aides_au_logement_g[3]),
- t901=demandeur_to_jsoo(calculette_aides_au_logement_g[2]),
- t900=menage_to_jsoo(calculette_aides_au_logement_g[1]);
- return {"menageIn":t900,
- "demandeurIn":t901,
- "informationsCalculIn":t902,
- "dateCouranteIn":t903,
- "ressourcesMenagePrisesEnCompteIn":t904}}
- function calculette_aides_au_logement_g$3(calculette_aides_au_logement_g)
- {var
- _ac8_=
- caml_call1
- (Runtime_ocaml_Runtime[42],
- calculette_aides_au_logement_g.ressourcesMenagePrisesEnCompteIn),
- _ac9_=caml_call1(Runtime_ocaml_Runtime[33],_ac8_),
- _ac__=
- caml_call1
- (Runtime_jsoo_Runtime[4],
- calculette_aides_au_logement_g.dateCouranteIn),
- _ac$_=
- informations_calcul_a_p_l_of_j
- (calculette_aides_au_logement_g.informationsCalculIn),
- _ada_=demandeur_of_jsoo(calculette_aides_au_logement_g.demandeurIn);
- return [0,
- menage_of_jsoo(calculette_aides_au_logement_g.menageIn),
- _ada_,
- _ac$_,
- _ac__,
- _ac9_]}
- function base_mensuelle_allocations_fam$6(base_mensuelle_allocations_fam)
- {var
- t910=
- caml_call1
- (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]);
- return {"montantOut":t910}}
- function base_mensuelle_allocations_fam$7(base_mensuelle_allocations_fam)
- {var
- _ac7_=
- caml_call1
- (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montantOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ac7_)]}
- function base_mensuelle_allocations_fam$8(base_mensuelle_allocations_fam)
- {var
- t912=
- caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]);
- return {"dateCouranteIn":t912}}
- function base_mensuelle_allocations_fam$9(base_mensuelle_allocations_fam)
- {return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- base_mensuelle_allocations_fam.dateCouranteIn)]}
- function smic_out_to_jsoo$0(smic_out)
- {var t914=caml_call1(Runtime_ocaml_Runtime[35],smic_out[1]);
- return {"brutHoraireOut":t914}}
- function smic_out_of_jsoo$0(smic_out)
- {var _ac6_=caml_call1(Runtime_ocaml_Runtime[42],smic_out.brutHoraireOut);
- return [0,caml_call1(Runtime_ocaml_Runtime[33],_ac6_)]}
- function smic_in_to_jsoo$0(smic_in)
- {var
- t917=collectivite_to_jsoo$0(smic_in[2]),
- t916=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]);
- return {"dateCouranteIn":t916,"residenceIn":t917}}
- function smic_in_of_jsoo$0(smic_in)
- {var _ac5_=collectivite_of_jsoo$0(smic_in.residenceIn);
- return [0,
- caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn),
- _ac5_]}
- function eligibilite_prestations_famili$0(eligibilite_prestations_famili)
- {var
- t923=! ! eligibilite_prestations_famili[4],
- t922=
- caml_call1
- (Runtime_ocaml_Runtime[48],eligibilite_prestations_famili[3]);
- function t921(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var _ac4_=enfant_prestations_familiales_$0(input);
- return !
- !
- caml_call1(eligibilite_prestations_famili[2],_ac4_)})}
- function t920(param)
- {return caml_js_wrap_meth_callback
- (function(input)
- {var _ac3_=enfant_prestations_familiales_$0(input);
- return !
- !
- caml_call1(eligibilite_prestations_famili[1],_ac3_)})}
- return {"droitOuvertOut":caml_js_wrap_meth_callback(t920),
- "conditionsHorsAgeOut":caml_js_wrap_meth_callback(t921),
- "ageL51232Out":t922,
- "regimeOutreMerL7511Out":t923}}
- function eligibilite_prestations_famili$1(eligibilite_prestations_famili)
- {var
- _ac0_=eligibilite_prestations_famili.regimeOutreMerL7511Out | 0,
- _ac1_=
- caml_call1
- (Runtime_ocaml_Runtime[49],
- eligibilite_prestations_famili.ageL51232Out),
- _ac2_=caml_call1(Stdlib[2],cst_The_function_conditions_ho$0);
- return [0,
- caml_call1(Stdlib[2],cst_The_function_droit_ouvert_$0),
- _ac2_,
- _ac1_,
- _ac0_]}
- function eligibilite_prestations_famili$2(eligibilite_prestations_famili)
- {var
- t928=collectivite_to_jsoo$0(eligibilite_prestations_famili[3]),
- t927=
- element_prestations_familiales$1(eligibilite_prestations_famili[2]),
- t926=
- caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prestations_famili[1]);
- return {"dateCouranteIn":t926,
- "prestationCouranteIn":t927,
- "residenceIn":t928}}
- function eligibilite_prestations_famili$3(eligibilite_prestations_famili)
- {var
- _acY_=
- collectivite_of_jsoo$0(eligibilite_prestations_famili.residenceIn),
- _acZ_=
- element_prestations_familiales$2
- (eligibilite_prestations_famili.prestationCouranteIn);
- return [0,
- caml_call1
- (Runtime_jsoo_Runtime[4],
- eligibilite_prestations_famili.dateCouranteIn),
- _acZ_,
- _acY_]}
- function contributions_sociales_aides_p$4
- (contributions_sociales_aides_p$1)
- {return contributions_sociales_aides_p$0
- (contributions_sociales_aides_p
- (contributions_sociales_aides_p$3
- (contributions_sociales_aides_p$1)))}
- function calcul_equivalence_loyer_minim$4
- (calcul_equivalence_loyer_minim$1)
- {return calcul_equivalence_loyer_minim$0
- (calcul_equivalence_loyer_minim
- (calcul_equivalence_loyer_minim$3
- (calcul_equivalence_loyer_minim$1)))}
- function calcul_nombre_part_logement_fo$4
- (calcul_nombre_part_logement_fo$1)
- {return calcul_nombre_part_logement_fo$0
- (calcul_nombre_part_logement_fo
- (calcul_nombre_part_logement_fo$3
- (calcul_nombre_part_logement_fo$1)))}
- function calcul_nombre_parts_accession_$4
- (calcul_nombre_parts_accession_$1)
- {return calcul_nombre_parts_accession_$0
- (calcul_nombre_parts_accession_
- (calcul_nombre_parts_accession_$3
- (calcul_nombre_parts_accession_$1)))}
- function ouverture_droits_retraite$0(ouverture_droits_retraite_in)
- {return ouverture_droits_retraite_out_
- (ouverture_droits_retraite
- (ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)))}
- function impaye_depense_logement$0(impaye_depense_logement_in)
- {return impaye_depense_logement_out_to
- (impaye_depense_logement
- (impaye_depense_logement_in_of_(impaye_depense_logement_in)))}
- function base_mensuelle_allocations_fam$10(base_mensuelle_allocations_fam)
- {return base_mensuelle_allocations_fam$6
- (base_mensuelle_allocations_fam$5
- (base_mensuelle_allocations_fam$9
- (base_mensuelle_allocations_fam)))}
- function smic$2(smic_in)
- {return smic_out_to_jsoo$0(smic$1(smic_in_of_jsoo$0(smic_in)))}
- function calcul_aide_personnalisee_loge$19
- (calcul_aide_personnalisee_loge$0)
- {return calcul_aide_personnalisee_loge$3
- (calcul_aide_personnalisee_loge
- (calcul_aide_personnalisee_loge$6
- (calcul_aide_personnalisee_loge$0)))}
- function calcul_aide_personnalisee_loge$20(calcul_aide_personnalisee_loge)
- {return calcul_aide_personnalisee_loge$7
- (calcul_aide_personnalisee_loge$0
- (calcul_aide_personnalisee_loge$10
- (calcul_aide_personnalisee_loge)))}
- function calcul_aide_personnalisee_loge$21(calcul_aide_personnalisee_loge)
- {return calcul_aide_personnalisee_loge$11
- (calcul_aide_personnalisee_loge$1
- (calcul_aide_personnalisee_loge$14
- (calcul_aide_personnalisee_loge)))}
- function eligibilite_aides_personnelle_$4
- (eligibilite_aides_personnelle_$1)
- {return eligibilite_aides_personnelle_$0
- (eligibilite_aides_personnelle_
- (eligibilite_aides_personnelle_$3
- (eligibilite_aides_personnelle_$1)))}
- function ressources_aides_personnelle_l$4
- (ressources_aides_personnelle_l$1)
- {return ressources_aides_personnelle_l$0
- (ressources_aides_personnelle_l
- (ressources_aides_personnelle_l$3
- (ressources_aides_personnelle_l$1)))}
- function eligibilite_prestations_famili$4
- (eligibilite_prestations_famili$1)
- {return eligibilite_prestations_famili$0
- (eligibilite_prestations_famili
- (eligibilite_prestations_famili$3
- (eligibilite_prestations_famili$1)))}
- function calcul_allocation_logement_loc$4
- (calcul_allocation_logement_loc$1)
- {return calcul_allocation_logement_loc$0
- (calcul_allocation_logement_loc
- (calcul_allocation_logement_loc$3
- (calcul_allocation_logement_loc$1)))}
- function calcul_allocation_logement_foy$4
- (calcul_allocation_logement_foy$1)
- {return calcul_allocation_logement_foy$0
- (calcul_allocation_logement_foy
- (calcul_allocation_logement_foy$3
- (calcul_allocation_logement_foy$1)))}
- function calcul_allocation_logement_acc$4
- (calcul_allocation_logement_acc$1)
- {return calcul_allocation_logement_acc$0
- (calcul_allocation_logement_acc
- (calcul_allocation_logement_acc$3
- (calcul_allocation_logement_acc$1)))}
- function calcul_aide_personnalisee_loge$22(calcul_aide_personnalisee_loge)
- {return calcul_aide_personnalisee_loge$15
- (calcul_aide_personnalisee_loge$2
- (calcul_aide_personnalisee_loge$18
- (calcul_aide_personnalisee_loge)))}
- function eligibilite_prime_de_demenagem$4
- (eligibilite_prime_de_demenagem$1)
- {return eligibilite_prime_de_demenagem$0
- (eligibilite_prime_de_demenagem
- (eligibilite_prime_de_demenagem$3
- (eligibilite_prime_de_demenagem$1)))}
- function eligibilite_aide_personnalisee$4
- (eligibilite_aide_personnalisee$1)
- {return eligibilite_aide_personnalisee$0
- (eligibilite_aide_personnalisee
- (eligibilite_aide_personnalisee$3
- (eligibilite_aide_personnalisee$1)))}
- function eligibilite_allocation_logemen$6
- (eligibilite_allocation_logemen$0)
- {return eligibilite_allocation_logemen$2
- (eligibilite_allocation_logemen
- (eligibilite_allocation_logemen$5
- (eligibilite_allocation_logemen$0)))}
- function calcul_allocation_logement$0(calcul_allocation_logement_in)
- {return calcul_allocation_logement_out
- (calcul_allocation_logement
- (calcul_allocation_logement_in_$0
- (calcul_allocation_logement_in)))}
- function calculette_aides_au_logement$0(calculette_aides_au_logement_i)
- {return calculette_aides_au_logement_o
- (calculette_aides_au_logement
- (calculette_aides_au_logement_i$0
- (calculette_aides_au_logement_i)))}
- function calculette_aides_au_logement_g$4
- (calculette_aides_au_logement_g$1)
- {return calculette_aides_au_logement_g$0
- (calculette_aides_au_logement_g
- (calculette_aides_au_logement_g$3
- (calculette_aides_au_logement_g$1)))}
- function t955(param)
- {return caml_js_wrap_callback(calculette_aides_au_logement_g$4)}
- function t954(param)
- {return caml_js_wrap_callback(calculette_aides_au_logement$0)}
- function t953(param)
- {return caml_js_wrap_callback(calcul_allocation_logement$0)}
- function t952(param)
- {return caml_js_wrap_callback(eligibilite_allocation_logemen$6)}
- function t951(param)
- {return caml_js_wrap_callback(eligibilite_aide_personnalisee$4)}
- function t950(param)
- {return caml_js_wrap_callback(eligibilite_prime_de_demenagem$4)}
- function t949(param)
- {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$22)}
- function t948(param)
- {return caml_js_wrap_callback(calcul_allocation_logement_acc$4)}
- function t947(param)
- {return caml_js_wrap_callback(calcul_allocation_logement_foy$4)}
- function t946(param)
- {return caml_js_wrap_callback(calcul_allocation_logement_loc$4)}
- function t945(param)
- {return caml_js_wrap_callback(eligibilite_prestations_famili$4)}
- function t944(param)
- {return caml_js_wrap_callback(ressources_aides_personnelle_l$4)}
- function t943(param)
- {return caml_js_wrap_callback(eligibilite_aides_personnelle_$4)}
- function t942(param)
- {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$21)}
- function t941(param)
- {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$20)}
- function t940(param)
- {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$19)}
- function t939(param){return caml_js_wrap_callback(smic$2)}
- function t938(param)
- {return caml_js_wrap_callback(base_mensuelle_allocations_fam$10)}
- function t937(param)
- {return caml_js_wrap_callback(impaye_depense_logement$0)}
- function t936(param)
- {return caml_js_wrap_callback(ouverture_droits_retraite$0)}
- function t935(param)
- {return caml_js_wrap_callback(calcul_nombre_parts_accession_$4)}
- function t934(param)
- {return caml_js_wrap_callback(calcul_nombre_part_logement_fo$4)}
- function t933(param)
- {return caml_js_wrap_callback(calcul_equivalence_loyer_minim$4)}
- function t932(param)
- {return caml_js_wrap_callback(contributions_sociales_aides_p$4)}
- caml_call2
- (Js_of_ocaml_Js[46],
- cst_AidesLogementLib,
- {"contributionsSocialesAidesPersonnelleLogement":
- caml_js_wrap_meth_callback(t932),
- "calculEquivalenceLoyerMinimale":caml_js_wrap_meth_callback(t933),
- "calculNombrePartLogementFoyer":caml_js_wrap_meth_callback(t934),
- "calculNombrePartsAccessionPropriete":caml_js_wrap_meth_callback(t935),
- "ouvertureDroitsRetraite":caml_js_wrap_meth_callback(t936),
- "impayeDepenseLogement":caml_js_wrap_meth_callback(t937),
- "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t938),
- "smic":caml_js_wrap_meth_callback(t939),
- "calculAidePersonnaliseeLogementLocatif":
- caml_js_wrap_meth_callback(t940),
- "calculAidePersonnaliseeLogementFoyer":caml_js_wrap_meth_callback(t941),
- "calculAidePersonnaliseeLogementAccessionPropriete":
- caml_js_wrap_meth_callback(t942),
- "eligibiliteAidesPersonnelleLogement":caml_js_wrap_meth_callback(t943),
- "ressourcesAidesPersonnelleLogement":caml_js_wrap_meth_callback(t944),
- "eligibilitePrestationsFamiliales":caml_js_wrap_meth_callback(t945),
- "calculAllocationLogementLocatif":caml_js_wrap_meth_callback(t946),
- "calculAllocationLogementFoyer":caml_js_wrap_meth_callback(t947),
- "calculAllocationLogementAccessionPropriete":
- caml_js_wrap_meth_callback(t948),
- "calculAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t949),
- "eligibilitePrimeDeDemenagement":caml_js_wrap_meth_callback(t950),
- "eligibiliteAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t951),
- "eligibiliteAllocationLogement":caml_js_wrap_meth_callback(t952),
- "calculAllocationLogement":caml_js_wrap_meth_callback(t953),
- "calculetteAidesAuLogement":caml_js_wrap_meth_callback(t954),
- "calculetteAidesAuLogementGardeAlternee":
- caml_js_wrap_meth_callback(t955)});
- var
- Law_source_Aides_logement_api_=
- [0,
- type_bailleur_to_jsoo,
- type_bailleur_of_jsoo,
- type_pret_to_jsoo,
- type_pret_of_jsoo,
- titulaire_pret_to_jsoo,
- titulaire_pret_of_jsoo,
- type_travaux_logement_d832_15_,
- type_travaux_logement_d832_15_$0,
- type_travaux_logement_r842_5_t,
- type_travaux_logement_r842_5_o,
- ameliore_par_occupant_to_jsoo,
- ameliore_par_occupant_of_jsoo,
- limite_tranche_to_jsoo,
- limite_tranche_of_jsoo,
- limite_tranche_decimal_to_jsoo,
- limite_tranche_decimal_of_jsoo,
- prestation_recue_to_jsoo,
- prestation_recue_of_jsoo,
- type_contrat_travail_to_jsoo,
- type_contrat_travail_of_jsoo,
- parent_ou_autre_to_jsoo,
- parent_ou_autre_of_jsoo,
- situation_garde_alternee_to_js,
- situation_garde_alternee_of_js,
- parente_to_jsoo,
- parente_of_jsoo,
- date_de_naissance_ou_mois_de_g,
- date_de_naissance_ou_mois_de_g$0,
- nationalite_to_jsoo,
- nationalite_of_jsoo,
- zone_d_habitation_to_jsoo,
- zone_d_habitation_of_jsoo,
- categorie_calcul_a_p_l_to_jsoo,
- categorie_calcul_a_p_l_of_jsoo,
- paiement_logement_distinct_pro,
- paiement_logement_distinct_pro$0,
- versement_a_to_jsoo,
- versement_a_of_jsoo,
- depense_logement_to_jsoo,
- depense_logement_of_jsoo,
- mode_occupation_impaye_to_jsoo,
- mode_occupation_impaye_of_jsoo,
- eligibilite_allocation_logemen$0,
- eligibilite_allocation_logemen$1,
- type_aides_personnelle_logemen,
- type_aides_personnelle_logemen$0,
- situation_familiale_to_jsoo,
- situation_familiale_of_jsoo,
- prise_en_charge_to_jsoo$0,
- prise_en_charge_of_jsoo$0,
- type_logement_foyer_to_jsoo,
- type_logement_foyer_of_jsoo,
- categorie_equivalence_loyer_al,
- categorie_equivalence_loyer_al$0,
- situation_familiale_calcul_a_p,
- situation_familiale_calcul_a_p$0,
- collectivite_to_jsoo$0,
- collectivite_of_jsoo$0,
- prise_en_charge_enfant_to_jsoo,
- prise_en_charge_enfant_of_jsoo,
- situation_obligation_scolaire_$1,
- situation_obligation_scolaire_$2,
- element_prestations_familiales$1,
- element_prestations_familiales$2,
- personne_sous_location_to_jsoo,
- personne_sous_location_of_jsoo,
- patrimoine_to_jsoo,
- patrimoine_of_jsoo,
- personne_vivant_habituellement,
- personne_vivant_habituellement$0,
- infos_changement_logement_d842,
- infos_changement_logement_d842$0,
- bailleur_to_jsoo,
- bailleur_of_jsoo,
- pret_to_jsoo,
- pret_of_jsoo,
- neuf_ou_ancien_to_jsoo,
- neuf_ou_ancien_of_jsoo,
- tranche_revenu_to_jsoo,
- tranche_revenu_of_jsoo,
- tranche_revenu_decimal_to_jsoo,
- tranche_revenu_decimal_of_jsoo,
- autre_personne_a_charge_to_jso,
- autre_personne_a_charge_of_jso,
- date_naissance_troisieme_ou_de,
- date_naissance_troisieme_ou_de$0,
- informations_calcul_a_p_l_loge,
- informations_calcul_a_p_l_loge$0,
- enfant_prestations_familiales_,
- enfant_prestations_familiales_$0,
- enfant_a_charge_to_jsoo,
- enfant_a_charge_of_jsoo,
- loue_ou_sous_loue_a_des_tiers_,
- loue_ou_sous_loue_a_des_tiers_$0,
- demandeur_to_jsoo,
- demandeur_of_jsoo,
- changement_logement_d842_4_to_,
- changement_logement_d842_4_of_,
- location_to_jsoo,
- location_of_jsoo,
- proprietaire_to_jsoo,
- proprietaire_of_jsoo,
- informations_calcul_a_p_l_acce,
- informations_calcul_a_p_l_acce$0,
- personne_a_charge_to_jsoo,
- personne_a_charge_of_jsoo,
- informations_calcul_a_p_l_loca,
- informations_calcul_a_p_l_loca$0,
- logement_foyer_to_jsoo,
- logement_foyer_of_jsoo,
- informations_calcul_a_p_l_to_j,
- informations_calcul_a_p_l_of_j,
- mode_occupation_to_jsoo,
- mode_occupation_of_jsoo,
- logement_to_jsoo,
- logement_of_jsoo,
- menage_to_jsoo,
- menage_of_jsoo,
- eligibilite_aides_personnelle_$0,
- eligibilite_aides_personnelle_$1,
- eligibilite_aides_personnelle_$2,
- eligibilite_aides_personnelle_$3,
- eligibilite_aide_personnalisee$0,
- eligibilite_aide_personnalisee$1,
- eligibilite_aide_personnalisee$2,
- eligibilite_aide_personnalisee$3,
- eligibilite_allocation_logemen$2,
- eligibilite_allocation_logemen$3,
- eligibilite_allocation_logemen$4,
- eligibilite_allocation_logemen$5,
- eligibilite_prime_de_demenagem$0,
- eligibilite_prime_de_demenagem$1,
- eligibilite_prime_de_demenagem$2,
- eligibilite_prime_de_demenagem$3,
- ressources_aides_personnelle_l$0,
- ressources_aides_personnelle_l$1,
- ressources_aides_personnelle_l$2,
- ressources_aides_personnelle_l$3,
- contributions_sociales_aides_p$0,
- contributions_sociales_aides_p$1,
- contributions_sociales_aides_p$2,
- contributions_sociales_aides_p$3,
- calcul_aide_personnalisee_loge$3,
- calcul_aide_personnalisee_loge$4,
- calcul_aide_personnalisee_loge$5,
- calcul_aide_personnalisee_loge$6,
- calcul_equivalence_loyer_minim$0,
- calcul_equivalence_loyer_minim$1,
- calcul_equivalence_loyer_minim$2,
- calcul_equivalence_loyer_minim$3,
- calcul_nombre_part_logement_fo$0,
- calcul_nombre_part_logement_fo$1,
- calcul_nombre_part_logement_fo$2,
- calcul_nombre_part_logement_fo$3,
- calcul_aide_personnalisee_loge$7,
- calcul_aide_personnalisee_loge$8,
- calcul_aide_personnalisee_loge$9,
- calcul_aide_personnalisee_loge$10,
- calcul_nombre_parts_accession_$0,
- calcul_nombre_parts_accession_$1,
- calcul_nombre_parts_accession_$2,
- calcul_nombre_parts_accession_$3,
- calcul_aide_personnalisee_loge$11,
- calcul_aide_personnalisee_loge$12,
- calcul_aide_personnalisee_loge$13,
- calcul_aide_personnalisee_loge$14,
- calcul_aide_personnalisee_loge$15,
- calcul_aide_personnalisee_loge$16,
- calcul_aide_personnalisee_loge$17,
- calcul_aide_personnalisee_loge$18,
- calcul_allocation_logement_loc$0,
- calcul_allocation_logement_loc$1,
- calcul_allocation_logement_loc$2,
- calcul_allocation_logement_loc$3,
- calcul_allocation_logement_acc$0,
- calcul_allocation_logement_acc$1,
- calcul_allocation_logement_acc$2,
- calcul_allocation_logement_acc$3,
- calcul_allocation_logement_foy$0,
- calcul_allocation_logement_foy$1,
- calcul_allocation_logement_foy$2,
- calcul_allocation_logement_foy$3,
- calcul_allocation_logement_out,
- calcul_allocation_logement_out$0,
- calcul_allocation_logement_in_,
- calcul_allocation_logement_in_$0,
- ouverture_droits_retraite_out_,
- ouverture_droits_retraite_out_$0,
- ouverture_droits_retraite_in_t,
- ouverture_droits_retraite_in_o,
- impaye_depense_logement_out_to,
- impaye_depense_logement_out_of,
- impaye_depense_logement_in_to_,
- impaye_depense_logement_in_of_,
- calculette_aides_au_logement_o,
- calculette_aides_au_logement_o$0,
- calculette_aides_au_logement_i,
- calculette_aides_au_logement_i$0,
- calculette_aides_au_logement_g$0,
- calculette_aides_au_logement_g$1,
- calculette_aides_au_logement_g$2,
- calculette_aides_au_logement_g$3,
- base_mensuelle_allocations_fam$6,
- base_mensuelle_allocations_fam$7,
- base_mensuelle_allocations_fam$8,
- base_mensuelle_allocations_fam$9,
- smic_out_to_jsoo$0,
- smic_out_of_jsoo$0,
- smic_in_to_jsoo$0,
- smic_in_of_jsoo$0,
- eligibilite_prestations_famili$0,
- eligibilite_prestations_famili$1,
- eligibilite_prestations_famili$2,
- eligibilite_prestations_famili$3,
- contributions_sociales_aides_p$4,
- calcul_equivalence_loyer_minim$4,
- calcul_nombre_part_logement_fo$4,
- calcul_nombre_parts_accession_$4,
- ouverture_droits_retraite$0,
- impaye_depense_logement$0,
- base_mensuelle_allocations_fam$10,
- smic$2,
- calcul_aide_personnalisee_loge$19,
- calcul_aide_personnalisee_loge$20,
- calcul_aide_personnalisee_loge$21,
- eligibilite_aides_personnelle_$4,
- ressources_aides_personnelle_l$4,
- eligibilite_prestations_famili$4,
- calcul_allocation_logement_loc$4,
- calcul_allocation_logement_foy$4,
- calcul_allocation_logement_acc$4,
- calcul_aide_personnalisee_loge$22,
- eligibilite_prime_de_demenagem$4,
- eligibilite_aide_personnalisee$4,
- eligibilite_allocation_logemen$6,
- calcul_allocation_logement$0,
- calculette_aides_au_logement$0,
- calculette_aides_au_logement_g$4];
- caml_register_global
- (8860,
- Law_source_Aides_logement_api_,
- "Law_source__Aides_logement_api_web");
- return}
- (globalThis));
-
-
-//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js"
-(function(globalThis)
- {"use strict";
- var
- runtime=globalThis.jsoo_runtime,
- caml_js_wrap_callback=runtime.caml_js_wrap_callback,
- caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- var
- global_data=runtime.caml_get_global_data(),
- Law_source_Allocations_familia=
- global_data.Law_source__Allocations_familiales_api_web,
- Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime,
- Law_source_Aides_logement_api_=
- global_data.Law_source__Aides_logement_api_web,
- Js_of_ocaml_Js=global_data.Js_of_ocaml__Js;
- function t4(param)
- {return caml_js_wrap_callback
- (function(calculette_aides_au_logement_g)
- {function _b_(param)
- {var
- t1=
- caml_call1
- (Law_source_Aides_logement_api_[238],
- calculette_aides_au_logement_g);
- return t1.aideFinaleOut}
- return caml_call1(Runtime_jsoo_Runtime[6],_b_)})}
- function t3(param)
- {return caml_js_wrap_callback
- (function(interface_allocations_familial)
- {function _a_(param)
- {var
- t0=
- caml_call1
- (Law_source_Allocations_familia[51],
- interface_allocations_familial);
- return t0.iMontantVerseOut}
- return caml_call1(Runtime_jsoo_Runtime[6],_a_)})}
- caml_call1
- (Js_of_ocaml_Js[47],
- {"eventsManager":Runtime_jsoo_Runtime[1],
- "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3),
- "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)});
- var Dune_exe_Api_web=[0];
- runtime.caml_register_global(12,Dune_exe_Api_web,"Dune__exe__Api_web");
- return}
- (globalThis));
-
-
-//# 1 "../../.js/stdlib/std_exit.cmo.js"
-(function(globalThis)
- {"use strict";
- var runtime=globalThis.jsoo_runtime;
- function caml_call1(f,a0)
- {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
- var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib;
- caml_call1(Stdlib[103],0);
- var Std_exit=[0];
- runtime.caml_register_global(1,Std_exit,"Std_exit");
- return}
- (globalThis));
-
-
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsImNhbWxfYXJndiIsIm1haW4iLCJhcmd2IiwiYXJnczIiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfanNfZXZhbF9zdHJpbmciLCJldmFsIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsIm1sX3pfbmVnIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJtbF96X29mX2ludCIsIm1sX3pfb2ZfaW50MzIiLCJpMzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX2ludDY0X3NoaWZ0X2xlZnQiLCJjYW1sX25vdGVxdWFsIiwibWxfel9hYnMiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIiwiY2FtbF9pc19qcyIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsIm1sX3pfc3FydCIsInVuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwibWxfel9wcm9iYWJfcHJpbWUiLCJ1bml4X21rdGltZSIsInRtIiwidG0yIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9ieXRlc19nZXQ2NCIsIm1sX3pfcmVtIiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJtbF96X211bF9vdmVyZmxvd3MiLCJtbF96X3RvX2ludCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9oYXNoX21peF9qc2J5dGVzIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfYnl0ZXNfbGVzc3RoYW4iLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9nY19xdWlja19zdGF0IiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfbWxfaW5wdXRfaW50IiwiY2FtbF9ncl9kaXNwbGF5X21vZGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N0ZF9vdXRwdXQiLCJzbGVuIiwianNfcHJpbnRfc3RkZXJyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImluZm8iLCJjYW1sX3N5c19vcGVuIiwiX3Blcm1zIiwibWxfel9nY2QiLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwiX21hZ2ljIiwiX2Jsb2NrX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsIm1sX3pfbXVsIiwibWxfel9oYW1kaXN0IiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsIml0ZW0iLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwibWxfel9sb2dhbmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm11bCIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ncl9zaWdpb19zaWduYWwiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwibWxfel9kaXZfcmVtIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX3NldF9saW5lX3dpZHRoIiwiY2FtbF9ncl9zZXRfZm9udCIsImNhbWxfZ3Jfc2V0X2NvbG9yIiwiY29udmVydCIsIm51bWJlciIsImNfc3RyIiwiY2FtbF9ncl9tb3ZldG8iLCJjYW1sX2dyX3Jlc2l6ZV93aW5kb3ciLCJjYW1sX2dyX3N0YXRlX2luaXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UiLCJidCIsImNhbWxfZ3JfbGluZXRvIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2RhdGEiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkIiwiY2FtbF9qc19mcm9tX2Jvb2wiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX2V4cDJfZmxvYXQiLCJjYW1sX2dyX2Nsb3NlX2dyYXBoIiwiY2FtbF9jcmVhdGVfc3RyaW5nIiwiY2FtbF9tZDVfc3RyaW5nIiwiY2FtbF9tZDVfY2hhbiIsImNoYW5fbGVuIiwiY2FtbF9vYmpfZHVwIiwiY2FtbF93ZWFrX2dldF9jb3B5IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwic3RyaW5nIiwianNzdHJpbmciLCJpZCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9lcGhlX2dldF9kYXRhIiwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUiLCJjYW1sX3RyYW1wb2xpbmVfcmV0dXJuIiwiY2FtbF9tbF9pc19idWZmZXJlZCIsImNhbWxfYXJyYXlfYXBwZW5kIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJtbF96X25leHRwcmltZSIsImNhbWxfanNfZXhwciIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJtbF96X3N1YiIsIm1sX3pfZmRpdiIsIm1sX3pfdG9fYml0cyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2hhc2hfdW5pdl9wYXJhbSIsImNvdW50IiwibGltaXQiLCJvYmoiLCJoYXNoX2FjY3UiLCJoYXNoX2F1eCIsImpzYnl0ZXMiLCJjYW1sX3N0cmluZ19lcXVhbCIsIm1sX3pfZGl2ZXhhY3QiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJyZV9yZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJjdXIiLCJjYW1sX3B1cmVfanNfZXhwciIsImJsaXRfbmF0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMiLCJiYTEiLCJieXRlczIiLCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIiwianNvb19jcmVhdGVfZmlsZV9leHRlcm4iLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmciLCJjYW1sX21ha2VfdmVjdCIsImluaXQiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfbWxfaW5wdXRfY2hhciIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3phcml0aF9tYXJzaGFsIiwiYmxvY2siLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwiY2FtbF9pc19wcmludGFibGUiLCJjYW1sX2VxdWFsIiwicmVfcGFydGlhbF9tYXRjaCIsImNhbWxfc3lzX3JhbmRvbV9zZWVkIiwiYnVmZiIsIm5vdyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8yIiwid2luX2hhbmRsZV9mZCIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJ3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJtbF96X2ZpdHNfbmF0aXZlaW50IiwiY2FtbF9ncl9hcmNfYXV4IiwiY3R4IiwiY3giLCJjeSIsInJ5IiwicngiLCJyb3QiLCJ4UG9zIiwieVBvcyIsInhQb3NfcHJldiIsInlQb3NfcHJldiIsInNwYWNlIiwiZGVsdGEiLCJjYW1sX2dyX2ZpbGxfYXJjIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJtbF96X29mX25hdGl2ZWludCIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJnZXQzMiIsImNhbWxfaW5wdXRfdmFsdWUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJtbF96X2ludmVydCIsIm1sX3pfcG93bSIsInozIiwiaW52IiwibWxfel9wb3dtX3NlYyIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsInVuaXhfZ210aW1lIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9zeXNfZ2V0X2NvbmZpZyIsInVuaXhfdGltZSIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX2FzaW5oX2Zsb2F0IiwibWxfel9oYXNoIiwiYWNjIiwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciIsImFiIiwiY2FtbF9tb2QiLCJjYW1sX2JhX2luaXQiLCJyZV9zdHJpbmdfbWF0Y2giLCJCaWdTdHJpbmdSZWFkZXIiLCJjYW1sX2dyX2R1bXBfaW1hZ2UiLCJjYW1sX2JhX2dldF9nZW5lcmljIiwiY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSIsImNhbWxfZm9ybWF0X2Zsb2F0IiwidG9GaXhlZCIsImRwIiwicHJlYyIsImNhbWxfbW91bnRfYXV0b2xvYWQiLCJtbF96X2VxdWFsIiwibWxfel9maXRzX2ludDY0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nIiwibWxfel9zcXJ0X3JlbSIsImRpZmYiLCJjYW1sX3N0cmluZ19sZXNzdGhhbiIsImNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuIiwiY2FtbF9kaXYiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfbWVtcHJvZl9zdGFydCIsInJhdGUiLCJzdGFja19zaXplIiwidHJhY2tlciIsIm1sX3pfcGVyZmVjdF9zcXVhcmUiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfanNfdG9fYm9vbCIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IiwibWxfel90b19uYXRpdmVpbnQiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImZzIiwiY2hhbm5lbCIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImNhbWxfcm91bmRfZmxvYXQiLCJtbF96X29mX2JpdHMiLCJiYXNlMSIsInVuaXhfc3RhdCIsInVuaXhfc3RhdF82NCIsImNhbWxfb2pzX25ld19hcnIiLCJGIiwiY29tcGxlbWVudF9uYXQiLCJtbF96X2xvZ3hvciIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zaW5oX2Zsb2F0IiwiY2FtbF9sZGV4cF9mbG9hdCIsImNhbWxfZ3Jfc3RhdGVfc2V0IiwiY2FtbF96YXJpdGhfdW5tYXJzaGFsIiwibmVnYXRlIiwibWxfel90cmFpbGluZ196ZXJvcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJsYW5kX2RpZ2l0X25hdCIsImNhbWxfaW50NjRfbW9kIiwidW5peF9yZWFkbGluayIsImNhbWxfb2JqX3NldF90YWciLCJjYW1sX2ludDMyX2Jzd2FwIiwid2luX3N0YXJ0dXAiLCJjYW1sX2JhX3NldF8zIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX3VubW91bnQiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJpbWFnZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3N0cmluZ19zZXQiLCJjYW1sX3N5c19ybWRpciIsImNhbWxfbWxfcG9zX291dCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMiLCJjYW1sX2pzX29iamVjdCIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImNhbWxfd2Vha19ibGl0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJtbF96X3RvX2ludDMyIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsInVuaXhfZ2V0cHd1aWQiLCJtbF96X2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJjYW1sX29ial90YWciLCJGdW5jdGlvbiIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm1sX3pfcHJlZCIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwibWxfel9leHRyYWN0IiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF91cGRhdGVfZHVtbXkiLCJjYW1sX2FycmF5X2ZpbGwiLCJtbF96X2luc3RhbGxfZnJhbWV0YWJsZSIsImNhbWxfc3lzX21rZGlyIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX3JlYWRfZmlsZV9jb250ZW50IiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJvcmlnaW4iLCJldmVudCIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJ6ZXJvJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwibWluX2ludCQyIiwibWF4X2ludCQyIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJsb2NmbXQiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiemVybyQ0Iiwib25lJDQiLCJpIiwiZXJhc2VfcmVsIiwicmVzdCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsInJlc3QkMyIsInJlc3QkNCIsInJlc3QkNSIsInJlc3QkNiIsInJlc3QkNyIsInR5IiwicmVzdCQ4IiwidHkxIiwicmVzdCQ5IiwicmVzdCQxMCIsInJlc3QkMTEiLCJyZXN0JDEyIiwicmVzdCQxMyIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInBhZCQwIiwicHJlYyIsInBhZCQxIiwiaWNvbnYiLCJwcmVjJDAiLCJwYWQkMiIsImljb252JDAiLCJwcmVjJDEiLCJwYWQkMyIsImljb252JDEiLCJwcmVjJDIiLCJwYWQkNCIsImljb252JDIiLCJwcmVjJDMiLCJwYWQkNSIsImZjb252IiwicGFkJDYiLCJzdHIiLCJjaHIiLCJmbXR0eSIsInBhZCQ3IiwiZm10dHkkMCIsInBhZCQ4IiwicmVzdCQxNCIsInJlc3QkMTUiLCJyZXN0JDE2IiwiZm10aW5nX2xpdCIsInJlc3QkMTciLCJmbXRpbmdfZ2VuIiwicmVzdCQxOCIsInJlc3QkMTkiLCJjaGFyX3NldCIsIndpZHRoX29wdCIsInJlc3QkMjAiLCJjb3VudGVyIiwicmVzdCQyMSIsInJlc3QkMjIiLCJpZ24iLCJyZXN0JDIzIiwiZiIsImFyaXR5IiwidiIsInIiLCJjdXIiLCJzZWVuIiwibiIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwibWF4X2ludCIsIm1pbl9pbnQiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJiIiwiYm9vbF9vZl9zdHJpbmciLCJib29sX29mX3N0cmluZ19vcHQiLCJzdHJpbmdfb2ZfaW50IiwiaW50X29mX3N0cmluZ19vcHQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsImwiLCJpJDAiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwiYXBwZW5kIiwidGwiLCJoZCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiaXRlciIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlX2luIiwiY2xvc2VfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsInBvc19pbiIsInNlZWtfaW4iLCJpbnB1dF92YWx1ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF9ieXRlIiwiaW5wdXRfY2hhciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCQwIiwic2VxMSIsInNlcTIiLCJtYXAiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwibm9uZSIsInNvbWUiLCJ2YWx1ZSIsIm8iLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDAiLCJmb2xkIiwiaXRlciQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJlcXVhbCIsImVxIiwibzAiLCJvMSIsInYxIiwidjAiLCJjb21wYXJlIiwiY21wIiwidG9fcmVzdWx0IiwidG9fbGlzdCIsInRvX3NlcSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAkMSIsInYkMCIsImZvbGQkMCIsImVxdWFsJDAiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSQwIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMiIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMSIsInIwIiwicjEiLCJjb21wYXJlJDEiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDIiLCJjb21wYXJlJDIiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsInMkMCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkMyIsImMxIiwiYzIiLCJlcXVhbCQzIiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ0IiwiY29tcGFyZSQ0IiwiaGFzaCIsIm1hdGNoJDEiLCJsZW5ndGgiLCJwYXJhbSQwIiwiY29ucyQwIiwibnRoIiwibCQwIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJwYXJhbSIsImFjY3UkMSIsImEyIiwiYTEiLCJwIiwicGFpciIsInJlc3VsdCIsInhzIiwieCQwIiwicnkiLCJyeCIsInQyIiwiaDIiLCJ0MSIsImgxIiwicmV2X3NvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwic29ydCIsInRsJDAiLCJjJDAiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJhY2N1JDIiLCJhdXgiLCJ0YWlsIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwiYWJzJDAiLCJtYXhfaW50JDAiLCJtaW5faW50JDAiLCJsb2dub3QiLCJlcXVhbCQ2IiwiY29tcGFyZSQ2IiwibWluJDEiLCJtYXgkMSIsInRvX3N0cmluZyQxIiwic3ltYm9sJDAiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJvZnMxIiwib2ZzMiIsInNlcCIsInNlcGxlbiIsImRzdCIsImlzX3NwYWNlIiwiaiIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaXNfc3BhY2UkMCIsImluZGV4X3JlYyQwIiwiaW5kZXhfcmVjX29wdCQwIiwicmluZGV4X3JlYyQwIiwicmluZGV4X3JlY19vcHQkMCIsImciLCJlcXVhbCQ5IiwiY29tcGFyZSQ5IiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwicG9zIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwibGF6eV90YWciLCJjbG9zdXJlX3RhZyIsIm9iamVjdF90YWciLCJpbmZpeF90YWciLCJmb3J3YXJkX3RhZyIsIm5vX3NjYW5fdGFnIiwiYWJzdHJhY3RfdGFnIiwic3RyaW5nX3RhZyIsImRvdWJsZV90YWciLCJkb3VibGVfYXJyYXlfdGFnIiwiY3VzdG9tX3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwibGVuZ3RoJDAiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJvMiIsInN4Iiwic3kiLCJpbml0IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsInRyaWNrbGVkb3duIiwidHJpY2tsZSIsImJ1YmJsZWRvd24iLCJidWJibGUiLCJpJDIiLCJlJDAiLCJmYXRoZXIiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInQiLCJ6ZXJvJDAiLCJvbmUkMCIsIm1pbnVzX29uZSQwIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJwaSIsImlzX2ludGVnZXIiLCJzdWNjJDAiLCJwcmVkJDAiLCJlcXVhbCQxMCIsIm1pbiQyIiwibWF4JDIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsImhhc2gkMCIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJtYWtlJDIiLCJpbml0JDMiLCJhcHBlbmQkMiIsImNvbmNhdCQzIiwiaGxlbiIsInN1YiQyIiwiY29weSQyIiwiZmlsbCQxIiwiYmxpdCQyIiwic3JjIiwic29mcyIsImRvZnMiLCJ0b19saXN0JDIiLCJvZl9saXN0JDAiLCJoIiwiaXRlciQ2IiwiaXRlcjIkMSIsIm1hcCQ3IiwibWFwMiQxIiwiaXRlcmkkMyIsIm1hcGkkMyIsImZvbGRfbGVmdCQ0IiwiZm9sZF9yaWdodCQzIiwiZXhpc3RzJDMiLCJmb3JfYWxsJDMiLCJtZW0kMSIsIm1lbV9pZWVlIiwic29ydCQwIiwic3RhYmxlX3NvcnQiLCJ0b19zZXEkNSIsInRvX3NlcWkkMiIsIm9mX3NlcSQzIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJ6ZXJvJDEiLCJvbmUkMSIsIm1pbnVzX29uZSQxIiwic3VjYyQxIiwicHJlZCQxIiwiYWJzJDEiLCJtaW5faW50JDEiLCJtYXhfaW50JDEiLCJsb2dub3QkMCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyQzIiwib2Zfc3RyaW5nX29wdCQwIiwiY29tcGFyZSQxMCIsImVxdWFsJDExIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJtaW4kMyIsIm1heCQzIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInN1Y2MkMiIsInByZWQkMiIsImFicyQyIiwibG9nbm90JDEiLCJtYXhfaW50JDMiLCJ1bnNpZ25lZF90b19pbnQkMCIsInRvX3N0cmluZyQ0Iiwib2Zfc3RyaW5nX29wdCQxIiwiY29tcGFyZSQxMSIsImVxdWFsJDEyIiwidW5zaWduZWRfY29tcGFyZSQwIiwibWluJDQiLCJtYXgkNCIsInVuc2lnbmVkX2RpdiQwIiwidW5zaWduZWRfcmVtJDAiLCJ6ZXJvJDMiLCJvbmUkMyIsIm1pbnVzX29uZSQzIiwic3VjYyQzIiwicHJlZCQzIiwiYWJzJDMiLCJtaW5faW50JDMiLCJtYXhfaW50JDQiLCJsb2dub3QkMiIsInVuc2lnbmVkX3RvX2ludCQxIiwidG9fc3RyaW5nJDUiLCJvZl9zdHJpbmdfb3B0JDIiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDEiLCJtaW4kNSIsIm1heCQ1IiwidW5zaWduZWRfZGl2JDEiLCJ1bnNpZ25lZF9yZW0kMSIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJzdGgiLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwiZnJvbV9zdHJpbmckMCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJjbWQkMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJzcGxpdCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJmb3JfYWxsIiwiZXhpc3RzIiwicHYiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNhcmRpbmFsIiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJmaW5kIiwiZmluZF9maXJzdCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJvZl9saXN0Iiwic3ViIiwibCQzIiwieDAiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJtYXBpIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwibGVuZ3RoJDEiLCJpdGVyJDciLCJmb2xkJDIiLCJ0b19zZXEkNiIsIm9mX3NlcSQ0IiwiY3JlYXRlJDEiLCJjbGVhciQwIiwiY2VsbCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQwIiwibGVuZ3RoJDIiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwicmFpc2VfdW5kZWZpbmVkIiwiZm9yY2VfbGF6eV9ibG9jayIsImJsayIsImNsb3N1cmUiLCJmb3JjZV92YWxfbGF6eV9ibG9jayIsImZvcmNlIiwibHp2IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcCQ4IiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJwZWVrJDAiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsImVtcHR5JDIiLCJpdGVyJDkiLCJzdHJtIiwiZnJvbSIsIm9mX2xpc3QkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzJDAiLCJvZl9jaGFubmVsIiwiaWFwcCIsImljb25zIiwiaXNpbmciLCJsYXBwIiwibGNvbnMiLCJsc2luZyIsInNlbXB0eSIsInNsYXp5IiwiZHVtcF9kYXRhIiwiZHVtcCIsImNyZWF0ZSQyIiwiY29udGVudHMiLCJ0b19ieXRlcyQwIiwic3ViJDMiLCJibGl0JDMiLCJudGgkMCIsImxlbmd0aCQzIiwiY2xlYXIkMSIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDAiLCJwb3MkMSIsImFkZF91dGZfMTZiZV91Y2hhciIsImhpIiwibG8iLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsImkkNyIsImN1cnJlbnQiLCJpJDgiLCJvcGVuaW5nIiwiaSQ2IiwibGltJDAiLCJpJDMiLCJzdG9wIiwiaSQ0IiwiaSQ1IiwiayQyIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDkiLCJpJDEwIiwiaSQxMSIsInRydW5jYXRlIiwidG9fc2VxJDgiLCJ0b19zZXFpJDMiLCJhZGRfc2VxJDEiLCJvZl9zZXEkNiIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsInN1Yl9mbXR0eSIsInN1Yl9mbXR0eSQwIiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwiY2hyJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQwIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwidHJhbnMiLCJyZXN0MiIsInJlc3QyJDAiLCJyZXN0MiQxIiwicmVzdDIkMiIsInJlc3QyJDMiLCJyZXN0MiQ0IiwicmVzdDIkNSIsInJlc3QyJDYiLCJyZXN0MiQ3IiwidHkyJDAiLCJyZXN0MiQ4IiwidHkyMiIsInR5MjEiLCJmbXR0eV9yZWxfZGV0IiwiZjQiLCJmMiIsInJlc3QyJDkiLCJyZXN0MiQxMCIsInJlc3QyJDExIiwicmVzdDIkMTIiLCJyZXN0MiQxMyIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwiamQiLCJkaiIsImdhIiwiYWciLCJkZSQ5IiwiZWQkOSIsImFmJDkiLCJmYSQ5IiwiZGUkMTAiLCJlZCQxMCIsImFmJDEwIiwiZmEkMTAiLCJkZSQxMSIsImVkJDExIiwiYWYkMTEiLCJmYSQxMSIsImRlJDEyIiwiZWQkMTIiLCJhZiQxMiIsImZhJDEyIiwiZGUkMTMiLCJlZCQxMyIsImFmJDEzIiwiZmEkMTMiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfY3VzdG9tIiwiYXJpdHkkMCIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwidHlfcmVzdCQwIiwicHJlY190eSQwIiwidHlfcmVzdCQxIiwicHJlY190eSQxIiwidHlfcmVzdCQyIiwicHJlY190eSQyIiwidHlfcmVzdCQzIiwicHJlY190eSQzIiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwidHkkMCIsImZtdHR5JDQiLCJmbXR0eSQ1IiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInR5cGVfZm9ybWF0X2dlbiIsImZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJmbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDMiLCJmbXQkMiIsInN1Yl9mbXR0eV9yZXN0JDQiLCJmbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQ1IiwiZm10JDMiLCJzdWJfZm10dHlfcmVzdCQ2IiwiZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNyIsImZtdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsImZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJmbXQkNSIsInN1Yl9mbXR0eV9yZXN0JDEwIiwiZm10dHlfcmVzdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTEiLCJmbXQkNiIsInN1Yl9mbXR0eV9yZXN0JDEyIiwiZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJmbXQkNyIsInN1Yl9mbXR0eV9yZXN0JDE0IiwiZm10dHlfcmVzdCQ3Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwiZm10JDgiLCJzdWJfZm10dHlfcmVzdCQxNiIsImZtdHR5X3Jlc3QkOCIsInN1YjJfZm10dHkkMSIsInN1YjFfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNyIsInN1YjJfZm10dHkkMiIsInN1YjFfZm10dHkkMCIsImZtdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJmbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxOSIsImZtdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDIwIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDIxIiwiZm10JDExIiwic3ViX2ZtdHR5X3Jlc3QkMjIiLCJmbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJmbXQkMTIiLCJzdWJfZm10dHlfcmVzdCQyNCIsImZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQyNSIsImZtdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDI2IiwiZm10X3Jlc3QiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdF9yZXN0JDIiLCJmbXRfcmVzdCQzIiwiZm10X3Jlc3QkNCIsImZtdF9yZXN0JDUiLCJwcmVjJDQiLCJmbXR0eSQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInByZWMkNiIsImZtdHR5JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicHJlYyQ4IiwiZm10dHkkOCIsImZtdF9yZXN0JDgiLCJmbXR0eSQ5IiwiZm10X3Jlc3QkOSIsImZtdHR5JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXR0eSQxMSIsImZtdF9yZXN0JDExIiwiZm10dHkkMTIiLCJmbXRfcmVzdCQxMiIsImZtdHR5JDEzIiwic3ViX2ZtdHR5MSIsImZtdF9yZXN0JDEzIiwic3ViX2ZtdHR5JDEiLCJmbXR0eSQxNCIsImZtdCQxNCIsImZtdF9yZXN0JDE0IiwiZm10dHkkMTUiLCJmbXQkMTUiLCJmbXRfcmVzdCQxNSIsImZtdHR5JDE2IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNyIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eTMiLCJmbXQzIiwiZm10MSQwIiwiZm10dHkyJDAiLCJmbXQyJDAiLCJmbXR0eTMkMCIsImZtdDMkMCIsImZtdHR5X3Jlc3QkMTMiLCJmbXRfcmVzdCQxOCIsImZtdHR5JDE4IiwiZm10JDE4IiwiZm10dHlfcmVzdCQxNCIsImZtdF9yZXN0JDE5IiwiZm10dHkkMTkiLCJmbXQkMTkiLCJmbXR0eV9yZXN0JDE1IiwiZm10X3Jlc3QkMjAiLCJmbXR0eSQyMCIsImZtdCQyMCIsInR5cGVfaWdub3JlZF9wYXJhbV9vbmUiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjEiLCJmbXQkMjEiLCJzdWJfZm10dHkkMiIsInN1Yl9mbXR0eSQzIiwiZm10dHkkMjIiLCJmbXQkMjIiLCJzdWJfZm10dHkkNCIsInR5cGVfZm9ybWF0IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDIiLCJwJDMiLCJwJDQiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsInBhcnNlX2x3b3JkIiwicGFyc2VfaW50Iiwid3N0YXJ0Iiwid2VuZCIsImJveF9uYW1lIiwibnN0YXJ0IiwibmVuZCIsImluZGVudCIsImV4cF9lbmQiLCJib3hfdHlwZSIsIm1ha2VfcGFkZGluZ19mbXRfZWJiIiwibWFrZV9wYWRwcmVjX2ZtdF9lYmIiLCJmbXRfZWJiX29mX3N0cmluZyIsImxlZ2FjeV9iZWhhdmlvciIsImZsYWciLCJsZWdhY3lfYmVoYXZpb3IkMCIsImludmFsaWRfZm9ybWF0X21lc3NhZ2UiLCJ1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQiLCJlbmRfaW5kIiwiaW52YWxpZF9mb3JtYXRfd2l0aG91dCIsImV4cGVjdGVkX2NoYXJhY3RlciIsImV4cGVjdGVkIiwiYWRkX2xpdGVyYWwiLCJsaXRfc3RhcnQiLCJzaXplIiwicGFyc2VfcG9zaXRpdmUiLCJzdHJfaW5kJDAiLCJzdHJfaW5kJDEiLCJwYXJzZV9pbnRlZ2VyIiwibmV4dF9pbmQiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBjdF9pbmQiLCJvcHRpb24iLCJzdWJmbXQiLCJjb21wdXRlX2ludF9jb252IiwicGx1cyIsInNwYWNlIiwicGx1cyQwIiwic3BhY2UkMCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2VuZCIsInN0cl9pbmQkMiIsInN1Yl9lbmQkMCIsInN0cl9pbmQkMyIsInN1Yl9lbmQkMSIsInN0cl9pbmQkNCIsInN0cl9pbmQkNSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsInBhcnNlX21hZ2ljX3NpemUiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJwYXJzZSIsInBhcnNlX2dvb2RfYnJlYWsiLCJmb3JtYXR0aW5nX2xpdCQwIiwic3RyX2luZF80Iiwic3RyX2luZF81IiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2ZtdCIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJwYXJzZV9mbGFncyIsIm1pbnVzIiwic2V0X2ZsYWciLCJuZXdfaW5kIiwicGFyc2VfYWZ0ZXJfcGFkZGluZyIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJtaW51cyQwIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJpZ25vcmVkJDIiLCJjb3VudGVyJDAiLCJpZ25vcmVkJDYiLCJpZ25vcmVkJDciLCJhZGRfcmFuZ2UiLCJmYWlsX3NpbmdsZV9wZXJjZW50IiwicGFyc2VfY2hhcl9zZXRfY29udGVudCIsInBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIkMCIsInBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIiLCJyZXZlcnNlIiwiY2hhcl9zZXQkMSIsImlnbm9yZWQkOSIsImNoYXJfZm9ybWF0IiwiZm10X3Jlc3QkMjEiLCJmbXRfcmVzdCQyMiIsInBhZCQ5IiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJwYWQkMTAiLCJmbXRfcmVzdCQyNSIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Iiwia2ZwcmludGYiLCJrYnByaW50ZiIsImlrZnByaW50ZiIsImZwcmludGYiLCJicHJpbnRmIiwiaWZwcmludGYiLCJpYnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJhc3NvYzMiLCJ5MiIsInkxIiwic3BsaXQkMSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDIiLCJ1c2FnZV9iIiwiZXJybXNnIiwiZG9jIiwic3BlYyIsImtleSIsInVzYWdlX3N0cmluZyIsInVzYWdlIiwiYm9vbF9vZl9zdHJpbmdfb3B0JDAiLCJpbnRfb2Zfc3RyaW5nX29wdCQwIiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXyIsImFsbG93X2V4cGFuZCIsImFyZ3YiLCJhbm9uZnVuIiwiaW5pdHBvcyIsImNvbnZlcnRfZXJyb3IiLCJwcm9nbmFtZSIsImZvbGxvdyQwIiwiYWN0aW9uIiwia2V5d29yZCIsIm5vX2FyZyQwIiwiZm9sbG93Iiwibm9fYXJnIiwiZ2V0X2FyZyQwIiwiZ2V0X2FyZyIsImNvbnN1bWVfYXJnJDAiLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiQwIiwidHJlYXRfYWN0aW9uIiwiZiQwIiwiZiQxIiwiciQxIiwiZiQyIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsInRyaW0iLCJmaWxlIiwid29yZHMiLCJzdGFzaCIsIndvcmQiLCJyZWFkX2FyZyIsInJlYWRfYXJnMCIsIndyaXRlX2F1eCIsImFyZ3MiLCJ3cml0ZV9hcmciLCJ3cml0ZV9hcmcwIiwicHJpbnRlcnMiLCJmaWVsZCIsIm90aGVyX2ZpZWxkcyIsInVzZV9wcmludGVycyIsImNvbnYiLCJ0b19zdHJpbmdfZGVmYXVsdCIsImNoYXIkMCIsImxpbmUiLCJjaGFyJDEiLCJsaW5lJDAiLCJmaWxlJDAiLCJjaGFyJDIiLCJsaW5lJDEiLCJmaWxlJDEiLCJjb25zdHJ1Y3RvciIsInRvX3N0cmluZyQ2IiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQwIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImZsaXAiLCJuZWdhdGUiLCJwcm90ZWN0IiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4iLCJ3b3JrX2J0IiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJjcmVhdGVfYWxhcm0iLCJkZWxldGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImZpbGVuYW1lIiwib3V0cHV0JDAiLCJkaWdlc3QiLCJpbnB1dCQwIiwiY2hhcl9oZXgiLCJ0b19oZXgiLCJmcm9tX2hleCIsImRpZ2l0IiwibmV3X3N0YXRlIiwiYXNzaWduIiwic3QxIiwic3QyIiwiZnVsbF9pbml0Iiwic2VlZCIsInNlZWQkMCIsIm1ha2UkMyIsIm1ha2Vfc2VsZl9pbml0IiwiY29weSQ1IiwiYml0cyIsImN1cnZhbCIsIm5ld3ZhbCIsIm5ld3ZhbDMwIiwiaW50YXV4IiwiaW50JDAiLCJib3VuZCIsImZ1bGxfaW50IiwiYjEiLCJiMiIsImJwb3MiLCJiMyIsImJwb3MkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsImluaXQkNCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNsZWFyJDIiLCJyZXNldCQwIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJjb3B5JDYiLCJsZW5ndGgkNCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJjZWxsJDAiLCJuaWR4IiwibWF0Y2giLCJtYXRjaCQwIiwicmVzaXplJDAiLCJvc2l6ZSIsIml0ZXIkMTAiLCJkb19idWNrZXQiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJmb2xkJDQiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRvX3NlcSQ5IiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2FsbCIsImZpbmRfaW5fYnVja2V0IiwicmVwbGFjZSIsInJlcGxhY2Vfc2VxIiwiY29weSIsInN6IiwiaGFzaF9wYXJhbSIsInNlZWRlZF9oYXNoIiwiYWRkJDAiLCJmaW5kJDAiLCJmaW5kX29wdCQxIiwiZmluZF9hbGwkMCIsIm1lbSQyIiwiYWRkX3NlcSQyIiwib2Zfc2VxJDciLCJyZWJ1aWxkIiwid2Vha19jcmVhdGUiLCJsZW5ndGgkNSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0JDAiLCJzZXQkMCIsImdldCQxIiwiZ2V0X2NvcHkiLCJjaGVjayQwIiwiYmxpdCQ0IiwiZmlsbCQyIiwiYXIiLCJlbXB0eWJ1Y2tldCIsImdldF9pbmRleCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImluZGV4IiwiYnVja2V0JDAiLCJoYXNoZXMiLCJuZXdzeiIsIm5ld2J1Y2tldCQwIiwibmV3aGFzaGVzIiwiaGJ1Y2tldCIsInByZXZfbGVuIiwibGl2ZSIsImokMiIsIm5ld2J1Y2tldCIsIm5ld3QiLCJvYiIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsImlkJDAiLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX2xpbmUiLCJicmVha19zYW1lX2xpbmUiLCJmb3JtYXRfcHBfdG9rZW4iLCJzaXplJDAiLCJ0YWJzIiwiYWRkX3RhYiIsImxzIiwidGFnX25hbWUiLCJtYXJrZXIiLCJicmVha3MiLCJmaXRzIiwib2ZmIiwiYm94X3R5cGUkMCIsIm9mZiQwIiwiaW5zZXJ0aW9uX3BvaW50IiwidGFicyQwIiwiZmlyc3QiLCJoZWFkIiwidGFiIiwib2ZmJDEiLCJpbnNlcnRpb25fcG9pbnQkMCIsIndpZHRoJDIiLCJib3hfdHlwZSQxIiwidGJveCIsInRhZ19uYW1lJDAiLCJtYXJrZXIkMCIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJlbnF1ZXVlX3N0cmluZ19hcyIsImluaXRpYWxpemVfc2Nhbl9zdGFjayIsInN0YWNrIiwicXVldWVfZWxlbSIsInNldF9zaXplIiwibGVmdF90b3RhbCIsInNjYW5fcHVzaCIsImVsZW0iLCJwcF9vcGVuX2JveF9nZW4iLCJicl90eSIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9vcGVuX3RhZyIsInBwX2Nsb3NlX3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfaW5kZW50IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl90YWciLCJjbG9zZV90YWciLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9zdHJpbmckMCIsInByaW50X2J5dGVzJDAiLCJwcmludF9pbnQkMCIsInByaW50X2Zsb2F0JDAiLCJwcmludF9jaGFyJDAiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUkMCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2xpc3QiLCJwcF92Iiwib3B0JDAiLCJwcF9zZXAiLCJ2cyIsIm9wdCQxIiwicHBfcHJpbnRfc2VxIiwic2VxJDEiLCJzZXEkMiIsInBwX3ByaW50X3RleHQiLCJwcF9wcmludF9vcHRpb24iLCJwcF9wcmludF9yZXN1bHQiLCJwcF9wcmludF9laXRoZXIiLCJjb21wdXRlX3RhZyIsInRhZ19hY2MiLCJvdXRwdXRfZm9ybWF0dGluZ19saXQiLCJvdXRwdXRfYWNjJDAiLCJidHkiLCJwJDUiLCJwJDYiLCJzdHJwdXRfYWNjJDAiLCJzaXplJDEiLCJrZnByaW50ZiQwIiwiaWtmcHJpbnRmJDAiLCJpZnByaW50ZiQwIiwiZnByaW50ZiQwIiwicHJpbnRmJDAiLCJlcHJpbnRmJDAiLCJrZHByaW50ZiIsImRwcmludGYiLCJrcHJpbnRmIiwic3ByaW50ZiQwIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwicHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1IiwicHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1Iiwic2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiYnByaW50ZiQwIiwicHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwic3RyaW5naWZ5IiwicHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZnVucyIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsInByaW50X29wZW5fdGFnIiwicHJpbnRfY2xvc2VfdGFnIiwic2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwicmVzZXRfdG9rZW4iLCJpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciIsInRva2VuX3N0cmluZyIsInRva2VuX2J1ZmZlciIsInNraXBfY2hhciIsImlnbm9yZV9jaGFyIiwic3RvcmVfY2hhciIsImRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUiLCJjcmVhdGUkNCIsImluYW1lIiwiZnJvbV9zdHJpbmckMSIsImZyb21fZnVuY3Rpb24kMCIsInNjYW5fY2xvc2VfYXRfZW5kIiwic2Nhbl9yYWlzZV9hdF9lbmQiLCJmcm9tX2ljIiwic2Nhbl9jbG9zZV9pYyIsImVvZiIsInN0ZGliIiwib3Blbl9pbl9maWxlIiwiZnJvbV9maWxlIiwiZnJvbV9maWxlX2JpbiIsImZyb21fY2hhbm5lbCQwIiwiY2xvc2VfaW4kMCIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsInJlc3QkMjYiLCJhcmdfcmVzdCIsImtzY2FuZiIsImVmIiwiYXBwbHkiLCJhcmdzJDAiLCJleGMiLCJic2NhbmYiLCJrc3NjYW5mIiwic3NjYW5mIiwic2NhbmYiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsImtmc2NhbmYiLCJmc2NhbmYiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsInBhcmFtcyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJ0YWciLCJjb21wYXJlJDEzIiwiY29tcGFyZSQxNCIsImNvbXBhcmUkMTUiLCJkdW1teV90YWJsZSIsInRhYmxlX2NvdW50IiwiZHVtbXlfbWV0IiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsInJlc2l6ZSQxIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJ0b19saXN0JDMiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld19zbG90IiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSQwIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInRhYmxlcyQyIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwiY2xvJDAiLCJuJDIiLCJuJDMiLCJuJDQiLCJuJDUiLCJuJDYiLCJ4JDMiLCJuJDciLCJ4JDQiLCJuJDgiLCJuJDkiLCJ4JDUiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQ5IiwibiQxMSIsIngkNyIsIm4kMTIiLCJ4JDgiLCJuJDEzIiwibiQxNCIsImUkMyIsIm4kMTUiLCJtJDIiLCJ4JDkiLCJtJDMiLCJuJDE2IiwibSQ0IiwiZSQ0IiwibiQxNyIsIm0kNSIsIm4kMTgiLCJzdGF0cyQwIiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsImNvbW1lbnQiLCJlc2NhcGUiLCJlbmRfZXhwb25lbnRfcGFydCIsImV4cG9uZW50X3BhcnQiLCJudW1iZXIiLCJpZGVudDIiLCJuZWdfbnVtYmVyIiwibmV4dF90b2tlbiQwIiwibWF5YmVfY29tbWVudCIsIm5leHRfdG9rZW4iLCJoa2V5IiwiY2xlYW4iLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwicmVwbGFjZV9idWNrZXQiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImNyZWF0ZSQ1IiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImNyZWF0ZSQ2IiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMiIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiY3JlYXRlJDciLCJsZW5ndGgkNiIsImdldF9rZXkkMSIsImdldF9rZXlfY29weSQxIiwic2V0X2tleSQxIiwidW5zZXRfa2V5JDEiLCJjaGVja19rZXkkMSIsImJsaXRfa2V5JDEiLCJnZXRfZGF0YSQzIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSQwIiwiYWRkX2JzIiwibG9vcCQwIiwibG9vcF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY29uY2F0JDQiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJwcm5nJDAiLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsInRyeV9uYW1lIiwiY291bnRlciQxIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJhZGQkMSIsInN1YiQ0IiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJpbnQzMiQxIiwiaW50NjQkMSIsImludCQyIiwibmF0aXZlaW50JDEiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImluaXQkNSIsImxheW91dCIsImRpbXMiLCJkbGVuIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSQ4IiwiZ2V0JDIiLCJzZXQkMSIsInNpemVfaW5fYnl0ZXMkMCIsIm9mX3ZhbHVlIiwiY3JlYXRlJDkiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkNiIsIm9mX2FycmF5IiwiYmEiLCJjcmVhdGUkMTAiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkNyIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMTEiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDgiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwieW9qc29uX29mX3NvdXJjZV9wb3NpdGlvbiIsInZfbGF3X2hlYWRpbmdzIiwidl9lbmRfY29sdW1uIiwidl9lbmRfbGluZSIsInZfc3RhcnRfY29sdW1uIiwidl9zdGFydF9saW5lIiwidl9maWxlbmFtZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImFyZyQxIiwiYm5kcyQxIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwibW9uZXlfb2ZfY2VudHNfc3RyaW5nIiwiY2VudHMiLCJtb25leV9vZl91bml0c19pbnQiLCJ1bml0cyIsIm1vbmV5X29mX2NlbnRzX2ludGVnZXIiLCJtb25leV90b19mbG9hdCIsIm0iLCJtb25leV9vZl9kZWNpbWFsIiwiZCIsIm1vbmV5X3RvX3N0cmluZyIsIm1vbmV5X3RvX2NlbnRzIiwibW9uZXlfcm91bmQiLCJkZWNpbWFsX29mX3N0cmluZyIsImRlY2ltYWxfdG9fZmxvYXQiLCJkZWNpbWFsX29mX2Zsb2F0IiwiZGVjaW1hbF9vZl9pbnRlZ2VyIiwiZGVjaW1hbF90b19zdHJpbmciLCJtYXhfcHJlY19kaWdpdHMiLCJpIiwic2lnbiIsIm4iLCJpbnRfcGFydCIsIm4kMCIsImRpZ2l0cyIsImxlYWRpbmdfemVyb2VzIiwiZGlnaXQiLCJudW1fbGVhZGluZ196ZXJvZXMiLCJpJDAiLCJmbXQiLCJkZWNpbWFsX3JvdW5kIiwicSIsImRlY2ltYWxfb2ZfbW9uZXkiLCJpbnRlZ2VyX29mX3N0cmluZyIsInMiLCJpbnRlZ2VyX3RvX3N0cmluZyIsImludGVnZXJfdG9faW50IiwiaW50ZWdlcl9vZl9pbnQiLCJpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIiwiZSIsImludGVnZXJfbG9nMiIsInllYXJfb2ZfZGF0ZSIsIm1vbnRoX251bWJlcl9vZl9kYXRlIiwiZGF5X29mX21vbnRoX29mX2RhdGUiLCJkYXRlX29mX251bWJlcnMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJkYXRlX3RvX3N0cmluZyIsImZpcnN0X2RheV9vZl9tb250aCIsImxhc3RfZGF5X29mX21vbnRoIiwiZHVyYXRpb25fb2ZfbnVtYmVycyIsImR1cmF0aW9uX3RvX3N0cmluZyIsInoiLCJ5IiwieCIsImEiLCJ0b19wcmludCIsImwiLCJkdXJhdGlvbl90b195ZWFyc19tb250aHNfZGF5cyIsInlvanNvbl9vZl9ydW50aW1lX3ZhbHVlIiwidjAkNCIsInYwJDUiLCJ2MCQ2IiwidjAiLCJ2MCQ3IiwidjAkMCIsInYwJDgiLCJ2MCQxIiwidjAkOSIsInYwJDIiLCJ2MCQxMCIsInYwJDMiLCJ2MSIsInYwJDExIiwidjAkMTIiLCJ2MSQwIiwidjAkMTMiLCJ2MCQxNCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ0IiwidjAkMTciLCJ2MCQxOCIsInVuZW1iZWRkYWJsZSIsImVtYmVkX3VuaXQiLCJlbWJlZF9ib29sIiwiZW1iZWRfbW9uZXkiLCJlbWJlZF9pbnRlZ2VyIiwiZW1iZWRfZGVjaW1hbCIsImVtYmVkX2RhdGUiLCJlbWJlZF9kdXJhdGlvbiIsImVtYmVkX2FycmF5IiwiZiIsInlvanNvbl9vZl9pbmZvcm1hdGlvbiIsInYiLCJ5b2pzb25fb2ZfdmFyX2RlZiIsInZfZnVuX2NhbGxzIiwidl92YWx1ZSIsInZfbmFtZSIsInZfcG9zIiwieW9qc29uX29mX2Z1bl9jYWxsIiwidl9vdXRwdXQiLCJ2X2JvZHkiLCJ2X2lucHV0Iiwidl9mdW5fbmFtZSIsInlvanNvbl9vZl9ldmVudCIsInZfaW5wdXRzIiwibG9nX3JlZiIsInJlc2V0X2xvZyIsInJldHJpZXZlX2xvZyIsImxvZ19iZWdpbl9jYWxsIiwiaW5mbyIsImxvZ19lbmRfY2FsbCIsImxvZ192YXJpYWJsZV9kZWZpbml0aW9uIiwiZW1iZWQiLCJsb2dfZGVjaXNpb25fdGFrZW4iLCJwb3MiLCJwcF9ldmVudHMiLCJvcHQiLCJwcGYiLCJldmVudHMiLCJzdGgiLCJpc19maXJzdF9jYWxsIiwiZm9ybWF0X3Zhcl9kZWYiLCJ2YXIkMCIsImZvcm1hdF9wb3Nfb3B0IiwiZm9ybWF0X3ZhbHVlIiwiZm9ybWF0X3Zhcl9kZWZzIiwiZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMiLCJ2YXJfd2l0aF9mdW4iLCJmdW5fY2FsbCIsImZvcm1hdF9ldmVudCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsIm5hbWUiLCJhdHRycyIsIm5hbWUkMCIsInZhbHVlIiwiZWx0cyIsInZhcl9kZWZfd2l0aF9mdW4iLCJvdXRwdXQiLCJib2R5IiwiaW5wdXQiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsInJlc3QiLCJib2R5X2N0eCIsInBhcnNlX2V2ZW50cyIsImJvZHlfcmV2IiwicmVzdCQwIiwidmFyX2RlZiIsIm91dHB1dCQwIiwiY3R4IiwiY3R4JDAiLCJ2YXJfbmFtZSIsImxzJDAiLCJjdHgkMSIsInJlc3QkMSIsImN0eCQyIiwiaW5mb3MkMCIsInJlc3QkMiIsImN0eCQzIiwicmVzdCQzIiwidmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSIsImxzIiwiY3R4JDQiLCJpbmZvcyQxIiwicmF3X2V2ZW50cyQwIiwiZnVuX2NhbGxzIiwicmVzdCQ0IiwiaW5mb3MkMiIsImZ1bl9jYWxsJDAiLCJmdW5fY2FsbHMkMSIsImZ1bl9jYWxscyQwIiwicmVzdCQ2IiwidmFsdWUkMCIsIm5hbWUkMiIsInZhcl9jb21wIiwicmVzdCQ1IiwiY3R4JDYiLCJjdHgkNSIsIm1zZyIsImhhbmRsZV9kZWZhdWx0IiwiZXhjZXB0aW9ucyIsImp1c3QiLCJjb25zIiwiYWNjIiwiZXhjZXB0IiwibmV3X3ZhbCIsImhhbmRsZV9kZWZhdWx0X29wdCIsImIiLCJub19pbnB1dCIsInN5bWJvbCIsImkxIiwiaTIiLCJpMV9hYnMiLCJpMl9hYnMiLCJzaWduX2ludCIsInJhdF9yZXN1bHQiLCJyZW1haW5kZXIiLCJyZXMiLCJzeW1ib2wkMCIsIm0xIiwibTIiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJkMSIsImQyIiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4IiwibmJfZGF5MSIsIm5iX2RheTIiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJjb21wYXJlX3BlcmlvZHMiLCJwMSIsInAyIiwicDFfZGF5cyIsInAyX2RheXMiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9sZW5ndGgiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwibnVsbCIsInVuZGVmaW5lZCIsImpzb29fZXhwb3J0cyIsImV2ZW50IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX28iLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9vdXQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX28iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9zbWljX291dCIsImVtYmVkX3NtaWNfaW4iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMCIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwIiwiYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIiwiZW5mYW50X2xlX3BsdXNfYWdlIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW5mYW50cyIsImFjYyIsIml0ZW0iLCJsZV9wbHVzX2FnZSIsInNtaWMiLCJzbWljX2luIiwiZGF0ZV9jb3VyYW50ZSIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJwYXJhbSIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnQiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJub21icmVfbW95ZW5fZW5mYW50cyIsImF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZSQwIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIiwiaV9kYXRlX2NvdXJhbnRlIiwiaV9lbmZhbnRzIiwiaV9yZXNzb3VyY2VzX21lbmFnZSIsImlfcmVzaWRlbmNlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlJDAiLCJpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9uIiwiaV9tb250YW50X3ZlcnNlIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28iLCJhcmciLCJhcmckMCIsImFyZyQxIiwiYXJnJDIiLCJhcmckMyIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlIiwiY29ucyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUiLCJwcmlzZV9lbl9jb21wdGVfdG9fanNvbyIsInByaXNlX2VuX2NvbXB0ZV9vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImFyZyQ0IiwiYXJnJDUiLCJhcmckNiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28iLCJhcmckNyIsImNvbGxlY3Rpdml0ZV9vZl9qc29vIiwiY29sbGVjdGl2aXRlIiwiZW5mYW50X2VudHJlZV90b19qc29vIiwiZW5mYW50X2VudHJlZSIsImVuZmFudF9lbnRyZWVfb2ZfanNvbyIsImVuZmFudF90b19qc29vIiwiZW5mYW50X29mX2pzb28iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF90b18iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCIsImlucHV0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0X3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IiwiZW5mYW50X2xlX3BsdXNfYWdlX291dF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvXyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwic21pY19vdXRfdG9fanNvbyIsInNtaWNfb3V0Iiwic21pY19vdXRfb2ZfanNvbyIsInNtaWNfaW5fdG9fanNvbyIsInNtaWNfaW5fb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwic21pYyQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkNCIsImVtYmVkX3R5cGVfYmFpbGxldXIiLCJlbWJlZF90eXBlX3ByZXQiLCJlbWJlZF90aXR1bGFpcmVfcHJldCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kOCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yOCIsImVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImVtYmVkX2xpbWl0ZV90cmFuY2hlIiwiZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsImVtYmVkX3ByZXN0YXRpb25fcmVjdWUiLCJlbWJlZF90eXBlX2NvbnRyYXRfdHJhdmFpbCIsImVtYmVkX3BhcmVudF9vdV9hdXRyZSIsImVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsImVtYmVkX3BhcmVudGUiLCJlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2kiLCJlbWJlZF9uYXRpb25hbGl0ZSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX3BhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbiIsImVtYmVkX3ZlcnNlbWVudF9hIiwiZW1iZWRfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wiLCJlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlJDAiLCJlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xvIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjIiwiZW1iZWRfY29sbGVjdGl2aXRlJDAiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50IiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvJDAiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkkMCIsImVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJlbWJlZF9wYXRyaW1vaW5lIiwiZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsIiwiZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVuIiwiZW1iZWRfYmFpbGxldXIiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wXyIsImVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbCIsImVtYmVkX2VuZmFudF9hX2NoYXJnZSIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfJDAiLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wXyQxIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF8kMiIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4iLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sJDEiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0iLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0kMCIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiQwIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMCIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQyIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMyIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDUiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQzIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDQiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ2IiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0IiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0JDAiLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF8iLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF8kMCIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQwIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQxIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDIiLCJlbWJlZF9zbWljX291dCQwIiwiZW1iZWRfc21pY19pbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AiLCJleG9uZXJlX2NzZyIsInRhdXhfY3JkcyIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiIsImRhdGVfbmFpc3NhbmNlX2Fzc3VyZSIsImFnZV9vdXZlcnR1cmVfZHJvaXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIiwibW9kZV9vY2N1cGF0aW9uIiwiYWlkZV92ZXJzZWUiLCJtb250YW50X2FwbCIsIm1vbnRhbnRfY2hhcmdlcyIsImRlcGVuc2VfbG9nZW1lbnQiLCJtb250YW50X2RldHRlIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImRlcGVuc2VfbG9nZW1lbnRfYnJ1dGUiLCJ0b3RhbF9lY2hlYW5jZXMiLCJtZW5zdWFsaXRlIiwibG95ZXIiLCJ0b3RhbCIsIm1vbnRhbnRfbG95ZXIiLCJkZXBlbnNlX2xvZ2VtZW50X25ldHRlIiwiZWNoZWFuY2VfcHJldF9icnV0ZSIsIm1lbnN1YWxpdGVfYnJ1dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImxveWVyX2JydXQiLCJsb3llcl9uZXQiLCJzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWUiLCJtb250YW50X2ltcGF5ZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ1Iiwic21pYyQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlIiwibG95ZXJfcHJpbmNpcGFsIiwiYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuIiwiem9uZSIsImxvZ2VtZW50X2VzdF9jaGFtYnJlIiwiYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlIiwidHlwZV9haWRlIiwiY29sb2NhdGlvbiIsInJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlIiwiZnJhY3Rpb25fbDgzMl8zIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2IiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0IiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9uIiwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUiLCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTciLCJsb3llcl9yZWZlcmVuY2UiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2IiwibG9nZW1lbnRfZXN0X2NoYW1icmUkMCIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSQwIiwiY29sb2NhdGlvbiQwIiwicGxhZm9uZF9sb3llcl9kODIzXzE2XzIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgiLCJwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTYiLCJwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2IiwibG95ZXJfZWxpZ2libGUiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWUiLCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlIiwicmFwcG9ydF9sb3llcnMiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWIiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Fycm9uZGkiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGkiLCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50IiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInJlZGV2YW5jZSIsImNvZWZmaWNpZW50X3JfZDgzMl8yNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjQiLCJsb2dlbWVudF9mb3llciIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSQwIiwicGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21iIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzIiwiZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1JDAiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW0iLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgkMSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxIiwibWVuc3VhbGl0ZV9wcmluY2lwYWxlIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50IiwiZGF0ZV9zaWduYXR1cmVfcHJldCIsImxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbiIsImRhdGVfZW50cmVlX2xvZ2VtZW50IiwiY29wcm9wcmlldGUiLCJzaXR1YXRpb25fcjgyMl8xMV8xM18xNyIsInR5cGVfcHJldCIsImFuY2llbm5ldGVfbG9nZW1lbnQiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTAiLCJtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwIiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDAiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEiLCJ0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzEiLCJ0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzEiLCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDEiLCJjb3Byb3ByaWV0ZSQwIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50XyIsInNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGUiLCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXQiLCJzZXVpbF9sODIyXzVfcGF0cmltb2luZSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlIiwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudCIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbiIsInBlcnNvbm5lIiwiY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8kMCIsInBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyIiwiY29uZGl0aW9uX25hdGlvbmFsaXRlIiwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1IiwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl8xIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUkMCIsInBhcnRzIiwicGFydHMkMCIsInBhcnRzJDEiLCJwYXJ0cyQyIiwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImFnZV9sMTYxXzE3XzJfc2VjdSIsInByZXN0YXRpb24iLCJhY2MkMCIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCQwIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlX2xvZ2VtZW50JDAiLCJlbGlnaWJpbGl0ZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lX2FfY2hhcmdlIiwicGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jIiwiY29lZmYiLCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGUiLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXMiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJyZXNzb3VyY2VzX2RlbWFuZGV1ciIsInJlc3NvdXJjZXNfY29uam9pbnQiLCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW4iLCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXUiLCJjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW4iLCJwZXJzb25uZXNfYV9jaGFyZ2UiLCJzaXR1YXRpb25fZmFtaWxpYWxlIiwiY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtIiwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXMiLCJkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXQiLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8iLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzgiLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzciLCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIiLCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGEiLCJkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlcyQwIiwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jIiwibG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtIiwiaW5mb3MiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95IiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNSIsIm1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlXyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQwIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDEiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQzIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDQiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ2IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDciLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyIsImVxdWl2YWxlbmNlX2xveWVyIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDIiLCJzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWciLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDIkMCIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzYiLCJzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMiIsImluZm9ybWF0aW9uc19jYWxjdWwiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X21lbnN1YSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfdCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfcyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2xvY2FsXyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NvcHJvcCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdCQwIiwiYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfem9uZSIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfcCIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FuY2llbiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfYyIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FpZGVfZiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYSIsImxvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzXyIsImxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVycyIsImxvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZiIsImxvZ2VtZW50X2ZveWVyX2RvdF96b25lIiwibG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFuIiwibG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMiIsImxvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYSIsImxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZSIsImxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50XyIsImxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbCIsImxvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXyIsImxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlXyIsImxvY2F0aWZfZG90X2RhdGVfY291cmFudGUiLCJsb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2EiLCJsb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWwiLCJsb2NhdGlmX2RvdF96b25lIiwibG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1iIiwibG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfIiwibG9jYXRpZl9kb3RfdHlwZV9haWRlIiwibG9jYXRpZl9kb3RfY29sb2NhdGlvbiIsImxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zbyIsImxvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bCIsImxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maSIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSIsImRhdGVfZW1tZW5hZ2VtZW50IiwiZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50IiwiZGVsYWlfYXByZXNfZW1tZW5hZ2VtZW50X2w4MjNfIiwiY29uZGl0aW9uX3JhbmdfZW5mYW50IiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RlbWFuZGV1ciIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2VsaWdpYmlsaXQiLCJkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2UiLCJkYXRlX25haXNzYW5jZSIsImNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudCIsInBsYWZvbmRfZDgyM18yMiIsIm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82IiwicHJvcHJpZXRlIiwicHJvcHJpZXRlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcHJldCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfYyIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQwIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpIiwibG9jYXRpb24iLCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIkMCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiIsImJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbCIsImR1cmVlX2w4NDFfMV8zIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDEiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMCIsInByb3ByaWV0YWlyZSIsImNvbmRpdGlvbl9sb2dlbWVudCIsImVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdSIsImRhdGVfbWFyaWFnZSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQxIiwiZWxpZ2liaWxpdGVfbDg0MV8yIiwiZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiIsImFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NoYXJnZSIsImxvZ2VtZW50X2ZveWVyX2RvdF9jYXRlZ29yaWVfZSIsImxvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kOCIsImxvY2F0aWZfZG90X2NoYW5nZW1lbnRfbG9nZW1lbiIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMiIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQzIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDQiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ2IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ4IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ4IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGUiLCJjYWxjdWxldHRlX2RvdF9tZW5hZ2UiLCJjYWxjdWxldHRlX2RvdF9kZW1hbmRldXIiLCJjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2EiLCJjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlIiwiY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hIiwiY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGUiLCJjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3IiLCJjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGUiLCJjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmYiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMCIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQxIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDIiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMyIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQ0IiwiYWlkZV9maW5hbGUiLCJ0eXBlX2JhaWxsZXVyX3RvX2pzb28iLCJ0eXBlX2JhaWxsZXVyX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyIiwidHlwZV9wcmV0X3RvX2pzb28iLCJ0eXBlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0X3RvX2pzb28iLCJ0aXR1bGFpcmVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXQiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8kMCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV90b19qc29vIiwibGltaXRlX3RyYW5jaGVfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsInByZXN0YXRpb25fcmVjdWVfdG9fanNvbyIsInByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyIsInByZXN0YXRpb25fcmVjdWUiLCJ0eXBlX2NvbnRyYXRfdHJhdmFpbF90b19qc29vIiwidHlwZV9jb250cmF0X3RyYXZhaWxfb2ZfanNvbyIsInR5cGVfY29udHJhdF90cmF2YWlsIiwicGFyZW50X291X2F1dHJlX3RvX2pzb28iLCJwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyIsInBhcmVudF9vdV9hdXRyZSIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsInBhcmVudGVfdG9fanNvbyIsInBhcmVudGVfb2ZfanNvbyIsInBhcmVudGUiLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ciLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ckMCIsIm5hdGlvbmFsaXRlX3RvX2pzb28iLCJuYXRpb25hbGl0ZV9vZl9qc29vIiwibmF0aW9uYWxpdGUiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyQwIiwidmVyc2VtZW50X2FfdG9fanNvbyIsInZlcnNlbWVudF9hX29mX2pzb28iLCJ2ZXJzZW1lbnRfYSIsImRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyIsImRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvbyIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vJDAiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJ0eXBlX2xvZ2VtZW50X2ZveWVyIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQiLCJwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnQkMCIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiQwIiwiYmFpbGxldXJfdG9fanNvbyIsImJhaWxsZXVyIiwiYmFpbGxldXJfb2ZfanNvbyIsInByZXRfdG9fanNvbyIsInByZXQiLCJwcmV0X29mX2pzb28iLCJuZXVmX291X2FuY2llbl90b19qc29vIiwibmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuIiwidHJhbmNoZV9yZXZlbnVfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51IiwidHJhbmNoZV9yZXZlbnVfb2ZfanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsX29mX2pzb28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZV90b19qc28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzbyIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSQwIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlJDAiLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc18iLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyQwIiwiZW5mYW50X2FfY2hhcmdlX3RvX2pzb28iLCJlbmZhbnRfYV9jaGFyZ2UiLCJlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJkZW1hbmRldXJfdG9fanNvbyIsImRlbWFuZGV1cl9vZl9qc29vIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwibG9jYXRpb25fdG9fanNvbyIsImxvY2F0aW9uX29mX2pzb28iLCJwcm9wcmlldGFpcmVfdG9fanNvbyIsInByb3ByaWV0YWlyZV9vZl9qc29vIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2NlIiwiaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2NlJDAiLCJwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIiwicGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyIsImluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYSIsImluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYSQwIiwibG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsImxvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2oiLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX29mX2oiLCJpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIiwibW9kZV9vY2N1cGF0aW9uX3RvX2pzb28iLCJtb2RlX29jY3VwYXRpb25fb2ZfanNvbyIsImxvZ2VtZW50X3RvX2pzb28iLCJsb2dlbWVudCIsImxvZ2VtZW50X29mX2pzb28iLCJtZW5hZ2VfdG9fanNvbyIsIm1lbmFnZV9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQyIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDMiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQwIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMiIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQzIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDAiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQyIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDMiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMiIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE1IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE4IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0XyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXRfJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX3QiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX28iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfdG8iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfb2YiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl90b18iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl8iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28kMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMSIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQyIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDMiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDgiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kOSIsInNtaWNfb3V0X3RvX2pzb28kMCIsInNtaWNfb3V0X29mX2pzb28kMCIsInNtaWNfaW5fdG9fanNvbyQwIiwic21pY19pbl9vZl9qc29vJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQxIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2djLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9nZW5sZXgubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX29wYW0vbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvcnVudGltZXMvb2NhbWwvcnVudGltZS5tbCIsIiIsIiIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fYnVpbGQvZGVmYXVsdC9ydW50aW1lcy9qc29vL3J1bnRpbWUubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYi5tbCIsIi9ob21lL2VtaWxlL1Byb2plY3RzL29jYW1sL2NhdGFsYS9fYnVpbGQvZGVmYXVsdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnQubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50X2FwaV93ZWIubWwiLCIvaG9tZS9lbWlsZS9Qcm9qZWN0cy9vY2FtbC9jYXRhbGEvX2J1aWxkL2RlZmF1bHQvZnJlbmNoX2xhdy9vY2FtbC9hcGlfd2ViLm1sIiwiL2hvbWUvZW1pbGUvUHJvamVjdHMvb2NhbWwvY2F0YWxhL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5t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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7SXdCbldEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NrQktDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NvOUVNQztLQVFRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NsbEZkQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3NFRUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQS9FWUM7S0FtSFpDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0FtSUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0N4UEZDO0tBQ0FDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Qy9VRW9DLE9EOFVjcEM7TUFDUSxvQkMvVXRCb0M7TUQrVStDLHFCQy9VL0NBLE9EK1UyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JDaFZuQmpELFdEZ1Y0QyxxQkNoVjVDQSxPRGdWd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCQ25WZkwsT0RtVldLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQkNwVmpCcUMsT0RvVmFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JDclZoQnFDLE9EcVZZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQkN0Vm5DK0csT0RzVm1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJDdlZyQzZDLE9EdVZxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY0N6VkVxQyxPRHdWY3JDO01BQ1Esb0JDelZ0QnFDO01EeVYrQyxxQkN6Vi9DQSxPRHlWMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CQzFWbkJ2RCxXRDBWNEMscUJDMVY1Q0EsT0QwVndEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjQy9WZnpELFFEK1ZlLGtCQ2hXZkQsTURnVzZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7SUFuTW5DLFNDM0lUQyxzQkQrVXVDLGtDQUFhO0lBcE0zQyxTQ2hGVEMsd0JYNU9MLElVMGhCcUNoSTtJQTlOdkIsU0M1RVRpSTtNRGtUTTtPQUZzQ0M7T0FBTnJKO09BQWhCc0o7T0FBTnZKO09BRVYsU0FGZ0J1SixLQUVULFVBRitCRDtNQUN0QyxxQkFEVXRKLEtBQXNCQztJQVF0QixJQUFoQnVKLGlCQ3hXQXpEO0lEd1dnQixTQ3RUaEIwRCxRRHdUWS9HO01BQ2Q7UUFFbUI7O1NBQ0osU0FOYjhHO1NBTWE7bUJB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQ0NDQSxXRERELDZCQ0NDQyxLRERELElDQ0NDO0lEREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQ0NDQyx1QkRERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkNDQ0MsTURERDs7Ozs7Ozs7Ozt5QkNDQ0EsTURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNPd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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WUFDO09BOEJBQztPQWdDQUM7T0FrRUFDO09Bb0JBQztPQW9DQUM7T0FxQkFDO09BcUNBQztPQVVBQztPQXNCQUM7T0FvQkFDO09BaUNBQztPQU1BRTtPQVdBQztPQU1BQztPQVdBQztPQU1BRTtPQWtCQUM7T0FnQkFDO09BK0JBQztPQWVBQztPQTBCQTdQO09BY0E4UDtPQXNCQUM7T0FVQUM7T0FzQkFDO09BZ0JBQztPQTJCQUM7T0FRQUM7T0FhQUM7T0FRQUM7T0FhQUM7T0FLQUM7T0FZQUM7T0FLQUM7T0FlQUM7T0FrQkFDO09BcUJBQztPQVlBQztPQWtCRkM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FLQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQXRSO09BU0FMO09BU0E0UjtPQVNBQztPQVNBQztJQVVEOzs7O1VKbnRKSjs7Ozs7OztJSUFBOzs7Ozs7Ozs7Ozs7Ozs7TUM0QzJCO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBOzBDQU1RO2lCQUwxQiw4Q0FLMkIsRUFBQzs7TUFqQmY7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7NkNBTVc7aUJBTDdCLDhDQUs4QixFQUFDO0lBWjFDOzs7Ozs7O1VEM0JIOzs7Ozs7O0lDQUE7Ozs7SUNrQlM7OztVRGxCVCIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgaWYoZ2xvYmFsVGhpcy5VaW50OEFycmF5KSB7XG4gICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KHMubCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGEgPSBuZXcgQXJyYXkocy5sKTtcbiAgfVxuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZmlsbF9ieXRlc1xudmFyIGNhbWxfZmlsbF9zdHJpbmcgPSBjYW1sX2ZpbGxfYnl0ZXNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKHRhZykgeyByZXR1cm4gdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IFswLCB0YWcsIGFyZ107IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgWzAsIHRhZ10uY29uY2F0KGFyZ3MpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIGlmKGYuZnVuKVxuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBhcmdzKTtcbiAgLy9GSVhNRSwgY2FuIGhhcHBlbiB3aXRoIHRvbyBtYW55IGFyZ3VtZW50c1xuICBpZih0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZjtcbiAgdmFyIG4gPSBmLmxlbmd0aCB8IDA7XG4gIGlmKG4gPT09IDApIHJldHVybiBmLmFwcGx5KG51bGwsYXJncyk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGggfCAwO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuIHwgMDtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKSxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCl7XG4gICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmKG5hbWVfb3B0ICYmIGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYylcbiAgICBuID0gZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKG5hbWVfb3B0KTtcbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBnbG9iYWxUaGlzLkZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmlsZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGaWxlKGZkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX2FycmF5X29mX3N0cmluZywgY2FtbF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGaWxlKGZkKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcblxuTWxOb2RlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWZmZXIsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB2YXIgYSA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuVWludDhBcnJheSkpXG4gICAgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGNhbWxfYnl0ZXNfc2V0KGJ1ZixidWZfb2Zmc2V0ICsgaSxidWZmZXJbYnVmX29mZnNldCtpXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KDEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgMCwgMSwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBidWZmZXJbMF07XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5NbE5vZGVGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZpbGU7XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZpbGUoKXtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9ieXRlcyhidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfdGltZVxuLy9SZXF1aXJlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHVuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIHVuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIHVuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSB1bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fc3RhcnR1cCBjb25zdFxuZnVuY3Rpb24gd2luX3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5fY2xlYW51cCBjb25zdFxuZnVuY3Rpb24gd2luX2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiB3aW5faGFuZGxlX2ZkIGNvbnN0XG5mdW5jdGlvbiB3aW5faGFuZGxlX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IHVuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogdW5peF9zdGF0XG52YXIgdW5peF9zdGF0XzY0ID0gdW5peF9zdGF0O1xuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfbHN0YXRcbnZhciB1bml4X2xzdGF0XzY0ID0gdW5peF9sc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG5mdW5jdGlvbiB1bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnF1aXQpIGcucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5leGl0KVxuICAgIGcucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGhhbmRsZXIoZXJyLGZhbHNlKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIHsgYXRfZXhpdCgwKSB9XG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnICsgXCJcXG5cIik7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBuID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIC8vbm9kZWpzIGVudlxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmVudlxuICAgICAmJiBnLnByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZy5wcm9jZXNzLmVudltuXSk7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKGcucHJvY2Vzc1xuICAgICAmJiBnLnByb2Nlc3MuYXJndlxuICAgICAmJiBnLnByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBnLnByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIlxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpXG4gICAgICAmJiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMpIHtcbiAgICB0cnkge3JlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTsgcmV0dXJuIDB9XG4gICAgY2F0Y2ggKGUpIHtyZXR1cm4gMX1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgaWYodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBXZWJicm93c2Vyc1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheSgxKTtcbiAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9IGVsc2UgaWYoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gTm9kZWpzXG4gICAgICB2YXIgYnVmZiA9IGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDQpO1xuICAgICAgdmFyIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50MzJBcnJheShidWZmKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICBpZihnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLm9uKSB7XG4gICAgZy5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIGcucHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICB2YXIgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X3N0cmluZyhidWYsIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZF9vbmUgPSBmdW5jdGlvbihvZmZzZXQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19nZXQodGhpcy5kYXRhLCBvZmZzZXQpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheSh4KTtcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC4gVGhlICsyIHRvIGFycmF5IGxlbmd0aCBzZWVtcyB0byB3b3JrLlxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGcub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcblxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICB2YXIgX21hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgdmFyIF9ibG9ja19sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAoKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAoKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIGZ1bmN0aW9uIGdldDMyKHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpIDw8IDI0KSB8XG4gICAgICAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMikgPDwgOCkgfFxuICAgICAgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgfVxuICBpZiAoZ2V0MzIocywgb2ZzKSAhPSAoMHg4NDk1QTZCRXwwKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gIHJldHVybiAoZ2V0MzIocywgb2ZzICsgNCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5XZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5XZWFrTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246ID49IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IGZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlXG4vL1ZlcnNpb246IDwgNC4wOFxudmFyIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlID0gdHJ1ZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYoY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUpIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTIgLypjc3QuQ09ERV9DVVNUT00qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICB9IGVsc2UgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgZGVsZXRlIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3N0ZF9vdXRwdXQoY2hhbmlkLHMpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHN0ciA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG4gIHZhciBzbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cik7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgc3RyLCAwLCBzbGVuKTtcbiAgY2hhbi5vZmZzZXQgKz0gc2xlbjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcyxNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnIsIGpzX3ByaW50X3N0ZG91dFxuLy9SZXF1aXJlczogY2FtbF9zdGRfb3V0cHV0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChpZHgsb3V0cHV0LGZpbGUsZmxhZ3MpIHtcbiAgaWYoY2FtbF9nbG9iYWxfZGF0YS5mZHMgPT09IHVuZGVmaW5lZCkgY2FtbF9nbG9iYWxfZGF0YS5mZHMgPSBuZXcgQXJyYXkoKTtcbiAgZmxhZ3M9ZmxhZ3M/ZmxhZ3M6e307XG4gIHZhciBpbmZvID0ge307XG4gIGluZm8uZmlsZSA9IGZpbGU7XG4gIGluZm8ub2Zmc2V0ID0gZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MDtcbiAgaW5mby5mbGFncyA9IGZsYWdzO1xuICBpbmZvLm91dHB1dCA9IG91dHB1dDtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbaWR4XSA9IGluZm87XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4IHx8IGlkeCA+IGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHgpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCA9IGlkeDtcbiAgcmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHZhciBpZHggPSBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4P2NhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHg6MDtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGlkeCsxLGNhbWxfc3RkX291dHB1dCxmaWxlLGYpO1xufVxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgwLGNhbWxfc3RkX291dHB1dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRpblxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgxLGpzX3ByaW50X3N0ZG91dCwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRvdXRcbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMixqc19wcmludF9zdGRlcnIsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkZXJyXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoKSB7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIGlmKGRhdGEuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmRhdGEuZmlsZSxcbiAgICBvZmZzZXQ6ZGF0YS5vZmZzZXQsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyOlwiXCJcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zeXNfb3BlbixjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWQsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICBpZihmZCA9PSAwICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpe1xuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgcmVmaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGZzLnJlYWRGaWxlU3luYygwLCAndXRmOCcpKX07XG4gIH1cbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcbnZhciB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWwgPSBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXTtcbiAgZGF0YS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgZGF0YS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjaGFuLmZpbGUuY2xvc2UoKTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0ID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfbWxfcmVmaWxsX2lucHV0IChjaGFuKSB7XG4gIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICB2YXIgc3RyX2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBpZiAoc3RyX2xlbiA9PSAwKSBjaGFuLnJlZmlsbCA9IG51bGw7XG4gIGNoYW4uZmlsZS53cml0ZShjaGFuLmZpbGUubGVuZ3RoKCksIHN0ciwgMCwgc3RyX2xlbik7XG4gIHJldHVybiBzdHJfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsID09IG51bGwpIHJldHVybjtcbiAgaWYgKGNoYW4uZmlsZS5sZW5ndGgoKSAhPSBjaGFuLm9mZnNldCkgcmV0dXJuO1xuICBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIHMsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBsMiA9IGNoYW4uZmlsZS5sZW5ndGgoKSAtIGNoYW4ub2Zmc2V0O1xuICBpZiAobDIgPT0gMCAmJiBjaGFuLnJlZmlsbCAhPSBudWxsKSBsMiA9IGNhbWxfbWxfcmVmaWxsX2lucHV0KGNoYW4pO1xuICBpZiAobDIgPCBsKSBsID0gbDI7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBzLCBpLCBsKTtcbiAgY2hhbi5vZmZzZXQgKz0gbDtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMoOCk7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLDgpO1xuXG4gIC8vIEhlYWRlciBpcyAyMCBieXRlc1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoYnVmLCAwKSArIDIwO1xuXG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuXG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoYnVmLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICBpZiAoY2hhbi5vZmZzZXQgPj0gY2hhbi5maWxlLmxlbmd0aCgpKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uZmlsZS5yZWFkX29uZShjaGFuLm9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0Kys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGZpbGUgPSBjaGFuLmZpbGU7XG4gIHdoaWxlICgoY2hhbi5vZmZzZXQgKyAzKSA+PSBmaWxlLmxlbmd0aCgpKSB7XG4gICAgdmFyIGwgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgICBpZiAobCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH1cbiAgdmFyIG8gPSBjaGFuLm9mZnNldDtcbiAgdmFyIHIgPShmaWxlLnJlYWRfb25lKG8gICkgPDwgMjQpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzEpIDw8IDE2KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysyKSA8PCA4KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobyszKSk7XG4gIGNoYW4ub2Zmc2V0Kz00O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7cmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXR9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtyZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0KX1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4ub2Zmc2V0O1xuICB2YXIgbGVuID0gY2hhbi5maWxlLmxlbmd0aCgpO1xuICBpZihwID49IGxlbikgeyByZXR1cm4gMDt9XG4gIHdoaWxlKHRydWUpIHtcbiAgICBpZihwID49IGxlbikgcmV0dXJuIC0gKHAgLSBjaGFuLm9mZnNldCk7XG4gICAgaWYoY2hhbi5maWxlLnJlYWRfb25lKHApID09IDEwKSByZXR1cm4gcCAtIGNoYW4ub2Zmc2V0ICsgMTtcbiAgICBwKys7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyID09IFwiXCIpIHJldHVybiAwO1xuICBpZihjaGFuLmZkXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdXG4gICAgICYmIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCkge1xuICAgIHZhciBvdXRwdXQgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQ7XG4gICAgc3dpdGNoKG91dHB1dC5sZW5ndGgpe1xuICAgIGNhc2UgMjogb3V0cHV0KGNoYW5pZCxjaGFuLmJ1ZmZlcik7YnJlYWs7XG4gICAgZGVmYXVsdDogb3V0cHV0KGNoYW4uYnVmZmVyKVxuICAgIH07XG4gIH1cbiAgY2hhbi5idWZmZXIgPSBcIlwiO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgdmFyIGJ5dGVzO1xuICBpZihvZmZzZXQgPT0gMCAmJiBjYW1sX21sX2J5dGVzX2xlbmd0aChidWZmZXIpID09IGxlbilcbiAgICBieXRlcyA9IGJ1ZmZlcjtcbiAgZWxzZSB7XG4gICAgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhidWZmZXIsb2Zmc2V0LGJ5dGVzLDAsbGVuKTtcbiAgfVxuICB2YXIgc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpO1xuICB2YXIganNzdHJpbmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0cmluZyk7XG4gIHZhciBpZCA9IGpzc3RyaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICBpZihpZCA8IDApXG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nO1xuICBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcis9anNzdHJpbmcuc3Vic3RyKDAsaWQrMSk7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBjaGFuLmJ1ZmZlciArPSBqc3N0cmluZy5zdWJzdHIoaWQrMSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoYykgeyByZXR1cm4gMSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjLHYpIHsgcmV0dXJuIDAgfVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy9JbXBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlcm9sc29uL0JpZ0ludGVnZXIuanMjNGU5OWIxNWI3OTUxMzM4ZjE2NDcyODM3N2M5MDZjYWFlNWE3ODIwMlxuXG4vL1Byb3ZpZGVzOiBiaWdJbnQgY29uc3RcbnZhciBiaWdJbnQgPSAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgdmFyIEJBU0UgPSAxZTcsXG4gICAgICAgIExPR19CQVNFID0gNyxcbiAgICAgICAgTUFYX0lOVCA9IDkwMDcxOTkyNTQ3NDA5OTIsXG4gICAgICAgIE1BWF9JTlRfQVJSID0gc21hbGxUb0FycmF5KE1BWF9JTlQpLFxuICAgICAgICBERUZBVUxUX0FMUEhBQkVUID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuICAgIHZhciBCaWdJbnQgPSBqb29fZ2xvYmFsX29iamVjdC5CaWdJbnQ7XG5cbiAgICB2YXIgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5cbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAodHlwZW9mIHJhZGl4ICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gK3JhZGl4ID09PSAxMCAmJiAhYWxwaGFiZXQgPyBwYXJzZVZhbHVlKHYpIDogcGFyc2VCYXNlKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSk7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSBzaWduO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBTbWFsbEludGVnZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBOYXRpdmVCaWdJbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gaXNQcmVjaXNlKG4pIHtcbiAgICAgICAgcmV0dXJuIC1NQVhfSU5UIDwgbiAmJiBuIDwgTUFYX0lOVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbWFsbFRvQXJyYXkobikgeyAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBkb2Vzbid0IHJlZmVyZW5jZSBCQVNFLCBuZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGlmIEJBU0UgY2hhbmdlc1xuICAgICAgICBpZiAobiA8IDFlNylcbiAgICAgICAgICAgIHJldHVybiBbbl07XG4gICAgICAgIGlmIChuIDwgMWUxNClcbiAgICAgICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KV07XG4gICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KSAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWUxNCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFycmF5VG9TbWFsbChhcnIpIHsgLy8gSWYgQkFTRSBjaGFuZ2VzIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gY2hhbmdlXG4gICAgICAgIHRyaW0oYXJyKTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCA0ICYmIGNvbXBhcmVBYnMoYXJyLCBNQVhfSU5UX0FSUikgPCAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gYXJyWzBdO1xuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGFyclswXSArIGFyclsxXSAqIEJBU0U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGFyclswXSArIChhcnJbMV0gKyBhcnJbMl0gKiBCQVNFKSAqIEJBU0U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmltKHYpIHtcbiAgICAgICAgdmFyIGkgPSB2Lmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHZbLS1pXSA9PT0gMCk7XG4gICAgICAgIHYubGVuZ3RoID0gaSArIDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKSB7IC8vIGZ1bmN0aW9uIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFlhZmZsZSdzIGxpYnJhcnkgaHR0cHM6Ly9naXRodWIuY29tL1lhZmZsZS9CaWdJbnRlZ2VyXG4gICAgICAgIHZhciB4ID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHhbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRydW5jYXRlKG4pIHtcbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTWF0aC5mbG9vcihuKTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGQoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEubGVuZ3RoID49IGIubGVuZ3RoXG4gICAgICAgIHZhciBsX2EgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGxfYiA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsX2EpLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2I7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSArIGJbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID49IGJhc2UgPyAxIDogMDtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPCBsX2EpIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID09PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2krK10gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcnJ5ID4gMCkgci5wdXNoKGNhcnJ5KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW55KGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID49IGIubGVuZ3RoKSByZXR1cm4gYWRkKGEsIGIpO1xuICAgICAgICByZXR1cm4gYWRkKGIsIGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFNtYWxsKGEsIGNhcnJ5KSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgY2FycnkgaXMgbnVtYmVyIHdpdGggMCA8PSBjYXJyeSA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHN1bSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgc3VtID0gYVtpXSAtIGJhc2UgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihzdW0gLyBiYXNlKTtcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgICAgIHJbaSsrXSA9IGNhcnJ5ICUgYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYSwgTWF0aC5hYnMoYikpLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRBbnkoYSwgYiksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZShhICsgYikpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgKyBiKTtcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoTWF0aC5hYnMoYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbChiLCBNYXRoLmFicyhhKSksIGEgPCAwKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucGx1cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkO1xuXG4gICAgZnVuY3Rpb24gc3VidHJhY3QoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEgPj0gYlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkoYV9sKSxcbiAgICAgICAgICAgIGJvcnJvdyA9IDAsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBiX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3cgLSBiW2ldO1xuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgICAgIGJvcnJvdyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGJfbDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdztcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkgZGlmZmVyZW5jZSArPSBiYXNlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcltpKytdID0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoOyBpIDwgYV9sOyBpKyspIHtcbiAgICAgICAgICAgIHJbaV0gPSBhW2ldO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0QW55KGEsIGIsIHNpZ24pIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBpZiAoY29tcGFyZUFicyhhLCBiKSA+PSAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGEsIGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChiLCBhKTtcbiAgICAgICAgICAgIHNpZ24gPSAhc2lnbjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IGFycmF5VG9TbWFsbCh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSB2YWx1ZSA9IC12YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0U21hbGwoYSwgYiwgc2lnbikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggMCA8PSBiIDwgTUFYX0lOVFxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gLWIsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIGJhc2UpO1xuICAgICAgICAgICAgZGlmZmVyZW5jZSAlPSBiYXNlO1xuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2UgPCAwID8gZGlmZmVyZW5jZSArIGJhc2UgOiBkaWZmZXJlbmNlO1xuICAgICAgICB9XG4gICAgICAgIHIgPSBhcnJheVRvU21hbGwocik7XG4gICAgICAgIGlmICh0eXBlb2YgciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHNpZ24pIHIgPSAtcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHIpO1xuICAgICAgICB9IHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbClcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGEsIE1hdGguYWJzKGIpLCB0aGlzLnNpZ24pO1xuICAgICAgICByZXR1cm4gc3VidHJhY3RBbnkoYSwgYiwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1pbnVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhIC0gYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYiwgTWF0aC5hYnMoYSksIGEgPj0gMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm1pbnVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubWludXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgIXRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ247XG4gICAgICAgIHZhciBzbWFsbCA9IG5ldyBTbWFsbEludGVnZXIoLXRoaXMudmFsdWUpO1xuICAgICAgICBzbWFsbC5zaWduID0gIXNpZ247XG4gICAgICAgIHJldHVybiBzbWFsbDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCgtdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKE1hdGguYWJzKHRoaXMudmFsdWUpKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlID49IDAgPyB0aGlzLnZhbHVlIDogLXRoaXMudmFsdWUpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlMb25nKGEsIGIpIHtcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICBsID0gYV9sICsgYl9sLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBiX2o7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhX2w7ICsraSkge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYl9sOyArK2opIHtcbiAgICAgICAgICAgICAgICBiX2ogPSBiW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBhX2kgKiBiX2ogKyByW2kgKyBqXTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgICAgICByW2kgKyBqICsgMV0gKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbChhLCBiKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCB8YnwgPCBCQVNFXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBjYXJyeSA9IDAsXG4gICAgICAgICAgICBwcm9kdWN0LCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gYVtpXSAqIGIgKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaGlmdExlZnQoeCwgbikge1xuICAgICAgICB2YXIgciA9IFtdO1xuICAgICAgICB3aGlsZSAobi0tID4gMCkgci5wdXNoKDApO1xuICAgICAgICByZXR1cm4gci5jb25jYXQoeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlLYXJhdHN1YmEoeCwgeSkge1xuICAgICAgICB2YXIgbiA9IE1hdGgubWF4KHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKG4gPD0gMzApIHJldHVybiBtdWx0aXBseUxvbmcoeCwgeSk7XG4gICAgICAgIG4gPSBNYXRoLmNlaWwobiAvIDIpO1xuXG4gICAgICAgIHZhciBiID0geC5zbGljZShuKSxcbiAgICAgICAgICAgIGEgPSB4LnNsaWNlKDAsIG4pLFxuICAgICAgICAgICAgZCA9IHkuc2xpY2UobiksXG4gICAgICAgICAgICBjID0geS5zbGljZSgwLCBuKTtcblxuICAgICAgICB2YXIgYWMgPSBtdWx0aXBseUthcmF0c3ViYShhLCBjKSxcbiAgICAgICAgICAgIGJkID0gbXVsdGlwbHlLYXJhdHN1YmEoYiwgZCksXG4gICAgICAgICAgICBhYmNkID0gbXVsdGlwbHlLYXJhdHN1YmEoYWRkQW55KGEsIGIpLCBhZGRBbnkoYywgZCkpO1xuXG4gICAgICAgIHZhciBwcm9kdWN0ID0gYWRkQW55KGFkZEFueShhYywgc2hpZnRMZWZ0KHN1YnRyYWN0KHN1YnRyYWN0KGFiY2QsIGFjKSwgYmQpLCBuKSksIHNoaWZ0TGVmdChiZCwgMiAqIG4pKTtcbiAgICAgICAgdHJpbShwcm9kdWN0KTtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gYSBzdXJmYWNlIGZpdCBvZiBhIGdyYXBoIHBsb3R0aW5nIHRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlXG4gICAgLy8gYmV0d2VlbiBsb25nIG11bHRpcGxpY2F0aW9uIGFuZCBrYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gdmVyc3VzIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gYXJyYXlzLlxuICAgIGZ1bmN0aW9uIHVzZUthcmF0c3ViYShsMSwgbDIpIHtcbiAgICAgICAgcmV0dXJuIC0wLjAxMiAqIGwxIC0gMC4wMTIgKiBsMiArIDAuMDAwMDE1ICogbDEgKiBsMiA+IDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICBzaWduID0gdGhpcy5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBhYnM7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIGlmIChiID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XG4gICAgICAgICAgICBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYSwgYWJzKSwgc2lnbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZUthcmF0c3ViYShhLmxlbmd0aCwgYi5sZW5ndGgpKSAvLyBLYXJhdHN1YmEgaXMgb25seSBmYXN0ZXIgZm9yIGNlcnRhaW4gYXJyYXkgc2l6ZXNcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUthcmF0c3ViYShhLCBiKSwgc2lnbik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYSwgYiksIHNpZ24pO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbEFuZEFycmF5KGEsIGIsIHNpZ24pIHsgLy8gYSA+PSAwXG4gICAgICAgIGlmIChhIDwgQkFTRSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYiwgYSksIHNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYiwgc21hbGxUb0FycmF5KGEpKSwgc2lnbik7XG4gICAgfVxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChpc1ByZWNpc2UoYS52YWx1ZSAqIHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhLnZhbHVlICogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDEpIHJldHVybiB0aGlzO1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCB0aGlzLnZhbHVlLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodikuX211bHRpcGx5QnlTbWFsbCh0aGlzKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50aW1lcyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBmdW5jdGlvbiBzcXVhcmUoYSkge1xuICAgICAgICAvL2NvbnNvbGUuYXNzZXJ0KDIgKiBCQVNFICogQkFTRSA8IE1BWF9JTlQpO1xuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwgKyBsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYV9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xuICAgICAgICAgICAgY2FycnkgPSAwIC0gYV9pICogYV9pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBsOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhX2ogPSBhW2pdO1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAyICogKGFfaSAqIGFfaikgKyByW2kgKyBqXSArIGNhcnJ5O1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcltpICsgbF0gPSBjYXJyeTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUodGhpcy52YWx1ZSksIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSkpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDEoYSwgYikgeyAvLyBMZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVBcnJheShiLmxlbmd0aCksXG4gICAgICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBiW2JfbCAtIDFdLFxuICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgbGFtYmRhID0gTWF0aC5jZWlsKGJhc2UgLyAoMiAqIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkpLFxuICAgICAgICAgICAgcmVtYWluZGVyID0gbXVsdGlwbHlTbWFsbChhLCBsYW1iZGEpLFxuICAgICAgICAgICAgZGl2aXNvciA9IG11bHRpcGx5U21hbGwoYiwgbGFtYmRhKSxcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQsIHNoaWZ0LCBjYXJyeSwgYm9ycm93LCBpLCBsLCBxO1xuICAgICAgICBpZiAocmVtYWluZGVyLmxlbmd0aCA8PSBhX2wpIHJlbWFpbmRlci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yLnB1c2goMCk7XG4gICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGRpdmlzb3JbYl9sIC0gMV07XG4gICAgICAgIGZvciAoc2hpZnQgPSBhX2wgLSBiX2w7IHNoaWZ0ID49IDA7IHNoaWZ0LS0pIHtcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBiYXNlIC0gMTtcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICE9PSBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpIHtcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gTWF0aC5mbG9vcigocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAqIGJhc2UgKyByZW1haW5kZXJbc2hpZnQgKyBiX2wgLSAxXSkgLyBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcXVvdGllbnREaWdpdCA8PSBiYXNlIC0gMVxuICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgIGwgPSBkaXZpc29yLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYXJyeSArPSBxdW90aWVudERpZ2l0ICogZGl2aXNvcltpXTtcbiAgICAgICAgICAgICAgICBxID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIGJvcnJvdyArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIChjYXJyeSAtIHEgKiBiYXNlKTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IHE7XG4gICAgICAgICAgICAgICAgaWYgKGJvcnJvdyA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3cgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdztcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoYm9ycm93ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCAtPSAxO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gYmFzZSArIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXJyeSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2FycnkgKyBiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gY2Fycnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbc2hpZnRdID0gcXVvdGllbnREaWdpdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBkZW5vcm1hbGl6YXRpb25cbiAgICAgICAgcmVtYWluZGVyID0gZGl2TW9kU21hbGwocmVtYWluZGVyLCBsYW1iZGEpWzBdO1xuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocmVtYWluZGVyKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kMihhLCBiKSB7IC8vIEltcGxlbWVudGF0aW9uIGlkZWEgc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gU2lsZW50IE1hdHQncyBsaWJyYXJ5IGh0dHA6Ly9zaWxlbnRtYXR0LmNvbS9iaWdpbnRlZ2VyL1xuICAgICAgICAvLyBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QxIG9uIGxhcmdlciBpbnB1dCBzaXplcy5cbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICAgIHBhcnQgPSBbXSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgZ3Vlc3MsIHhsZW4sIGhpZ2h4LCBoaWdoeSwgY2hlY2s7XG4gICAgICAgIHdoaWxlIChhX2wpIHtcbiAgICAgICAgICAgIHBhcnQudW5zaGlmdChhWy0tYV9sXSk7XG4gICAgICAgICAgICB0cmltKHBhcnQpO1xuICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMocGFydCwgYikgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4bGVuID0gcGFydC5sZW5ndGg7XG4gICAgICAgICAgICBoaWdoeCA9IHBhcnRbeGxlbiAtIDFdICogYmFzZSArIHBhcnRbeGxlbiAtIDJdO1xuICAgICAgICAgICAgaGlnaHkgPSBiW2JfbCAtIDFdICogYmFzZSArIGJbYl9sIC0gMl07XG4gICAgICAgICAgICBpZiAoeGxlbiA+IGJfbCkge1xuICAgICAgICAgICAgICAgIGhpZ2h4ID0gKGhpZ2h4ICsgMSkgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3Vlc3MgPSBNYXRoLmNlaWwoaGlnaHggLyBoaWdoeSk7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2hlY2sgPSBtdWx0aXBseVNtYWxsKGIsIGd1ZXNzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFicyhjaGVjaywgcGFydCkgPD0gMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgZ3Vlc3MtLTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGd1ZXNzKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGd1ZXNzKTtcbiAgICAgICAgICAgIHBhcnQgPSBzdWJ0cmFjdChwYXJ0LCBjaGVjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHBhcnQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2RTbWFsbCh2YWx1ZSwgbGFtYmRhKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgICAgICBxdW90aWVudCA9IGNyZWF0ZUFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGksIHEsIHJlbWFpbmRlciwgZGl2aXNvcjtcbiAgICAgICAgcmVtYWluZGVyID0gMDtcbiAgICAgICAgZm9yIChpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgIGRpdmlzb3IgPSByZW1haW5kZXIgKiBiYXNlICsgdmFsdWVbaV07XG4gICAgICAgICAgICBxID0gdHJ1bmNhdGUoZGl2aXNvciAvIGxhbWJkYSk7XG4gICAgICAgICAgICByZW1haW5kZXIgPSBkaXZpc29yIC0gcSAqIGxhbWJkYTtcbiAgICAgICAgICAgIHF1b3RpZW50W2ldID0gcSB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyIHwgMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kQW55KHNlbGYsIHYpIHtcbiAgICAgICAgdmFyIHZhbHVlLCBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAvIG4udmFsdWUpLCBuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgJSBuLnZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBzZWxmLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIHF1b3RpZW50O1xuICAgICAgICBpZiAoYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpdmlkZSBieSB6ZXJvXCIpO1xuICAgICAgICBpZiAoc2VsZi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKGEgLyBiKSksIG5ldyBTbWFsbEludGVnZXIoYSAlIGIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGIgPT09IDEpIHJldHVybiBbc2VsZiwgSW50ZWdlclswXV07XG4gICAgICAgICAgICBpZiAoYiA9PSAtMSkgcmV0dXJuIFtzZWxmLm5lZ2F0ZSgpLCBJbnRlZ2VyWzBdXTtcbiAgICAgICAgICAgIHZhciBhYnMgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2RTbWFsbChhLCBhYnMpO1xuICAgICAgICAgICAgICAgIHF1b3RpZW50ID0gYXJyYXlUb1NtYWxsKHZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbikgcmVtYWluZGVyID0gLXJlbWFpbmRlcjtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24gIT09IG4uc2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHNlbGYuc2lnbiAhPT0gbi5zaWduKSwgbmV3IFNtYWxsSW50ZWdlcihyZW1haW5kZXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBYnMoYSwgYik7XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAtMSkgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IDApIHJldHVybiBbSW50ZWdlcltzZWxmLnNpZ24gPT09IG4uc2lnbiA/IDEgOiAtMV0sIEludGVnZXJbMF1dO1xuXG4gICAgICAgIC8vIGRpdk1vZDEgaXMgZmFzdGVyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXNcbiAgICAgICAgaWYgKGEubGVuZ3RoICsgYi5sZW5ndGggPD0gMjAwKVxuICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2QxKGEsIGIpO1xuICAgICAgICBlbHNlIHZhbHVlID0gZGl2TW9kMihhLCBiKTtcblxuICAgICAgICBxdW90aWVudCA9IHZhbHVlWzBdO1xuICAgICAgICB2YXIgcVNpZ24gPSBzZWxmLnNpZ24gIT09IG4uc2lnbixcbiAgICAgICAgICAgIG1vZCA9IHZhbHVlWzFdLFxuICAgICAgICAgICAgbVNpZ24gPSBzZWxmLnNpZ247XG4gICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChxU2lnbikgcXVvdGllbnQgPSAtcXVvdGllbnQ7XG4gICAgICAgICAgICBxdW90aWVudCA9IG5ldyBTbWFsbEludGVnZXIocXVvdGllbnQpO1xuICAgICAgICB9IGVsc2UgcXVvdGllbnQgPSBuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgcVNpZ24pO1xuICAgICAgICBpZiAodHlwZW9mIG1vZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKG1TaWduKSBtb2QgPSAtbW9kO1xuICAgICAgICAgICAgbW9kID0gbmV3IFNtYWxsSW50ZWdlcihtb2QpO1xuICAgICAgICB9IGVsc2UgbW9kID0gbmV3IEJpZ0ludGVnZXIobW9kLCBtU2lnbik7XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIG1vZF07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRpdk1vZEFueSh0aGlzLCB2KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHF1b3RpZW50OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZW1haW5kZXI6IHJlc3VsdFsxXVxuICAgICAgICB9O1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZtb2QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZDtcblxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVswXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3ZlciA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAvIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVsxXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5yZW1haW5kZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICUgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlLCB4LCB5O1xuICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEgPT09IDEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gLTEpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xuICAgICAgICBpZiAobi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW4uaXNTbWFsbCkgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGV4cG9uZW50IFwiICsgbi50b1N0cmluZygpICsgXCIgaXMgdG9vIGxhcmdlLlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSA9IE1hdGgucG93KGEsIGIpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZSh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHggPSB0aGlzO1xuICAgICAgICB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChiICYgMSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSAwKSBicmVhaztcbiAgICAgICAgICAgIGIgLz0gMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3c7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgdmFyIF8wID0gQmlnSW50KDApLCBfMSA9IEJpZ0ludCgxKSwgXzIgPSBCaWdJbnQoMik7XG4gICAgICAgIGlmIChiID09PSBfMCkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBfMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSBfMSkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSBCaWdJbnQoLTEpKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKSByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChfMCk7XG4gICAgICAgIHZhciB4ID0gdGhpcztcbiAgICAgICAgdmFyIHkgPSBJbnRlZ2VyWzFdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChiICYgXzEpID09PSBfMSkge1xuICAgICAgICAgICAgICAgIHkgPSB5LnRpbWVzKHgpO1xuICAgICAgICAgICAgICAgIC0tYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiID09PSBfMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IF8yO1xuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gZnVuY3Rpb24gKGV4cCwgbW9kKSB7XG4gICAgICAgIGV4cCA9IHBhcnNlVmFsdWUoZXhwKTtcbiAgICAgICAgbW9kID0gcGFyc2VWYWx1ZShtb2QpO1xuICAgICAgICBpZiAobW9kLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdGFrZSBtb2RQb3cgd2l0aCBtb2R1bHVzIDBcIik7XG4gICAgICAgIHZhciByID0gSW50ZWdlclsxXSxcbiAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1vZChtb2QpO1xuICAgICAgICBpZiAoZXhwLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgZXhwID0gZXhwLm11bHRpcGx5KEludGVnZXJbLTFdKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLm1vZEludihtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChleHAuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xuICAgICAgICAgICAgZXhwID0gZXhwLmRpdmlkZSgyKTtcbiAgICAgICAgICAgIGJhc2UgPSBiYXNlLnNxdWFyZSgpLm1vZChtb2QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcblxuICAgIGZ1bmN0aW9uIGNvbXBhcmVBYnMoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBhW2ldID4gYltpXSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdmFyIGIgPSBwYXJzZVZhbHVlKHYpLnZhbHVlO1xuICAgICAgICBhID0gYSA+PSAwID8gYSA6IC1hO1xuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xuICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gYWJvdXQgY29tcGFyaXNvbiB3aXRoIEluZmluaXR5OlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wYXJlQWJzKGEsIGIpICogKHRoaXMuc2lnbiA/IC0xIDogMSk7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEgPCAwID8gMSA6IC0xO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZVRvID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSAhPT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ndCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3JlYXRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ndCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXI7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubHQgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlc3NlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmx0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA+PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiAxKSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnZhbHVlKSA9PT0gMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnMoKS52YWx1ZSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobi5jb21wYXJlQWJzKDIpID09PSAwKSByZXR1cm4gdGhpcy5pc0V2ZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kKG4pLmlzWmVybygpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeTtcblxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgICAgIHZhciBuID0gdi5hYnMoKTtcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uaXNFdmVuKCkgfHwgbi5pc0RpdmlzaWJsZUJ5KDMpIHx8IG4uaXNEaXZpc2libGVCeSg1KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5sZXNzZXIoNDkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICAgICAgdmFyIG5QcmV2ID0gbi5wcmV2KCksXG4gICAgICAgICAgICBiID0gblByZXYsXG4gICAgICAgICAgICByID0gMCxcbiAgICAgICAgICAgIGQsIHQsIGksIHg7XG4gICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSBiID0gYi5kaXZpZGUoMiksIHIrKztcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChuLmxlc3NlcihhW2ldKSkgY29udGludWU7XG4gICAgICAgICAgICB4ID0gYmlnSW50KGFbaV0pLm1vZFBvdyhiLCBuKTtcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgICAgICB4ID0geC5zcXVhcmUoKS5tb2Qobik7XG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoeC5lcXVhbHMoblByZXYpKSBjb250aW51ZSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCBcInN0cmljdFwiIHRvIHRydWUgdG8gZm9yY2UgR1JILXN1cHBvcnRlZCBsb3dlciBib3VuZCBvZiAyKmxvZyhOKV4yXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcbiAgICAgICAgdmFyIGlzUHJpbWUgPSBpc0Jhc2ljUHJpbWUodGhpcyk7XG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XG4gICAgICAgIHZhciBiaXRzID0gbi5iaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICAgICAgdmFyIGxvZ04gPSBNYXRoLmxvZygyKSAqIGJpdHMudG9KU051bWJlcigpO1xuICAgICAgICB2YXIgdCA9IE1hdGguY2VpbCgoc3RyaWN0ID09PSB0cnVlKSA/ICgyICogTWF0aC5wb3cobG9nTiwgMikpIDogbG9nTik7XG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQoaSArIDIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1ByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgdCA9IGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCA/IDUgOiBpdGVyYXRpb25zO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50LnJhbmRCZXR3ZWVuKDIsIG4ubWludXMoMikpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludiA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciB0ID0gYmlnSW50Lnplcm8sIG5ld1QgPSBiaWdJbnQub25lLCByID0gcGFyc2VWYWx1ZShuKSwgbmV3UiA9IHRoaXMuYWJzKCksIHEsIGxhc3RULCBsYXN0UjtcbiAgICAgICAgd2hpbGUgKCFuZXdSLmlzWmVybygpKSB7XG4gICAgICAgICAgICBxID0gci5kaXZpZGUobmV3Uik7XG4gICAgICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgICAgICB0ID0gbmV3VDtcbiAgICAgICAgICAgIHIgPSBuZXdSO1xuICAgICAgICAgICAgbmV3VCA9IGxhc3RULnN1YnRyYWN0KHEubXVsdGlwbHkobmV3VCkpO1xuICAgICAgICAgICAgbmV3UiA9IGxhc3RSLnN1YnRyYWN0KHEubXVsdGlwbHkobmV3UikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghci5pc1VuaXQoKSkgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgICAgIGlmICh0LmNvbXBhcmUoMCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0ID0gdC5hZGQobik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5uZWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RJbnYgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZEludiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSArIDEgPCBNQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSArIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIGZhbHNlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAtIDEgPiAtTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCB0cnVlKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIEJpZ0ludCgxKSk7XG4gICAgfVxuXG4gICAgdmFyIHBvd2Vyc09mVHdvID0gWzFdO1xuICAgIHdoaWxlICgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0gPD0gQkFTRSkgcG93ZXJzT2ZUd28ucHVzaCgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0pO1xuICAgIHZhciBwb3dlcnMyTGVuZ3RoID0gcG93ZXJzT2ZUd28ubGVuZ3RoLCBoaWdoZXN0UG93ZXIyID0gcG93ZXJzT2ZUd29bcG93ZXJzMkxlbmd0aCAtIDFdO1xuXG4gICAgZnVuY3Rpb24gc2hpZnRfaXNTbWFsbChuKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhuKSA8PSBCQVNFO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRSaWdodCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQubXVsdGlwbHkocG93ZXJzT2ZUd29bbl0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdExlZnQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcmVtUXVvO1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0TGVmdCgtbik7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzWmVybygpIHx8IChyZXN1bHQuaXNOZWdhdGl2ZSgpICYmIHJlc3VsdC5pc1VuaXQoKSkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBwb3dlcnNPZlR3b1tuXSk7XG4gICAgICAgIHJldHVybiByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRSaWdodCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ7XG5cbiAgICBmdW5jdGlvbiBiaXR3aXNlKHgsIHksIGZuKSB7XG4gICAgICAgIHkgPSBwYXJzZVZhbHVlKHkpO1xuICAgICAgICB2YXIgeFNpZ24gPSB4LmlzTmVnYXRpdmUoKSwgeVNpZ24gPSB5LmlzTmVnYXRpdmUoKTtcbiAgICAgICAgdmFyIHhSZW0gPSB4U2lnbiA/IHgubm90KCkgOiB4LFxuICAgICAgICAgICAgeVJlbSA9IHlTaWduID8geS5ub3QoKSA6IHk7XG4gICAgICAgIHZhciB4RGlnaXQgPSAwLCB5RGlnaXQgPSAwO1xuICAgICAgICB2YXIgeERpdk1vZCA9IG51bGwsIHlEaXZNb2QgPSBudWxsO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHdoaWxlICgheFJlbS5pc1plcm8oKSB8fCAheVJlbS5pc1plcm8oKSkge1xuICAgICAgICAgICAgeERpdk1vZCA9IGRpdk1vZEFueSh4UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHhEaWdpdCA9IHhEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHhTaWduKSB7XG4gICAgICAgICAgICAgICAgeERpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB4RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeURpdk1vZCA9IGRpdk1vZEFueSh5UmVtLCBoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIHlEaWdpdCA9IHlEaXZNb2RbMV0udG9KU051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHlTaWduKSB7XG4gICAgICAgICAgICAgICAgeURpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB5RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeFJlbSA9IHhEaXZNb2RbMF07XG4gICAgICAgICAgICB5UmVtID0geURpdk1vZFswXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZuKHhEaWdpdCwgeURpZ2l0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bSA9IGZuKHhTaWduID8gMSA6IDAsIHlTaWduID8gMSA6IDApICE9PSAwID8gYmlnSW50KC0xKSA6IGJpZ0ludCgwKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHJlc3VsdC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgICAgc3VtID0gc3VtLm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpLmFkZChiaWdJbnQocmVzdWx0W2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLnByZXYoKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAmIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hbmQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFuZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgfCBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3I7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSBeIGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS54b3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnhvciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnhvcjtcblxuICAgIHZhciBMT0JNQVNLX0kgPSAxIDw8IDMwLCBMT0JNQVNLX0JJID0gKEJBU0UgJiAtQkFTRSkgKiAoQkFTRSAmIC1CQVNFKSB8IExPQk1BU0tfSTtcbiAgICBmdW5jdGlvbiByb3VnaExPQihuKSB7IC8vIGdldCBsb3dlc3RPbmVCaXQgKHJvdWdoKVxuICAgICAgICAvLyBTbWFsbEludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDMwKVxuICAgICAgICAvLyBCaWdJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAxNCkgW0JBU0U9MWU3XVxuICAgICAgICB2YXIgdiA9IG4udmFsdWUsXG4gICAgICAgICAgICB4ID0gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgPyB2IHwgTE9CTUFTS19JIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIiA/IHYgfCBCaWdJbnQoTE9CTUFTS19JKSA6XG4gICAgICAgICAgICAgICAgICAgIHZbMF0gKyB2WzFdICogQkFTRSB8IExPQk1BU0tfQkk7XG4gICAgICAgIHJldHVybiB4ICYgLXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZSkge1xuICAgICAgICBpZiAoYmFzZS5jb21wYXJlVG8odmFsdWUpIDw9IDApIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBpbnRlZ2VyTG9nYXJpdGhtKHZhbHVlLCBiYXNlLnNxdWFyZShiYXNlKSk7XG4gICAgICAgICAgICB2YXIgcCA9IHRtcC5wO1xuICAgICAgICAgICAgdmFyIGUgPSB0bXAuZTtcbiAgICAgICAgICAgIHZhciB0ID0gcC5tdWx0aXBseShiYXNlKTtcbiAgICAgICAgICAgIHJldHVybiB0LmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCA/IHsgcDogdCwgZTogZSAqIDIgKyAxIH0gOiB7IHA6IHAsIGU6IGUgKiAyIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcDogYmlnSW50KDEpLCBlOiAwIH07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXM7XG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpIDwgMCkge1xuICAgICAgICAgICAgbiA9IG4ubmVnYXRlKCkuc3VidHJhY3QoYmlnSW50KDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmlnSW50KGludGVnZXJMb2dhcml0aG0obiwgYmlnSW50KDIpKS5lKS5hZGQoYmlnSW50KDEpKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5iaXRMZW5ndGggPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG1heChhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgcmV0dXJuIGEuZ3JlYXRlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtaW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmxlc3NlcihiKSA/IGEgOiBiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnY2QoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XG4gICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJuIGE7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYjtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHJldHVybiBhO1xuICAgICAgICB2YXIgYyA9IEludGVnZXJbMV0sIGQsIHQ7XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpICYmIGIuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgIGQgPSBtaW4ocm91Z2hMT0IoYSksIHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGIgPSBiLmRpdmlkZShkKTtcbiAgICAgICAgICAgIGMgPSBjLm11bHRpcGx5KGQpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUocm91Z2hMT0IoYSkpO1xuICAgICAgICB9XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICAgICAgYiA9IGIuZGl2aWRlKHJvdWdoTE9CKGIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhLmdyZWF0ZXIoYikpIHtcbiAgICAgICAgICAgICAgICB0ID0gYjsgYiA9IGE7IGEgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IGIuc3VidHJhY3QoYSk7XG4gICAgICAgIH0gd2hpbGUgKCFiLmlzWmVybygpKTtcbiAgICAgICAgcmV0dXJuIGMuaXNVbml0KCkgPyBhIDogYS5tdWx0aXBseShjKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGNtKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICByZXR1cm4gYS5kaXZpZGUoZ2NkKGEsIGIpKS5tdWx0aXBseShiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmFuZEJldHdlZW4oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHZhciBsb3cgPSBtaW4oYSwgYiksIGhpZ2ggPSBtYXgoYSwgYik7XG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XG4gICAgICAgIGlmIChyYW5nZS5pc1NtYWxsKSByZXR1cm4gbG93LmFkZChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByYW5nZSkpO1xuICAgICAgICB2YXIgZGlnaXRzID0gdG9CYXNlKHJhbmdlLCBCQVNFKS52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdLCByZXN0cmljdGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b3AgPSByZXN0cmljdGVkID8gZGlnaXRzW2ldIDogQkFTRTtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHRydW5jYXRlKE1hdGgucmFuZG9tKCkgKiB0b3ApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZGlnaXQpO1xuICAgICAgICAgICAgaWYgKGRpZ2l0IDwgdG9wKSByZXN0cmljdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvdy5hZGQoSW50ZWdlci5mcm9tQXJyYXkocmVzdWx0LCBCQVNFLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIHZhciBwYXJzZUJhc2UgPSBmdW5jdGlvbiAodGV4dCwgYmFzZSwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICB0ZXh0ID0gU3RyaW5nKHRleHQpO1xuICAgICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIGFic0Jhc2UgPSBNYXRoLmFicyhiYXNlKTtcbiAgICAgICAgdmFyIGFscGhhYmV0VmFsdWVzID0ge307XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWxwaGFiZXRWYWx1ZXNbYWxwaGFiZXRbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjID09PSBcIi1cIikgY29udGludWU7XG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChhbHBoYWJldFZhbHVlc1tjXSA+PSBhYnNCYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIjFcIiAmJiBhYnNCYXNlID09PSAxKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiBiYXNlIFwiICsgYmFzZSArIFwiLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IHBhcnNlVmFsdWUoYmFzZSk7XG4gICAgICAgIHZhciBkaWdpdHMgPSBbXTtcbiAgICAgICAgdmFyIGlzTmVnYXRpdmUgPSB0ZXh0WzBdID09PSBcIi1cIjtcbiAgICAgICAgZm9yIChpID0gaXNOZWdhdGl2ZSA/IDEgOiAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUoYWxwaGFiZXRWYWx1ZXNbY10pKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IFwiPFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICBkbyB7IGkrKzsgfSB3aGlsZSAodGV4dFtpXSAhPT0gXCI+XCIgJiYgaSA8IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBkaWdpdHMucHVzaChwYXJzZVZhbHVlKHRleHQuc2xpY2Uoc3RhcnQgKyAxLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlclwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgdmFyIHZhbCA9IEludGVnZXJbMF0sIHBvdyA9IEludGVnZXJbMV0sIGk7XG4gICAgICAgIGZvciAoaSA9IGRpZ2l0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFsID0gdmFsLmFkZChkaWdpdHNbaV0udGltZXMocG93KSk7XG4gICAgICAgICAgICBwb3cgPSBwb3cudGltZXMoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyB2YWwubmVnYXRlKCkgOiB2YWw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5naWZ5KGRpZ2l0LCBhbHBoYWJldCkge1xuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XG4gICAgICAgIGlmIChkaWdpdCA8IGFscGhhYmV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0W2RpZ2l0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCI8XCIgKyBkaWdpdCArIFwiPlwiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZShuLCBiYXNlKSB7XG4gICAgICAgIGJhc2UgPSBiaWdJbnQoYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzWmVybygpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb252ZXJ0IG5vbnplcm8gbnVtYmVycyB0byBiYXNlIDAuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmVxdWFscygtMSkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIEFycmF5LmFwcGx5KG51bGwsIEFycmF5KC1uLnRvSlNOdW1iZXIoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMSwgMF0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIGFyciA9IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpIC0gMSkpXG4gICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzAsIDFdKTtcbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFsxXSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIGFyciksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmVnID0gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSAmJiBiYXNlLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgbmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIG4gPSBuLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlLmlzVW5pdCgpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgMSksXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogbmVnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgdmFyIGxlZnQgPSBuLCBkaXZtb2Q7XG4gICAgICAgIHdoaWxlIChsZWZ0LmlzTmVnYXRpdmUoKSB8fCBsZWZ0LmNvbXBhcmVBYnMoYmFzZSkgPj0gMCkge1xuICAgICAgICAgICAgZGl2bW9kID0gbGVmdC5kaXZtb2QoYmFzZSk7XG4gICAgICAgICAgICBsZWZ0ID0gZGl2bW9kLnF1b3RpZW50O1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gZGl2bW9kLnJlbWFpbmRlcjtcbiAgICAgICAgICAgIGlmIChkaWdpdC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkaWdpdCA9IGJhc2UubWludXMoZGlnaXQpLmFicygpO1xuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0Lm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dC5wdXNoKGRpZ2l0LnRvSlNOdW1iZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gobGVmdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogb3V0LnJldmVyc2UoKSwgaXNOZWdhdGl2ZTogbmVnIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9CYXNlU3RyaW5nKG4sIGJhc2UsIGFscGhhYmV0KSB7XG4gICAgICAgIHZhciBhcnIgPSB0b0Jhc2UobiwgYmFzZSk7XG4gICAgICAgIHJldHVybiAoYXJyLmlzTmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgYXJyLnZhbHVlLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeSh4LCBhbHBoYWJldCk7XG4gICAgICAgIH0pLmpvaW4oJycpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlLCBsID0gdi5sZW5ndGgsIHN0ciA9IFN0cmluZyh2Wy0tbF0pLCB6ZXJvcyA9IFwiMDAwMDAwMFwiLCBkaWdpdDtcbiAgICAgICAgd2hpbGUgKC0tbCA+PSAwKSB7XG4gICAgICAgICAgICBkaWdpdCA9IFN0cmluZyh2W2xdKTtcbiAgICAgICAgICAgIHN0ciArPSB6ZXJvcy5zbGljZShkaWdpdC5sZW5ndGgpICsgZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ24gPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBzaWduICsgc3RyO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcbiAgICAgICAgaWYgKHJhZGl4ICE9IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTT04gPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTsgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU051bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMudG9TdHJpbmcoKSwgMTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RyaW5nVmFsdWUodikge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKCt2KSkge1xuICAgICAgICAgICAgdmFyIHggPSArdjtcbiAgICAgICAgICAgIGlmICh4ID09PSB0cnVuY2F0ZSh4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydHNOYXRpdmVCaWdJbnQgPyBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh4KSkgOiBuZXcgU21hbGxJbnRlZ2VyKHgpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdlswXSA9PT0gXCItXCI7XG4gICAgICAgIGlmIChzaWduKSB2ID0gdi5zbGljZSgxKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gdi5zcGxpdCgvZS9pKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA+IDIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBzcGxpdC5qb2luKFwiZVwiKSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHZhciBleHAgPSBzcGxpdFsxXTtcbiAgICAgICAgICAgIGlmIChleHBbMF0gPT09IFwiK1wiKSBleHAgPSBleHAuc2xpY2UoMSk7XG4gICAgICAgICAgICBleHAgPSArZXhwO1xuICAgICAgICAgICAgaWYgKGV4cCAhPT0gdHJ1bmNhdGUoZXhwKSB8fCAhaXNQcmVjaXNlKGV4cCkpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBleHAgKyBcIiBpcyBub3QgYSB2YWxpZCBleHBvbmVudC5cIik7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IHNwbGl0WzBdO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZSA9IHRleHQuaW5kZXhPZihcIi5cIik7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbFBsYWNlID49IDApIHtcbiAgICAgICAgICAgICAgICBleHAgLT0gdGV4dC5sZW5ndGggLSBkZWNpbWFsUGxhY2UgLSAxO1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIGRlY2ltYWxQbGFjZSkgKyB0ZXh0LnNsaWNlKGRlY2ltYWxQbGFjZSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cCA8IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbmNsdWRlIG5lZ2F0aXZlIGV4cG9uZW50IHBhcnQgZm9yIGludGVnZXJzXCIpO1xuICAgICAgICAgICAgdGV4dCArPSAobmV3IEFycmF5KGV4cCArIDEpKS5qb2luKFwiMFwiKTtcbiAgICAgICAgICAgIHYgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1ZhbGlkID0gL14oWzAtOV1bMC05XSopJC8udGVzdCh2KTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHNpZ24gPyBcIi1cIiArIHYgOiB2KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSBbXSwgbWF4ID0gdi5sZW5ndGgsIGwgPSBMT0dfQkFTRSwgbWluID0gbWF4IC0gbDtcbiAgICAgICAgd2hpbGUgKG1heCA+IDApIHtcbiAgICAgICAgICAgIHIucHVzaCgrdi5zbGljZShtaW4sIG1heCkpO1xuICAgICAgICAgICAgbWluIC09IGw7XG4gICAgICAgICAgICBpZiAobWluIDwgMCkgbWluID0gMDtcbiAgICAgICAgICAgIG1heCAtPSBsO1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihyLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU51bWJlclZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQodikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZWNpc2UodikpIHtcbiAgICAgICAgICAgIGlmICh2ICE9PSB0cnVuY2F0ZSh2KSkgdGhyb3cgbmV3IEVycm9yKHYgKyBcIiBpcyBub3QgYW4gaW50ZWdlci5cIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWJlclZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgLy8gUHJlLWRlZmluZSBudW1iZXJzIGluIHJhbmdlIFstOTk5LDk5OV1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykge1xuICAgICAgICBJbnRlZ2VyW2ldID0gcGFyc2VWYWx1ZShpKTtcbiAgICAgICAgaWYgKGkgPiAwKSBJbnRlZ2VyWy1pXSA9IHBhcnNlVmFsdWUoLWkpO1xuICAgIH1cbiAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIEludGVnZXIub25lID0gSW50ZWdlclsxXTtcbiAgICBJbnRlZ2VyLnplcm8gPSBJbnRlZ2VyWzBdO1xuICAgIEludGVnZXIubWludXNPbmUgPSBJbnRlZ2VyWy0xXTtcbiAgICBJbnRlZ2VyLm1heCA9IG1heDtcbiAgICBJbnRlZ2VyLm1pbiA9IG1pbjtcbiAgICBJbnRlZ2VyLmdjZCA9IGdjZDtcbiAgICBJbnRlZ2VyLmxjbSA9IGxjbTtcbiAgICBJbnRlZ2VyLmlzSW5zdGFuY2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIgfHwgeCBpbnN0YW5jZW9mIFNtYWxsSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgTmF0aXZlQmlnSW50OyB9O1xuICAgIEludGVnZXIucmFuZEJldHdlZW4gPSByYW5kQmV0d2VlbjtcblxuICAgIEludGVnZXIuZnJvbUFycmF5ID0gZnVuY3Rpb24gKGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cy5tYXAocGFyc2VWYWx1ZSksIHBhcnNlVmFsdWUoYmFzZSB8fCAxMCksIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG4iLCIvKiBnbG9iYWwgYmlnSW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vLyBXZSByZXByZXNlbnQgYSBbWi50XSBhcyBhIGphdmFzY3JpcHQgMzJiaXQgaW50ZWdlcnMgaWYgaXQgZml0cyBvciBhcyBhIGJpZ0ludC5cblxuLy9Qcm92aWRlczogbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9ub3JtYWxpemUoeCl7XG4gIHZhciB5ID0geC50b0pTTnVtYmVyICgpIHwgMDtcbiAgaWYoeC5lcXVhbHMoYmlnSW50KHkpKSkgcmV0dXJuIHk7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X211bF9vdmVyZmxvd3NcbmZ1bmN0aW9uIG1sX3pfbXVsX292ZXJmbG93cyh4LHkpe1xuICB2YXIgeiA9IHgqeTtcbiAgcmV0dXJuIHogIT0gKHp8MCk7XG59XG5cbi8vZXh0ZXJuYWwgaW5pdDogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfemFyaXRoX21hcnNoYWwsIGNhbWxfemFyaXRoX3VubWFyc2hhbCwgY2FtbF9jdXN0b21fb3BzLCBtbF96X2hhc2gsIG1sX3pfY29tcGFyZVxuZnVuY3Rpb24gbWxfel9pbml0KHVuaXQpIHtcbiAgY2FtbF9jdXN0b21fb3BzWydfeiddID1cbiAgICB7IHNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX21hcnNoYWwsXG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfemFyaXRoX3VubWFyc2hhbCxcbiAgICAgIGhhc2ggOiBtbF96X2hhc2gsXG4gICAgICBjb21wYXJlIDogbWxfel9jb21wYXJlLFxuICAgIH07XG4gIHJldHVybiAwIH1cblxuLy9leHRlcm5hbCBtbF96X2luc3RhbGxfZnJhbWV0YWJsZTogdW5pdCAtPiB1bml0XG4vL1Byb3ZpZGVzOiBtbF96X2luc3RhbGxfZnJhbWV0YWJsZSBjb25zdFxuZnVuY3Rpb24gbWxfel9pbnN0YWxsX2ZyYW1ldGFibGUodW5pdCkgeyByZXR1cm4gMCB9XG5cbi8vZXh0ZXJuYWwgbmVnOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmVnIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25lZyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5uZWdhdGUoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWRkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9hZGQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfYWRkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hZGQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHN1YjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3ViIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Yih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc3VidHJhY3QoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIG11bDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X211bCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubXVsdGlwbHkoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Rpdih6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpXG4gIGlmKHoyLmVxdWFscyhiaWdJbnQoMCkpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmRpdmlkZShiaWdJbnQoejIpKSlcbn1cblxuLy9leHRlcm5hbCBjZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9jZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfYWRkXG5mdW5jdGlvbiBtbF96X2NkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA+IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X2FkZChtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgZmRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZmRpdlxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdiwgbWxfel9zaWduLCBtbF96X3N1YlxuZnVuY3Rpb24gbWxfel9mZGl2KHoxLCB6Mikge1xuICB2YXIgejFfcG9zID0gbWxfel9zaWduKHoxKTtcbiAgdmFyIHoyX3BvcyA9IG1sX3pfc2lnbih6Mik7XG4gIGlmICh6MV9wb3MgKiB6Ml9wb3MgPCAwKSAvKiBNdWx0aXBsaWNhdGlvbiBpcyBsaWtlIGEgc2lnbndpc2UgeG9yICovIHtcbiAgICBpZiAoIWJpZ0ludCh6MSkubW9kKGJpZ0ludCh6MikpLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgICByZXR1cm4gbWxfel9zdWIobWxfel9kaXYoejEsIHoyKSwgYmlnSW50KDEpKSA7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG4vL2V4dGVybmFsIHJlbTogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcmVtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3JlbSh6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpO1xuICBpZiAoejIuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubW9kKHoyKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2X3JlbTogdCAtPiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfZGl2X3JlbVxuLy9SZXF1aXJlczogbWxfel9kaXYsIG1sX3pfcmVtXG5mdW5jdGlvbiBtbF96X2Rpdl9yZW0oejEsIHoyKSB7XG4gIHJldHVybiBbMCwgbWxfel9kaXYoejEsejIpLCBtbF96X3JlbSh6MSwgejIpXVxufVxuLy9leHRlcm5hbCBzdWNjOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3VjYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zdWNjKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5leHQoKSk7XG59XG5cbi8vZXh0ZXJuYWwgcHJlZDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3ByZWQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJlZCh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wcmV2KCkpO1xufVxuXG4vL2V4dGVybmFsIGFiczogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FicyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hYnMoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ2FuZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nYW5kIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ2FuZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYW5kKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nb3IgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nb3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2d4b3I6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ3hvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2d4b3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnhvcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nbm90OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nbm90IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nbm90KHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5vdCgpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9sZWZ0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X2xlZnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfbGVmdCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0TGVmdChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0UmlnaHQoYW10KSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfcmlnaHRfdHJ1bmM6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2RpdihiaWdJbnQoejEpLCBiaWdJbnQoMikucG93KHoyKSlcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ6IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2ludCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X29mX2ludChpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogbWxfel9vZl9pbnRcbmZ1bmN0aW9uIG1sX3pfb2ZfaW50MzIoaTMyKSB7XG4gIHJldHVybiBtbF96X29mX2ludChpMzIpO1xufVxuXG4vL2V4dGVybmFsIG9mX25hdGl2ZWludDogbmF0aXZlaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfbmF0aXZlaW50IGNvbnN0XG4vL1JlcXVpcmVzOiBtbF96X29mX2ludFxuZnVuY3Rpb24gbWxfel9vZl9uYXRpdmVpbnQoeikge1xuICByZXR1cm4gbWxfel9vZl9pbnQoeilcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQ2NDogaW50NjQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQ2NCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfbmVnLCBtbF96X25vcm1hbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksY2FtbF9pbnQ2NF9oaTMyLGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gbWxfel9vZl9pbnQ2NChpNjQpIHtcbiAgdmFyIG5lZyA9IGZhbHNlO1xuICBpZihjYW1sX2ludDY0X2NvbXBhcmUoaTY0LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgwLDApKSA8IDApIHtcbiAgICBuZWcgPSB0cnVlO1xuICAgIGk2NCA9IGNhbWxfaW50NjRfbmVnKGk2NClcbiAgfVxuICB2YXIgbG8gPSBjYW1sX2ludDY0X2xvMzIoaTY0KSA+Pj4gMDtcbiAgdmFyIGhpID0gY2FtbF9pbnQ2NF9oaTMyKGk2NCkgPj4+IDA7XG4gIHZhciB4ID0gYmlnSW50KGxvKS5hZGQoYmlnSW50KGhpKS5zaGlmdExlZnQoMzIpKTtcbiAgaWYobmVnKSB7IHggPSB4Lm5lZ2F0ZSgpIH07XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh4KVxufVxuXG4vL2V4dGVybmFsIG9mX2Zsb2F0OiBmbG9hdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2Zsb2F0KGYxKSB7XG4gIGlmKGYxID09IEluZmluaXR5IHx8IGYxID09IC1JbmZpbml0eSB8fCBmMSAhPSBmMSlcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChmMTwwP01hdGguY2VpbChmMSk6TWF0aC5mbG9vcihmMSkpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQ6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBtbF96X3RvX2ludCh6MSkge1xuICBpZiAoejEgPT0gKHoxIHwgMCkpIHJldHVybiB6MSB8IDA7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xufVxuXG4vL2V4dGVybmFsIHRvX2ludDMyOiB0IC0+IGludDMyXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19pbnQzMih6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCB0b19pbnQ2NDogdCAtPiBpbnQ2NFxuLy9Qcm92aWRlczogbWxfel90b19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2ZpdHNfaW50NjQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpXG5mdW5jdGlvbiBtbF96X3RvX2ludDY0KHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKVxuICBpZighbWxfel9maXRzX2ludDY0KHoxKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBtYXNrID0gYmlnSW50KDB4ZmZmZmZmZmYpXG4gIHZhciBsbyA9IHoxLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciBoaSA9IHoxLnNoaWZ0UmlnaHQoMzIpLmFuZChtYXNrKS50b0pTTnVtYmVyKCk7XG4gIHZhciB4ID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vZXh0ZXJuYWwgdGVzdGJpdDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3Rlc3RiaXRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90ZXN0Yml0KHoscG9zKXtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgcmV0dXJuICh6LnNoaWZ0UmlnaHQocG9zKS5hbmQoYmlnSW50KDEpKS50b0pTTnVtYmVyKCkpfDA7XG59XG5cbi8vZXh0ZXJuYWwgdG9fbmF0aXZlaW50OiB0IC0+IG5hdGl2ZWludFxuLy9Qcm92aWRlczogbWxfel90b19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfdG9faW50XG5mdW5jdGlvbiBtbF96X3RvX25hdGl2ZWludCh6MSkgeyByZXR1cm4gbWxfel90b19pbnQoejEpIH1cblxuLy9leHRlcm5hbCBmb3JtYXQ6IHN0cmluZyAtPiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel9mb3JtYXQgXG4vL1JlcXVpcmVzOiBiaWdJbnRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfZmFpbHdpdGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Zvcm1hdChmbXQsIHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgdmFyIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2QwNTU1ZDQ1MWNlMjk1YzQ0OTdmMjRhOGQ5OTkzZjhkZDIzMDk3ZGYvei5tbGlwI0wyOTdcbiAgdmFyIGJhc2UgPSAxMDtcbiAgdmFyIGNhcyA9IDA7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBhbHQgPSAwO1xuICB2YXIgZGlyID0gMDtcbiAgdmFyIHNpZ24gPSAnJztcbiAgdmFyIHBhZCA9ICcgJztcbiAgdmFyIGlkeCA9IDA7XG4gIHZhciBwcmVmaXg9XCJcIjtcbiAgd2hpbGUoZm10W2lkeF0gPT0gJyUnKSBpZHgrKztcbiAgZm9yKDs7IGlkeCsrKSB7XG4gICAgaWYoZm10W2lkeF0gPT0gJyMnKSBhbHQgPSAxO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICcwJykgcGFkID0gJzAnO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICctJykgZGlyID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnICcgfHwgZm10W2lkeF0gPT0gJysnKSBzaWduID0gZm10W2lkeF07XG4gICAgZWxzZSBicmVhaztcbiAgfVxuICBpZih6MS5sdChiaWdJbnQoMCkpKXtzaWduID0gJy0nO3oxID0gejEubmVnYXRlKCl9O1xuICBmb3IoO2ZtdFtpZHhdPj0nMCcgJiYgZm10W2lkeF0gPD0nOSc7aWR4KyspXG4gICAgd2lkdGg9MTAqd2lkdGggKyAoK2ZtdFtpZHhdKTtcbiAgc3dpdGNoKGZtdFtpZHhdKXtcbiAgY2FzZSAnaSc6IGNhc2UgJ2QnOiBjYXNlICd1JzogYnJlYWs7XG4gIGNhc2UgJ2InOiBiYXNlID0gMjsgaWYoYWx0KSBwcmVmaXggPSBcIjBiXCI7IGJyZWFrO1xuICBjYXNlICdvJzogYmFzZSA9IDg7IGlmKGFsdCkgcHJlZml4ID0gXCIwb1wiOyBicmVhaztcbiAgY2FzZSAneCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjB4XCI7IGJyZWFrO1xuICBjYXNlICdYJzogYmFzZSA9IDE2OyBpZihhbHQpIHByZWZpeCA9IFwiMFhcIjsgY2FzID0gMTsgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIlVuc3VwcG9ydGVkIGZvcm1hdCAnXCIgKyBmbXQgKyBcIidcIik7XG4gIH1cbiAgaWYgKGRpcikgcGFkID0gJyAnO1xuICB2YXIgcmVzID0gejEudG9TdHJpbmcoYmFzZSk7XG4gIGlmIChjYXMgPT09IDEpIHtcbiAgICByZXMgPSByZXMudG9VcHBlckNhc2UoKTtcbiAgfVxuICB2YXIgc2l6ZSA9IHJlcy5sZW5ndGg7XG4gIGlmIChwYWQgPT0gJyAnKSB7XG4gICAgaWYoZGlyKSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcmVzICsgcGFkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBzaWduICsgcHJlZml4ICsgcmVzO1xuICAgICAgZm9yKDtyZXMubGVuZ3RoPHdpZHRoOykgcmVzID0gcGFkICsgcmVzO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgcHJlID0gc2lnbiArIHByZWZpeDtcbiAgICBmb3IoO3Jlcy5sZW5ndGgrcHJlLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICByZXMgPSBwcmUgKyByZXM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9Qcm92aWRlczoganNvb196X29mX2pzX3N0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGpzb29fel9vZl9qc19zdHJpbmdfYmFzZShiYXNlLCBzKSB7XG4gIGlmIChiYXNlID09IDApIHsgLy8gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL1phcml0aC9ibG9iL2I4ZGJhZjQ4YTc5MjcwNjFkZjY5OWFkN2NlNjQyYmI0ZjFmZTUzMDgvY2FtbF96LmMjTDU5OFxuICAgIGJhc2UgPSAxMDtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIHNpZ24gPSAxO1xuICAgIGlmKHNbcF0gPT0gJy0nKSB7IHNpZ24gPSAtMTsgcCsrIH1cbiAgICBlbHNlIGlmIChzW3BdID09ICcrJykgeyBwKysgfVxuICAgIGlmIChzW3BdID09ICcwJykge1xuICAgICAgcCArKztcbiAgICAgIGlmIChzLmxlbmd0aCA9PSBwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJjID0gc1twXTtcbiAgICAgICAgaWYgKGJjID09ICdvJyB8fCBiYyA9PSAnTycpIHtcbiAgICAgICAgICBiYXNlID0gODtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAneCcgfHwgYmMgPT0gJ1gnKSB7XG4gICAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICB9IGVsc2UgaWYgKGJjID09ICdiJyB8fCBiYyA9PSAnQicpIHtcbiAgICAgICAgICBiYXNlID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZihiYXNlICE9IDEwKSB7XG4gICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHArMSk7XG4gICAgICAgICAgaWYoc2lnbiA9PSAtMSkgcyA9IFwiLVwiICsgcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvL3JlbW92ZSBsZWFkaW5nICcrJ1xuICBpZiAoc1swXSA9PSAnKycpIHMgPSBzLnN1YnN0cmluZygxKTtcbiAgLy9yZW1vdmUgbGVhZGluZyAnMCdzXG4gIHMgPSBzLnJlcGxhY2UoL14wKy8sICcnKTtcbiAgLy9ub3JtYWxpemUgXCJlbXB0eVwiIG51bWJlcnNcbiAgaWYocyA9PSAnLScgfHwgcyA9PSAnJykgcyA9ICcwJztcblxuICBmdW5jdGlvbiBkaWdpdChjb2RlKXtcbiAgICBpZihjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHJldHVybiBjb2RlIC0gNDg7XG4gICAgaWYoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikgcmV0dXJuIGNvZGUgLSA5NyArIDEwO1xuICAgIGlmKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgcmV0dXJuIGNvZGUgLSA2NSArIDEwO1xuICB9XG4gIHZhciBpID0gMDtcbiAgaWYoc1tpXSA9PSAnLScpIGkrKztcbiAgZm9yKCA7IGkgPCBzLmxlbmd0aCA7IGkrKyl7XG4gICAgdmFyIGMgPSBkaWdpdChzLmNoYXJDb2RlQXQoaSkpO1xuICAgIGlmKGMgPT0gdW5kZWZpbmVkIHx8IGMgPj0gYmFzZSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgZGlnaXRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChzLCBiYXNlKSk7XG4gIFxufVxuXG4vL2V4dGVybmFsIG9mX3N1YnN0cmluZ19iYXNlOiBpbnQgLT4gc3RyaW5nIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX3N1YnN0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBtbF96X29mX3N1YnN0cmluZ19iYXNlKGJhc2UsIHMsIHBvcywgbGVuKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICBpZihwb3MgIT0gMCB8fCBsZW4gIT0gcy5sZW5ndGgpIHtcbiAgICBpZiAocy5sZW5ndGggLSBwb3MgPCBsZW4pIHtcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgb2Zmc2V0IG9yIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcyA9IHMuc2xpY2UocG9zLHBvcytsZW4pO1xuICB9XG4gIHJldHVybiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcyk7XG59XG5cbi8vZXh0ZXJuYWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9jb21wYXJlIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29tcGFyZSh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQoejIpKTtcbn1cblxuLy9leHRlcm5hbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZXF1YWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9lcXVhbCh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuZXF1YWxzKGJpZ0ludCh6MikpO1xufVxuXG4vL2V4dGVybmFsIHNpZ246IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3NpZ24gY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9zaWduKHoxKSB7XG4gIHJldHVybiBiaWdJbnQoejEpLmNvbXBhcmUoYmlnSW50Lnplcm8pO1xufVxuXG4vL2V4dGVybmFsIGdjZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZ2NkXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludC5nY2QoYmlnSW50KHoxKSwgYmlnSW50KHoyKSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIG51bWJpdHM6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X251bWJpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9udW1iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIG4gPSAwO1xuICB2YXIgdXBwZXJCb3VuZCA9IGJpZ0ludC5vbmU7XG4gIHdoaWxlICh1cHBlckJvdW5kLmxlcSh6MSkpIHtcbiAgICBuICs9IDE7XG4gICAgdXBwZXJCb3VuZCA9IHVwcGVyQm91bmQubXVsdGlwbHkoMik7XG4gIH1cbiAgcmV0dXJuIG47IC8vIDJee24tMX0gPD0gfHh8IDwgMl5uXG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50KHoxKSB7XG4gIGlmKHoxID09ICh6MSB8IDApKSByZXR1cm4gMTtcbiAgZWxzZSByZXR1cm4gMDtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDMyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQzMlxuLy9SZXF1aXJlczogbWxfel9maXRzX2ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludDMyKHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDY0OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50NjQoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpXG4gIGlmICh6MS5jb21wYXJlKGJpZ0ludChcIjkyMjMzNzIwMzY4NTQ3NzU4MDdcIikpIDw9IDAgJiYgejEuY29tcGFyZShiaWdJbnQoXCItOTIyMzM3MjAzNjg1NDc3NTgwOFwiKSkgPj0gMClcbiAgICByZXR1cm4gMVxuICBlbHNlXG4gICAgcmV0dXJuIDBcbn1cblxuLy9leHRlcm5hbCBmaXRzX25hdGl2ZWludDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfbmF0aXZlaW50XG4vL1JlcXVpcmVzOiBtbF96X2ZpdHNfaW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfbmF0aXZlaW50KHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBwb3dtOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIG1sX3pfaW52ZXJ0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBtbF96X3Bvd20oejEsIHoyLCB6Mykge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIHozID0gYmlnSW50KHozKTtcbiAgaWYoejMuZXF1YWxzKHplcm8pKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIGlmKHozLmFicygpLmVxdWFscyhvbmUpKSByZXR1cm4gMDtcbiAgaWYoejIuZXF1YWxzKHplcm8pKSByZXR1cm4gMTtcbiAgaWYoejIubHQoMCkpIHtcbiAgICB2YXIgaW52ID0gYmlnSW50KG1sX3pfaW52ZXJ0KHoxLCB6MykpO1xuICAgIHZhciByID0gaW52Lm1vZFBvdyh6Mi5uZWdhdGUoKSwgejMpO1xuICAgIGlmKHIubHQoemVybykpIHIgPSByLmFkZCh6My5hYnMoKSk7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9IGVsc2Uge1xuICAgIHZhciByID0gYmlnSW50KHoxKS5tb2RQb3coejIsIHozKTtcbiAgICBpZihyLmx0KHplcm8pKSByID0gci5hZGQoejMuYWJzKCkpO1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfVxufVxuXG4vL2V4dGVybmFsIHBvd246IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd1xuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvdyh6MSwgaTEpIHtcbiAgaTEgPSBiaWdJbnQoaTEpO1xuICBpZiAoaTEubHQoYmlnSW50KDApKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93OiBleHBvbmVudCBtdXN0IGJlIG5vbm5lZ2F0aXZlXCIpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnBvdyhpMSkpO1xufVxuXG4vL2V4dGVybmFsIGhhc2g6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIG1sX3pfaGFzaCh6MSkge1xuICB2YXIgYSA9IGJpZ0ludCh6MSkudG9BcnJheShNYXRoLnBvdygyLCAzMikpO1xuICB2YXIgYWNjID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjID0gY2FtbF9oYXNoX21peF9pbnQoYWNjLCBhLnZhbHVlW2ldKTtcbiAgfVxuICBpZihhLnZhbHVlLmxlbmd0aCAlIDIgIT0gMCkge1xuICAgIGFjYyA9IGNhbWxfaGFzaF9taXhfaW50KGFjYywgMCk7XG4gIH1cbiAgaWYoYS5pc05lZ2F0aXZlKXtcbiAgICBhY2MgPSBhY2MgKyAxXG4gIH1cbiAgcmV0dXJuIGFjYyB8IDBcbn1cblxuLy9leHRlcm5hbCB0b19iaXRzOiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel90b19iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cl9yZXBlYXQsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel90b19iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIHdoaWxlKCF6MS5lcXVhbHMoYmlnSW50KDApKSl7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoejEubW9kKGJpZ0ludCgyNTYpKSk7XG4gICAgejEgPSB6MS5kaXZpZGUoYmlnSW50KDI1NikpO1xuICB9XG4gIHdoaWxlKHJlcy5sZW5ndGggJSA0ICE9IDApe1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDApO1xuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfYml0czogc3RyaW5nIC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfYml0cyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2JpdHMoejEpIHtcbiAgdmFyIHIgPSBiaWdJbnQuemVyb1xuICB2YXIgYmFzZTEgPSBiaWdJbnQoMjU2KTtcbiAgdmFyIGJhc2UgPSBiaWdJbnQub25lO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHoxKTsgaSsrKXtcbiAgICB2YXIgZCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoejEsaSk7XG4gICAgciA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShkKS5hZGQocik7XG4gICAgYmFzZSA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShiYXNlMSk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xufVxuXG4vL2V4dGVybmFsIHBvd21fc2VjOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21fc2VjXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfcG93bSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvd21fc2VjKHoxLCB6MiwgejMpIHtcbiAgejMgPSBiaWdJbnQoejMpLmFicygpO1xuICAvLyBwb3dtX3NlYyByZXF1aXJlcyB0aGF0IHRoZSBleHBvbmVudCBiZSBwb3NpdGl2ZVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoYmlnSW50KHoyKS5sdChvbmUpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3dtX3NlYzogZXhwb25lbnQgbXVzdCBiZSBwb3NpdGl2ZVwiKTtcbiAgfVxuICBpZiAoIWJpZ0ludCh6MykuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvd21fc2VjOiBtb2R1bHVzIG11c3QgYmUgb2RkXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3Bvd20oejEsIHoyLCB6Mylcbn1cblxuLy9leHRlcm5hbCByb290OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Jvb3Rcbi8vUmVxdWlyZXM6IG1sX3pfcG93LCAgYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Jvb3QoeiwgaSkge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgeiA9IGJpZ0ludCh6KTtcblxuICBpZiAoaSAlIDIgPT09IDAgJiYgei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucm9vdDogZXZlbiByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoeik7XG4gIH1cblxuICB2YXIgc3RhcnQgPSB6ZXJvO1xuICB2YXIgZW5kID0gejtcbiAgdmFyIGFucyA9IG51bGw7XG5cbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICB3aGlsZSAoc3RhcnQubGVxKGVuZCkpXG4gIHtcbiAgICB2YXIgbWlkID0gc3RhcnQuYWRkKGVuZCkuZGl2aWRlKHR3byk7XG4gICAgdmFyIHBvID0gbWlkLnBvdyhpKTtcbiAgICBpZiAocG8uZXF1YWxzKHopKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUobWlkKTtcbiAgICB9IGVsc2UgaWYgKHBvLmx0KHopKSB7XG4gICAgICBzdGFydCA9IG1pZC5uZXh0KCk7XG4gICAgICBhbnMgPSBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pZC5wcmV2KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShhbnMpO1xufVxuXG4vL2V4dGVybmFsIGludmVydDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfaW52ZXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfZ2NkZXh0X2ludGVybiwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfaW52ZXJ0KGEsIG4pIHtcbiAgLy8gQmVjYXVzZSBbYS5tb2RJbnYobildIHByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGZvciBlZGdlIGNhc2VzLFxuICAvLyB3ZSB3cm90ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGdjZGV4dF9pbnRlcm4uXG4gIGEgPSBiaWdJbnQoYSk7XG4gIG4gPSBiaWdJbnQobik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZihuLmFicygpLmVxdWFscyhvbmUpKVxuICAgIHJldHVybiAwO1xuICBpZiAobi5lcXVhbHMoemVybykgJiYgYS5hYnMoKS5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBhO1xuICB9XG4gIGlmIChuLmVxdWFscyh6ZXJvKSB8fCBhLmVxdWFscyh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB2YXIgeCA9IG1sX3pfZ2NkZXh0X2ludGVybihhLCBuKTtcbiAgdmFyIHIgPSBiaWdJbnQoeFsyXSk7XG4gIHZhciB0bXAgPSBiaWdJbnQoYSkubXVsdGlwbHkocikubW9kKG4pO1xuICBpZih0bXAubHQoemVybykpIHRtcCA9IHRtcC5hZGQobi5hYnMoKSk7XG4gIGlmKHIubHQoemVybykpIHIgPSByLmFkZChuLmFicygpKTtcbiAgaWYodG1wLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG4gIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbn1cblxuLy9leHRlcm5hbCBwZXJmZWN0X3Bvd2VyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9wb3dlclxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X251bWJpdHMsIG1sX3pfcm9vdCwgbWxfel9wb3dcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9wb3dlcih6KSB7XG4gIC8vIFJldHVybiB0cnVlIGlmIG9wIGlzIGEgcGVyZmVjdCBwb3dlciwgaS5lLiwgaWYgdGhlcmUgZXhpc3QgaW50ZWdlcnMgYSBhbmRcbiAgLy8gYiwgd2l0aCBiID4gMSwgc3VjaCB0aGF0IG9wID0gYV5iLlxuICAvLyBPdGhlcndpc2UgZmFsc2UuXG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpIHx8IHouZXF1YWxzKG9uZS5uZWdhdGUoKSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICB2YXIgbG9nMnogPSBtbF96X251bWJpdHMoei5hYnMoKSk7XG4gIGZvciAodmFyIGIgPSAyOyBiIDw9IGxvZzJ6OyBiKyspIHtcbiAgICBpZih6Lmx0KHplcm8pICYmIGIgJSAyID09IDApIGNvbnRpbnVlO1xuICAgIHZhciB6cCA9IHouYWJzKCk7XG4gICAgdmFyIHAgPSBiaWdJbnQobWxfel9yb290KHpwLCBiKSk7XG4gICAgaWYoei5sdCh6ZXJvKSkgcCA9IHAubmVnYXRlKCk7XG4gICAgdmFyIHIgPSBiaWdJbnQobWxfel9wb3cocCwgYikpO1xuICAgIGlmICh6LmVxdWFscyhyKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3Rfc3F1YXJlOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9zcXVhcmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290XG5mdW5jdGlvbiBtbF96X3BlcmZlY3Rfc3F1YXJlKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgaWYgKHoubHQoYmlnSW50KDApKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciByb290ID0gYmlnSW50KG1sX3pfcm9vdCh6LCAyKSk7XG4gIGlmIChyb290Lm11bHRpcGx5KHJvb3QpLmVxKHopKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfTtcbn1cblxuLy9leHRlcm5hbCBwcm9iYWJfcHJpbWU6IHQgLT4gaW50IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wcm9iYWJfcHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9wcm9iYWJfcHJpbWUoeiwgaSkge1xuICBpZiAoYmlnSW50KHopLmlzUHJvYmFibGVQcmltZShpKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgbmV4dHByaW1lOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmV4dHByaW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25leHRwcmltZSh6MSkge1xuICAvLyBJbnRlcmVzdGluZ2x5LCB0aGUgemFyaXRoIG5leHRfcHJpbWUgb25seSByZXR1cm5zIFxuICAvLyBwcm9iYWJhbGlzdGljIHByaW1lcy4gIFdlIGRvIHRoZSBzYW1lLCB3aXRoIHRoZSBcbiAgLy8gc2FtZSBwcm9iYWJsaXN0aWMgcGFyYW1ldGVyIG9mIDI1LlxuICAvLyBodHRwczovL2Zvc3NpZXMub3JnL2RveC9nbXAtNi4xLjIvbXB6XzJuZXh0cHJpbWVfOGNfc291cmNlLmh0bWxcbiAgXG4gIHoxID0gYmlnSW50KHoxKVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIGlmICh6MS5sdChvbmUpIHx8IHoxLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICBpZiAoejEuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICB6MSA9IHoxLmFkZCh0d28pO1xuICB9IGVsc2Uge1xuICAgIHoxID0gejEuYWRkKG9uZSk7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoejEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6MSA9IHoxLmFkZCh0d28pXG4gICAgfVxuICB9XG59XG5cbi8vZXh0ZXJuYWwgZXh0cmFjdDogdCAtPiBpbnQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZXh0cmFjdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9leHRyYWN0KHoxLCBwb3MsIGxlbikge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MS5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgyKS5wb3cobGVuKS5zdWJ0cmFjdCgxKSkpO1xufVxuXG4vL2V4dGVybmFsIGdjZGV4dF9pbnRlcm46IHQgLT4gdCAtPiAodCAqIHQgKiBib29sKVxuLy9Qcm92aWRlczogbWxfel9nY2RleHRfaW50ZXJuXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZGV4dF9pbnRlcm4oejEsIHoyKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB2YXIgZ2NkID0gYmlnSW50LmdjZCh6MSx6Mik7XG4gIHZhciBhID0gejE7XG4gIHZhciBiID0gejI7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICB2YXIgbGFzdHggPSBiaWdJbnQoMSk7XG4gIHZhciB5ID0gYmlnSW50KDEpO1xuICB2YXIgbGFzdHkgPSBiaWdJbnQoMSk7XG4gIHZhciBxLCB0LCByO1xuICBpZih6MS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB3aGlsZSghYi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIHEgPSBhLmRpdmlkZShiKTtcbiAgICByID0gYS5zdWJ0cmFjdChxLm11bHRpcGx5KGIpKTtcbiAgICB0ID0geDtcbiAgICB4ID0gbGFzdHguc3VidHJhY3QocS5tdWx0aXBseSh4KSk7XG4gICAgbGFzdHggPSB0O1xuICAgIHQgPSB5O1xuICAgIHkgPSBsYXN0eS5zdWJ0cmFjdChxLm11bHRpcGx5KHkpKTtcbiAgICBsYXN0eSA9IHQ7XG4gICAgYSA9IGI7XG4gICAgYiA9IHI7XG4gIH1cbiAgaWYoYS5sdChiaWdJbnQoMCkpKVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhLm5lZ2F0ZSgpKSxtbF96X25vcm1hbGl6ZShsYXN0eC5uZWdhdGUoKSksMV1cbiAgZWxzZVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhKSxtbF96X25vcm1hbGl6ZShsYXN0eCksMV1cbn1cblxuLy9leHRlcm5hbCBzcXJ0OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3FydFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9zcXJ0KHoxKSB7XG4gIHZhciB6ID0gYmlnSW50KHoxKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0OiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9yb290KHosIDIpO1xufVxuXG4vL2V4dGVybmFsIHNxcnRfcmVtOiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfc3FydF9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NxcnRfcmVtKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0X3JlbTogc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgdmFyIG11bCA9IHJvb3QubXVsdGlwbHkocm9vdCk7XG4gIHZhciBkaWZmID0gei5zdWJ0cmFjdChtdWwpO1xuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKHJvb3QpLCBtbF96X25vcm1hbGl6ZShkaWZmKV1cbn1cblxuLy9leHRlcm5hbCB0cmFpbGluZ196ZXJvczogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdHJhaWxpbmdfemVyb3MgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90cmFpbGluZ196ZXJvcyh6KSB7XG4gIHogPSBiaWdJbnQoeikuYWJzKCk7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5lcXVhbHMoemVybykpIHtcbiAgICAvLyBtYXhfaW50IGluIDMyYml0XG4gICAgcmV0dXJuIDB4N2ZmZmZmZmY7XG4gIH1cbiAgdmFyIGkgPSAwXG4gIHogPSB6Lnhvcih6LnByZXYoKSkuc2hpZnRSaWdodCgxKTtcbiAgZm9yIChpID0gMDsgIXouZXF1YWxzKGJpZ0ludC56ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouc2hpZnRSaWdodCgxKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cblxuLy9leHRlcm5hbCBwb3Bjb3VudDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfcG9wY291bnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9wb3Bjb3VudCh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoemVybyk7IGkrKykge1xuICAgIHogPSB6LmFuZCh6LnByZXYoKSk7XG4gIH1cbiAgaWYoaSAhPSAoaXwwKSkgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBpfDA7XG59XG5cbi8vZXh0ZXJuYWwgaGFtZGlzdDogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYW1kaXN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcG9wY291bnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9oYW1kaXN0KHoxLCB6Mikge1xuICBpZihiaWdJbnQoejEpLmlzTmVnYXRpdmUoKSAhPSBiaWdJbnQoejIpLmlzTmVnYXRpdmUgKCkpe1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIGlmKCh6MSAhPSAoejEgfCAwKSB8fCB6MiAhPSAoejIgfCAwKSkgJiYgKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpIHx8IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSkpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouaGFtZGlzdDogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3BvcGNvdW50KGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBzaXplOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaXplIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2l6ZSh6MSkge1xuICAvLyBDbGFpbSB0byBiZSBhIDMyLWJpdCBhcmNoaXRlY3R1cmUuXG4gIHJldHVybiBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKS52YWx1ZS5sZW5ndGg7XG59XG5cbi8vZXh0ZXJuYWwgZGl2ZXhhY3Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2RpdmV4YWN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2XG5mdW5jdGlvbiBtbF96X2RpdmV4YWN0KHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfbWFyc2hhbFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBjYW1sX3phcml0aF9tYXJzaGFsKHdyaXRlciwgdiwgc3opIHtcbiAgdiA9IGJpZ0ludCh2KTtcbiAgdmFyIGJpdHMgPSB2LnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKTtcbiAgd3JpdGVyLndyaXRlKDgsIGJpdHMuaXNOZWdhdGl2ZSA/MSA6IDApO1xuICB2YXIgYmxvY2sgPSBiaXRzLnZhbHVlLmxlbmd0aDtcbiAgdmFyIGxlbiA9IGJsb2NrICogNDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSBibG9jayAtIDE7IGkgPj0gMDsgaSAtLSl7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAwICkgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDggKSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMTYpICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAyNCkgJiAweGZmKTtcbiAgfVxuICBzelswXSA9IDQgKiAoMSArICgoKGxlbiArIDMpIC8gNCkgfCAwKSk7XG4gIHN6WzFdID0gOCAqICgxICsgKCgobGVuICsgNykgLyA4KSB8IDApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBjYW1sX3phcml0aF91bm1hcnNoYWwocmVhZGVyLCBzeikge1xuICB2YXIgbmVnYXRlO1xuICBzd2l0Y2gocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6IG5lZ2F0ZSA9IHRydWU7IGJyZWFrO1xuICBjYXNlIDA6IG5lZ2F0ZSA9IGZhbHNlOyBicmVhaztcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB6IChtYWxmb3JtZWQgaW5wdXQpXCIpO1xuICB9XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICB2YXIgeCA9IGJpZ0ludCgwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbiAvIDQ7IGkrKyl7XG4gICAgdmFyIHkgPSBiaWdJbnQocmVhZGVyLnJlYWQ4dSgpKTtcbiAgICB5ID0geS5hZGQoKHJlYWRlci5yZWFkOHUoKSkgPDwgOCk7XG4gICAgeSA9IHkuYWRkKChyZWFkZXIucmVhZDh1KCkpIDw8IDE2KTtcbiAgICB5ID0geS5hZGQoKChyZWFkZXIucmVhZDh1KCkpIDw8IDI0KSA+Pj4gMCk7XG4gICAgeCA9IHkuc2hpZnRMZWZ0KGkgKiAzMikuYWRkKHgpO1xuICB9XG4gIGlmKG5lZ2F0ZSkgeCA9IHgubmVnYXRlKCk7XG4gIHN6WzBdID0gbGVuICsgNDtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHgpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gZy5GbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gZy5GbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gZy5JbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gZy5VaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IGcuSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBnLlVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIga2luZDtcbiAgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGYoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczoganNfcHJpbnRfc3Rkb3V0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3Rkb3V0KHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICAmJiB2LmxvZyAmJiB2LmxvZyhzKTtcbiAgfVxufVxuLy9Qcm92aWRlczoganNfcHJpbnRfc3RkZXJyIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3RkZXJyKHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3RkZXJyLndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICYmIHYuZXJyb3IgJiYgdi5lcnJvcihzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgIHJldHVybiBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gIHJldHVybiBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBqc19wcmludF9zdGRlcnIoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIFt1bmRlZmluZWRdKTtcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihuID09IGFyaXR5ICYmIGYubGVuZ3RoID09IGFyaXR5KSByZXR1cm4gZi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixhcmdzKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgLy8gdmFyIF90YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgLy8gdmFyIF90YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgc3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZSBjb25zdFxuLy9EdW1teSBmdW5jdGlvbiFcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZSgpIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSArdikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICBnbG9iYWxUaGlzLm5hdmlnYXRvcj9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGdsb2JhbFRoaXMuY29uc29sZT9nbG9iYWxUaGlzLmNvbnNvbGU6e307XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYodHlwZW9mIGcuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJLCBidXQgd2l0aG91dCB0aGUgd2VhayBzZW1hbnRpY3NcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXQoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgcmV0dXJuICh4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdPT09dW5kZWZpbmVkKT8wOnhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRfY29weVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldCxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXRfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX3dlYWtfZ2V0KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NoZWNrIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY2hlY2soeCwgaSkge1xuICBpZih4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0hPT11bmRlZmluZWQgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldICE9PTApXG4gICAgcmV0dXJuIDE7XG4gIGVsc2VcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxudmFyIGNhbWxfZXBoZV9jcmVhdGUgPSBjYW1sX3dlYWtfY3JlYXRlXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2JsaXRcbnZhciBjYW1sX2VwaGVfYmxpdF9rZXkgPSBjYW1sX3dlYWtfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldFxudmFyIGNhbWxfZXBoZV9nZXRfa2V5ID0gY2FtbF93ZWFrX2dldFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbnZhciBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5ID0gY2FtbF93ZWFrX2dldF9jb3B5XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jaGVja1xudmFyIGNhbWxfZXBoZV9jaGVja19rZXkgPSBjYW1sX3dlYWtfY2hlY2tcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgWzAsIHZdKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgMClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgZHN0W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9hcnJheSxjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLGxlbil7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgY2hhbl9sZW4gPSBjaGFuLmZpbGUubGVuZ3RoKCk7XG4gIGlmKGxlbjwwKSBsZW4gPSBjaGFuX2xlbiAtIGNoYW4ub2Zmc2V0O1xuICBpZihjaGFuLm9mZnNldCArIGxlbiA+IGNoYW5fbGVuKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuICByZXR1cm4gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ1ZiksMCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbnZhciBjYW1sX21kNV9ieXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIGZ1bmN0aW9uIG1kNShidWZmZXIsIGxlbmd0aCkge1xuICAgIHZhciBpID0gbGVuZ3RoO1xuICAgIGJ1ZmZlcltpID4+IDJdIHw9IDB4ODAgPDwgKDggKiAoaSAmIDMpKTtcbiAgICBmb3IgKGkgPSAoaSAmIH4weDMpICsgODsoaSAmIDB4M0YpIDwgNjAgO2kgKz0gNClcbiAgICAgIGJ1ZmZlclsoaSA+PiAyKSAtIDFdID0gMDtcbiAgICBidWZmZXJbKGkgPj4gMikgLTFdID0gbGVuZ3RoIDw8IDM7XG4gICAgYnVmZmVyW2kgPj4gMl0gPSAobGVuZ3RoID4+IDI5KSAmIDB4MUZGRkZGRkY7XG5cbiAgICB2YXIgdyA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XTtcblxuICAgIGZvcihpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgKz0gMTYpIHtcbiAgICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IG5ldyBBcnJheSgxNik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgICAgdFtpICogNCArIGpdID0gKHdbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzLCBvZnMsIGxlbikge1xuICAgIC8vIEZJWDogbWF5YmUgd2Ugc2hvdWxkIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uIGJ5IGNodW5rIG9mIDY0IGJ5dGVzXG4gICAgLy8gYXMgaW4gaHR0cDovL3d3dy5teWVyc2RhaWx5Lm9yZy9qb3NlcGgvamF2YXNjcmlwdC9tZDUuanNcbiAgICB2YXIgYnVmID0gW107XG4gICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpe1xuICAgICAgdmFyIGIgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPVxuICAgICAgICAgIGIuY2hhckNvZGVBdChqKSB8IChiLmNoYXJDb2RlQXQoaisxKSA8PCA4KSB8XG4gICAgICAgICAgKGIuY2hhckNvZGVBdChqKzIpIDw8IDE2KSB8IChiLmNoYXJDb2RlQXQoaiszKSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYi5jaGFyQ29kZUF0KGkgKyBvZnMpIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgIHZhciBhID0gY29udGVudDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKz00KSB7XG4gICAgICAgIHZhciBqID0gaSArIG9mcztcbiAgICAgICAgYnVmW2k+PjJdID0gYVtqXSB8IChhW2orMV0gPDwgOCkgfCAoYVtqKzJdIDw8IDE2KSB8IChhW2orM10gPDwgMjQpO1xuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYnVmW2k+PjJdIHw9IGFbaSArIG9mc10gPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KG1kNShidWYsIGxlbikpO1xuICB9XG59ICgpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG4iLCIvL1RoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQgaW4gQ3N0cnVjdFxuLy9UaGVyZSBhcmUganVzdCBwcm92aWRlZCBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmIGluXG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgblxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmcgPSBsYXp5KFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPSByZWYgdGVtcF9kaXJfbmFtZVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA6PSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICAgICAgICAgICAgICAgICA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID1cbiAgKCogV2F0Y2ggb3V0IGZvciBvdmVyZmxvdyBpbiBjb21wdXRpbmcgcmVeMiArIGltXjIgKilcbiAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gIGlmIHIgPSAwLjAgdGhlbiBpXG4gIGVsc2UgaWYgaSA9IDAuMCB0aGVuIHJcbiAgZWxzZSBpZiByID49IGkgdGhlblxuICAgIGxldCBxID0gaSAvLiByIGluIHIgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuICBlbHNlXG4gICAgbGV0IHEgPSByIC8uIGkgaW4gaSAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2FtbGludGVybmFsQXRvbWljIGlzIGEgZGVwZW5kZW5jeSBvZiBTdGRsaWIsIHNvIGl0IGlzIGNvbXBpbGVkIHdpdGhcbiAgIC1ub3BlcnZhc2l2ZXMuICopXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogV2UgYXJlIG5vdCByZXVzaW5nICgnYSByZWYpIGRpcmVjdGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvblxuICAgYWJvdXQgYXRvbWljaXR5IGlmIHdlIHdpc2ggdG86IGV2ZW4gaW4gYSBzZXF1ZW50aWFsIGltcGxlbWVudGF0aW9uLFxuICAgc2lnbmFscyBhbmQgb3RoZXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBtaWdodCBicmVhayBhdG9taWNpdHkuICopXG50eXBlICdhIHQgPSB7bXV0YWJsZSB2OiAnYX1cblxubGV0IG1ha2UgdiA9IHt2fVxubGV0IGdldCByID0gci52XG5sZXQgc2V0IHIgdiA9IHIudiA8LSB2XG5cbigqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBzZXQgdG8gbmV2ZXIgYmUgaW5saW5lZDogRmxhbWJkYSBpc1xuICAgYWxsb3dlZCB0byBtb3ZlIHN1cnJvdW5kaW5nIGNvZGUgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLFxuICAgaW5jbHVkaW5nIGFsbG9jYXRpb25zLiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZXhjaGFuZ2UgciB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIHY7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldFtAaW5saW5lIG5ldmVyXSBjb21wYXJlX2FuZF9zZXQgciBzZWVuIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICBpZiBjdXIgPT0gc2VlbiB0aGVuIChcbiAgICByLnYgPC0gdjtcbiAgICAoKiBFTkQgQVRPTUlDICopXG4gICAgdHJ1ZVxuICApIGVsc2VcbiAgICBmYWxzZVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfYW5kX2FkZCByIG4gPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gKGN1ciArIG4pO1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgbGV0IG1vZHVsZSBBdG9taWMgPSBDYW1saW50ZXJuYWxBdG9taWMgaW5cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBBdG9taWMubWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9IChDYW1saW50ZXJuYWxBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgOiB1bml0IC0+IGJvb2xcbiAgPSBcImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWRcIlxubGV0ICgpID0gaWYgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCAoKSB0aGVuIGF0X2V4aXQgbWFqb3JcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgPSBDb21wbGV4XG5tb2R1bGUgRGlnZXN0ICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRWl0aGVyICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICA9IEdjXG5tb2R1bGUgR2VubGV4ICAgICAgID0gR2VubGV4XG5tb2R1bGUgSGFzaHRibCAgICAgID0gSGFzaHRibFxubW9kdWxlIEludCAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE5hdGl2ZWludCAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgID0gT3B0aW9uXG5tb2R1bGUgUGFyc2luZyAgICAgID0gUGFyc2luZ1xubW9kdWxlIFBlcnZhc2l2ZXMgICA9IFBlcnZhc2l2ZXNcbm1vZHVsZSBQcmludGV4YyAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZXEgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmVhbSAgICAgICA9IFN0cmVhbVxubW9kdWxlIFN0cmluZyAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSmFuZSBTdHJlZXQgR3JvdXAgTExDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEBkZXByZWNhdGVkIFVzZSB7IVN0ZGxpYn0gKilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5sZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xubGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbmV4Y2VwdGlvbiBFeGl0XG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBtaW4gPSBtaW5cbmxldCBtYXggPSBtYXhcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICgmJikgaW5zdGVhZC5cIl1cbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAofHwpIGluc3RlYWQuXCJdXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5sZXQgYWJzID0gYWJzXG5sZXQgbWF4X2ludCA9IG1heF9pbnRcbmxldCBtaW5faW50ID0gbWluX2ludFxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsbm90ID0gbG5vdFxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmxldCBpbmZpbml0eSA9IGluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gbmVnX2luZmluaXR5XG5sZXQgbmFuID0gbmFuXG5sZXQgbWF4X2Zsb2F0ID0gbWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gbWluX2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IGVwc2lsb25fZmxvYXRcbnR5cGUgbm9ucmVjIGZwY2xhc3MgPSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5sZXQgKCBeICkgPSAoIF4gKVxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCA9IGNoYXJfb2ZfaW50XG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBib29sX29mX3N0cmluZ1xubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGJvb2xfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBpbnRfb2Zfc3RyaW5nX29wdCA9IGludF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2Zsb2F0ID0gc3RyaW5nX29mX2Zsb2F0XG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcbmxldCAoIEAgKSAgPSAoIEAgKVxudHlwZSBub25yZWMgaW5fY2hhbm5lbCA9IGluX2NoYW5uZWxcbnR5cGUgbm9ucmVjIG91dF9jaGFubmVsID0gb3V0X2NoYW5uZWxcbmxldCBzdGRpbiA9IHN0ZGluXG5sZXQgc3Rkb3V0ID0gc3Rkb3V0XG5sZXQgc3RkZXJyID0gc3RkZXJyXG5sZXQgcHJpbnRfY2hhciA9IHByaW50X2NoYXJcbmxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbmxldCBwcmludF9ieXRlcyA9IHByaW50X2J5dGVzXG5sZXQgcHJpbnRfaW50ID0gcHJpbnRfaW50XG5sZXQgcHJpbnRfZmxvYXQgPSBwcmludF9mbG9hdFxubGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG5sZXQgcHJpbnRfbmV3bGluZSA9IHByaW50X25ld2xpbmVcbmxldCBwcmVycl9jaGFyID0gcHJlcnJfY2hhclxubGV0IHByZXJyX3N0cmluZyA9IHByZXJyX3N0cmluZ1xubGV0IHByZXJyX2J5dGVzID0gcHJlcnJfYnl0ZXNcbmxldCBwcmVycl9pbnQgPSBwcmVycl9pbnRcbmxldCBwcmVycl9mbG9hdCA9IHByZXJyX2Zsb2F0XG5sZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcbmxldCBwcmVycl9uZXdsaW5lID0gcHJlcnJfbmV3bGluZVxubGV0IHJlYWRfbGluZSA9IHJlYWRfbGluZVxubGV0IHJlYWRfaW50ID0gcmVhZF9pbnRcbmxldCByZWFkX2ludF9vcHQgPSByZWFkX2ludF9vcHRcbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdFxubGV0IHJlYWRfZmxvYXRfb3B0ID0gcmVhZF9mbG9hdF9vcHRcbnR5cGUgbm9ucmVjIG9wZW5fZmxhZyA9IG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcbmxldCBvcGVuX291dCA9IG9wZW5fb3V0XG5sZXQgb3Blbl9vdXRfYmluID0gb3Blbl9vdXRfYmluXG5sZXQgb3Blbl9vdXRfZ2VuID0gb3Blbl9vdXRfZ2VuXG5sZXQgZmx1c2ggPSBmbHVzaFxubGV0IGZsdXNoX2FsbCA9IGZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gb3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfc3RyaW5nID0gb3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IG91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IG91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBvdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2J5dGUgPSBvdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gb3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfdmFsdWUgPSBvdXRwdXRfdmFsdWVcbmxldCBzZWVrX291dCA9IHNlZWtfb3V0XG5sZXQgcG9zX291dCA9IHBvc19vdXRcbmxldCBvdXRfY2hhbm5lbF9sZW5ndGggPSBvdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9vdXQgPSBjbG9zZV9vdXRcbmxldCBjbG9zZV9vdXRfbm9lcnIgPSBjbG9zZV9vdXRfbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IG9wZW5faW4gPSBvcGVuX2luXG5sZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2JpblxubGV0IG9wZW5faW5fZ2VuID0gb3Blbl9pbl9nZW5cbmxldCBpbnB1dF9jaGFyID0gaW5wdXRfY2hhclxubGV0IGlucHV0X2xpbmUgPSBpbnB1dF9saW5lXG5sZXQgaW5wdXQgPSBpbnB1dFxubGV0IHJlYWxseV9pbnB1dCA9IHJlYWxseV9pbnB1dFxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5nXG5sZXQgaW5wdXRfYnl0ZSA9IGlucHV0X2J5dGVcbmxldCBpbnB1dF9iaW5hcnlfaW50ID0gaW5wdXRfYmluYXJ5X2ludFxubGV0IGlucHV0X3ZhbHVlID0gaW5wdXRfdmFsdWVcbmxldCBzZWVrX2luID0gc2Vla19pblxubGV0IHBvc19pbiA9IHBvc19pblxubGV0IGluX2NoYW5uZWxfbGVuZ3RoID0gaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9pbiA9IGNsb3NlX2luXG5sZXQgY2xvc2VfaW5fbm9lcnIgPSBjbG9zZV9pbl9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9pbiA9IHNldF9iaW5hcnlfbW9kZV9pblxubW9kdWxlIExhcmdlRmlsZSA9IExhcmdlRmlsZVxudHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWidcbiAgfCAnXFwxOTInIC4uICdcXDIxNCdcbiAgfCAnXFwyMTYnIC4uICdcXDIyMicgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneidcbiAgfCAnXFwyMjQnIC4uICdcXDI0NidcbiAgfCAnXFwyNDgnIC4uICdcXDI1NCcgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IG1hcnNoYWwgKG9iaiA6IHQpID1cbiAgTWFyc2hhbC50b19ieXRlcyBvYmogW11cbmxldCB1bm1hcnNoYWwgc3RyIHBvcyA9XG4gIChNYXJzaGFsLmZyb21fYnl0ZXMgc3RyIHBvcywgcG9zICsgTWFyc2hhbC50b3RhbF9zaXplIHN0ciBwb3MpXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG5sZXQgcmFpc2VfdW5kZWZpbmVkID0gT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBVbmRlZmluZWQpXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6IE9iai50IC0+IE9iai50IC0+IHVuaXQgPSBcImNhbWxfb2JqX21ha2VfZm9yd2FyZFwiXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJhaXNlIGVcblxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfdmFsX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICByZXN1bHRcblxuXG4oKiBbZm9yY2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXMgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmVcbiAgIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0cyBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsXG4gICBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxuXG5sZXQgZm9yY2UgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0cyB0YWcgY291bGQgaGF2ZVxuICAgICAgIGNoYW5nZWQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSlcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfbGF6eV9ibG9jayBsenZcblxuXG5sZXQgZm9yY2VfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcblxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cblxubGV0IGZvcmNlX3ZhbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfdmFsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBsYXp5X2Zyb21fZnVuID0gZnJvbV9mdW5cblxubGV0IGxhenlfZnJvbV92YWwgPSBmcm9tX3ZhbFxuXG5sZXQgbGF6eV9pc192YWwgPSBpc192YWxcblxuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGxhenlfZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBjZWxsIG9wdGlvblxuYW5kICdhIGNlbGwgPSB7IG11dGFibGUgY291bnQgOiBpbnQ7IG11dGFibGUgZGF0YSA6ICdhIGRhdGEgfVxuYW5kICdhIGRhdGEgPVxuICAgIFNlbXB0eVxuICB8IFNjb25zIG9mICdhICogJ2EgZGF0YVxuICB8IFNhcHAgb2YgJ2EgZGF0YSAqICdhIGRhdGFcbiAgfCBTbGF6eSBvZiAnYSBkYXRhIExhenkudFxuICB8IFNnZW4gb2YgJ2EgZ2VuXG4gIHwgU2J1ZmZpbyA6IGJ1ZmZpbyAtPiBjaGFyIGRhdGFcbmFuZCAnYSBnZW4gPSB7IG11dGFibGUgY3VyciA6ICdhIG9wdGlvbiBvcHRpb247IGZ1bmMgOiBpbnQgLT4gJ2Egb3B0aW9uIH1cbmFuZCBidWZmaW8gPVxuICB7IGljIDogaW5fY2hhbm5lbDsgYnVmZiA6IGJ5dGVzOyBtdXRhYmxlIGxlbiA6IGludDsgbXV0YWJsZSBpbmQgOiBpbnQgfVxuXG5leGNlcHRpb24gRmFpbHVyZVxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgeyBjb3VudCB9IC0+IGNvdW50XG5sZXQgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBTZW1wdHlcbiAgfCBTb21lIHsgZGF0YSB9IC0+IGRhdGFcblxubGV0IGZpbGxfYnVmZiBiID1cbiAgYi5sZW4gPC0gaW5wdXQgYi5pYyBiLmJ1ZmYgMCAoQnl0ZXMubGVuZ3RoIGIuYnVmZik7IGIuaW5kIDwtIDBcblxuXG5sZXQgcmVjIGdldF9kYXRhIDogdHlwZSB2LiBpbnQgLT4gdiBkYXRhIC0+IHYgZGF0YSA9IGZ1biBjb3VudCBkIC0+IG1hdGNoIGQgd2l0aFxuICgqIFJldHVybnMgZWl0aGVyIFNlbXB0eSBvciBTY29ucyhhLCBfKSBldmVuIHdoZW4gZCBpcyBhIGdlbmVyYXRvclxuICAgIG9yIGEgYnVmZmVyLiBJbiB0aG9zZSBjYXNlcywgdGhlIGl0ZW0gYSBpcyBzZWVuIGFzIGV4dHJhY3RlZCBmcm9tXG4gdGhlIGdlbmVyYXRvci9idWZmZXIuXG4gVGhlIGNvdW50IHBhcmFtZXRlciBpcyB1c2VkIGZvciBjYWxsaW5nIGBTZ2VuLWZ1bmN0aW9ucycuICAqKVxuICAgU2VtcHR5IHwgU2NvbnMgKF8sIF8pIC0+IGRcbiB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgY291bnQgZDEgd2l0aFxuICAgICAgIFNjb25zIChhLCBkMTEpIC0+IFNjb25zIChhLCBTYXBwIChkMTEsIGQyKSlcbiAgICAgfCBTZW1wdHkgLT4gZ2V0X2RhdGEgY291bnQgZDJcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNnZW4ge2N1cnIgPSBTb21lIE5vbmV9IC0+IFNlbXB0eVxuIHwgU2dlbiAoe2N1cnIgPSBTb21lKFNvbWUgYSl9IGFzIGcpIC0+XG4gICAgIGcuY3VyciA8LSBOb25lOyBTY29ucyhhLCBkKVxuIHwgU2dlbiBnIC0+XG4gICAgIGJlZ2luIG1hdGNoIGcuZnVuYyBjb3VudCB3aXRoXG4gICAgICAgTm9uZSAtPiBnLmN1cnIgPC0gU29tZShOb25lKTsgU2VtcHR5XG4gICAgIHwgU29tZSBhIC0+IFNjb25zKGEsIGQpXG4gICAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgZW5kXG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIFNlbXB0eSBlbHNlXG4gICAgICAgbGV0IHIgPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZCBpblxuICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICAgIGIuaW5kIDwtIHN1Y2MgYi5pbmQ7IFNjb25zKHIsIGQpXG4gfCBTbGF6eSBmIC0+IGdldF9kYXRhIGNvdW50IChMYXp5LmZvcmNlIGYpXG5cblxubGV0IHJlYyBwZWVrX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB2IG9wdGlvbiA9IGZ1biBzIC0+XG4gKCogY29uc3VsdCB0aGUgZmlyc3QgaXRlbSBvZiBzICopXG4gbWF0Y2ggcy5kYXRhIHdpdGhcbiAgIFNlbXB0eSAtPiBOb25lXG4gfCBTY29ucyAoYSwgXykgLT4gU29tZSBhXG4gfCBTYXBwIChfLCBfKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBzLmNvdW50IHMuZGF0YSB3aXRoXG4gICAgICAgU2NvbnMoYSwgXykgYXMgZCAtPiBzLmRhdGEgPC0gZDsgU29tZSBhXG4gICAgIHwgU2VtcHR5IC0+IE5vbmVcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNsYXp5IGYgLT4gcy5kYXRhIDwtIChMYXp5LmZvcmNlIGYpOyBwZWVrX2RhdGEgc1xuIHwgU2dlbiB7Y3VyciA9IFNvbWUgYX0gLT4gYVxuIHwgU2dlbiBnIC0+IGxldCB4ID0gZy5mdW5jIHMuY291bnQgaW4gZy5jdXJyIDwtIFNvbWUgeDsgeFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBiZWdpbiBzLmRhdGEgPC0gU2VtcHR5OyBOb25lIGVuZFxuICAgICBlbHNlIFNvbWUgKEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kKVxuXG5cbmxldCBwZWVrID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHMgLT4gcGVla19kYXRhIHNcblxuXG5sZXQgcmVjIGp1bmtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHVuaXQgPSBmdW4gcyAtPlxuICBtYXRjaCBzLmRhdGEgd2l0aFxuICAgIFNjb25zIChfLCBkKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBzLmRhdGEgPC0gZFxuICB8IFNnZW4gKHtjdXJyID0gU29tZSBffSBhcyBnKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBnLmN1cnIgPC0gTm9uZVxuICB8IFNidWZmaW8gYiAtPlxuICAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgIGlmIGIubGVuID09IDAgdGhlbiBzLmRhdGEgPC0gU2VtcHR5XG4gICAgICBlbHNlIChzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBiLmluZCA8LSBzdWNjIGIuaW5kKVxuICB8IF8gLT5cbiAgICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgICAgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4ganVua19kYXRhIHNcblxuXG5sZXQganVuayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGF0YSAtPiBqdW5rX2RhdGEgZGF0YVxuXG5sZXQgcmVjIG5nZXRfZGF0YSBuIHMgPVxuICBpZiBuIDw9IDAgdGhlbiBbXSwgcy5kYXRhLCAwXG4gIGVsc2VcbiAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICBTb21lIGEgLT5cbiAgICAgICAganVua19kYXRhIHM7XG4gICAgICAgIGxldCAoYWwsIGQsIGspID0gbmdldF9kYXRhIChwcmVkIG4pIHMgaW4gYSA6OiBhbCwgU2NvbnMgKGEsIGQpLCBzdWNjIGtcbiAgICB8IE5vbmUgLT4gW10sIHMuZGF0YSwgMFxuXG5cbmxldCBucGVla19kYXRhIG4gcyA9XG4gIGxldCAoYWwsIGQsIGxlbikgPSBuZ2V0X2RhdGEgbiBzIGluXG4gIHMuY291bnQgPC0gKHMuY291bnQgLSBsZW4pO1xuICBzLmRhdGEgPC0gZDtcbiAgYWxcblxuXG5sZXQgbnBlZWsgbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgZCAtPiBucGVla19kYXRhIG4gZFxuXG5sZXQgbmV4dCBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIGEgLT4ganVuayBzOyBhXG4gIHwgTm9uZSAtPiByYWlzZSBGYWlsdXJlXG5cblxubGV0IGVtcHR5IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgXyAtPiByYWlzZSBGYWlsdXJlXG4gIHwgTm9uZSAtPiAoKVxuXG5cbmxldCBpdGVyIGYgc3RybSA9XG4gIGxldCByZWMgZG9fcmVjICgpID1cbiAgICBtYXRjaCBwZWVrIHN0cm0gd2l0aFxuICAgICAgU29tZSBhIC0+IGp1bmsgc3RybTsgaWdub3JlKGYgYSk7IGRvX3JlYyAoKVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBkb19yZWMgKClcblxuXG4oKiBTdHJlYW0gYnVpbGRpbmcgZnVuY3Rpb25zICopXG5cbmxldCBmcm9tIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTZ2VuIHtjdXJyID0gTm9uZTsgZnVuYyA9IGZ9fVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4geCBsIC0+IFNjb25zICh4LCBsKSkgbCBTZW1wdHl9XG5cblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICAoKiBXZSBjYW5ub3QgdXNlIHRoZSBpbmRleCBwYXNzZWQgYnkgdGhlIFtmcm9tXSBmdW5jdGlvbiBkaXJlY3RseVxuICAgICAgIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJlYW0gY291bnQsIHdpdGggYWJzb2x1dGVseSBub1xuICAgICAgIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgc3RhcnQgZnJvbSAwLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2VcbiAgICAgICBvZiBbU3RyZWFtLmljb25zICdjJyAoU3RyZWFtLmZyb21fc3RyaW5nIFwiYWJcIildLCB0aGUgZmlyc3RcbiAgICAgICBhY2Nlc3MgdG8gdGhlIHN0cmluZyB3aWxsIGJlIG1hZGUgd2l0aCBjb3VudCBbMV0gYWxyZWFkeS5cbiAgICAqKVxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgcy5bY10pXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9ieXRlcyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBCeXRlcy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgKEJ5dGVzLmdldCBzIGMpKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfY2hhbm5lbCBpYyA9XG4gIFNvbWUge2NvdW50ID0gMDtcbiAgICAgICAgZGF0YSA9IFNidWZmaW8ge2ljID0gaWM7IGJ1ZmYgPSBCeXRlcy5jcmVhdGUgNDA5NjsgbGVuID0gMDsgaW5kID0gMH19XG5cblxuKCogU3RyZWFtIGV4cHJlc3Npb25zIGJ1aWxkZXJzICopXG5cbmxldCBpYXBwIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNhcHAgKGRhdGEgaSwgZGF0YSBzKX1cbmxldCBpY29ucyBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgZGF0YSBzKX1cbmxldCBpc2luZyBpID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIFNlbXB0eSl9XG5cbmxldCBsYXBwIGYgcyA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNhcHAgKGRhdGEgKGYgKCkpLCBkYXRhIHMpKSl9XG5cbmxldCBsY29ucyBmIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgZGF0YSBzKSkpfVxubGV0IGxzaW5nIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgU2VtcHR5KSkpfVxuXG5sZXQgc2VtcHR5ID0gTm9uZVxubGV0IHNsYXp5IGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShkYXRhIChmICgpKSkpfVxuXG4oKiBGb3IgZGVidWdnaW5nIHVzZSAqKVxuXG5sZXQgcmVjIGR1bXAgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgdCAtPiB1bml0ID0gZnVuIGYgcyAtPlxuICBwcmludF9zdHJpbmcgXCJ7Y291bnQgPSBcIjtcbiAgcHJpbnRfaW50IChjb3VudCBzKTtcbiAgcHJpbnRfc3RyaW5nIFwiOyBkYXRhID0gXCI7XG4gIGR1bXBfZGF0YSBmIChkYXRhIHMpO1xuICBwcmludF9zdHJpbmcgXCJ9XCI7XG4gIHByaW50X25ld2xpbmUgKClcbmFuZCBkdW1wX2RhdGEgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgZGF0YSAtPiB1bml0ID0gZnVuIGYgLT5cbiAgZnVuY3Rpb25cbiAgICBTZW1wdHkgLT4gcHJpbnRfc3RyaW5nIFwiU2VtcHR5XCJcbiAgfCBTY29ucyAoYSwgZCkgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNjb25zIChcIjtcbiAgICAgIGYgYTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2FwcCAoXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMjtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNsYXp5IF8gLT4gcHJpbnRfc3RyaW5nIFwiU2xhenlcIlxuICB8IFNnZW4gXyAtPiBwcmludF9zdHJpbmcgXCJTZ2VuXCJcbiAgfCBTYnVmZmlvIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2J1ZmZpb1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGJ1ZmZlciA6IGJ5dGVzO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIubGVuZ3RoXVxuICAgLSBbYi5sZW5ndGggPSBCeXRlcy5sZW5ndGggYi5idWZmZXJdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4ge2J1ZmZlciA9IHM7IHBvc2l0aW9uID0gMDsgbGVuZ3RoID0gbjsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgc3JjLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmJ1ZmZlcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmxlbmd0aF0uXG5cbiAgIEluIHBhcnRpY3VsYXIsIGFmdGVyIFtyZXNpemUgYiBtb3JlXSBpcyBjYWxsZWQsIGEgZGlyZWN0IGFjY2VzcyBvZlxuICAgc2l6ZSBbbW9yZV0gYXQgW2IucG9zaXRpb25dIHdpbGwgYWx3YXlzIGJlIGluLWJvdW5kcywgc28gdGhhdFxuICAgKHVuc2FmZV97Z2V0LHNldH0pIG1heSBiZSB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlbjtcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gIGFzc2VydCAob2xkX3BvcyArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICAoKVxuICAoKiBOb3RlOiB0aGVyZSBhcmUgdmFyaW91cyBzaXR1YXRpb25zIChwcmVlbXB0aXZlIHRocmVhZHMsIHNpZ25hbHMgYW5kXG4gICAgIGdjIGZpbmFsaXplcnMpIHdoZXJlIE9DYW1sIGNvZGUgbWF5IGJlIHJ1biBhc3luY2hyb25vdXNseTsgaW5cbiAgICAgcGFydGljdWxhciwgdGhlcmUgbWF5IGJlIGEgcmFjZSB3aXRoIGFub3RoZXIgdXNlciBvZiBbYl0sIGNoYW5naW5nXG4gICAgIGl0cyBtdXRhYmxlIGZpZWxkcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBbcmVzaXplXSBjYWxsLiBUaGUgQnVmZmVyXG4gICAgIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIGFueSBjb3JyZWN0bmVzcyBndWFyYW50ZWUgaWYgdGhhdCBoYXBwZW5zLFxuICAgICBidXQgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhhdCB0aGUgZGF0YXN0cnVjdHVyZSBpbnZhcmlhbnRzIGhvbGQgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgLS0gYXMgd2UgcGxhbiB0byB1c2UgW3Vuc2FmZV97Z2V0LHNldH1dLlxuXG4gICAgIFRoZXJlIGFyZSB0d28gcG90ZW50aWFsIGFsbG9jYXRpb24gcG9pbnRzIGluIHRoaXMgZnVuY3Rpb24sXG4gICAgIFtyZWZdIGFuZCBbQnl0ZXMuY3JlYXRlXSwgYnV0IGFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZSBmaWVsZHNcbiAgICAgb2YgW2JdIGhhcHBlbiBiZWZvcmUgYm90aCBvZiB0aGVtIG9yIGFmdGVyIGJvdGggb2YgdGhlbS5cblxuICAgICBXZSB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgW2IucG9zaXRpb25dIG1heSBjaGFuZ2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMsXG4gICAgIGFuZCBjaGVjayB0aGF0IHRoZSBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIHBvc3Rjb25kaXRpb25cbiAgICAgaG9sZHMgZm9yIGJvdGggdmFsdWVzIG9mIFtiLnBvc2l0aW9uXSwgYmVmb3JlIG9yIGFmdGVyIHRoZSBmdW5jdGlvblxuICAgICBpcyBjYWxsZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZm9sbG93aW5nIGludmFyaWFudHMgbXVzdCBob2xkIGlmIHRoZVxuICAgICBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3RseSwgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGJ1ZmZlciBpbnZhcmlhbnRzOlxuICAgICAtIFtvbGQoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW25ldyhiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbb2xkKGIubGVuZ3RoKSA8PSBuZXcoYi5sZW5ndGgpXVxuXG4gICAgIE5vdGU6IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBvbGQoYi5sZW5ndGgpXSBkb2VzICpub3QqXG4gICAgIGhvbGQgaW4gZ2VuZXJhbCwgYXMgaXQgaXMgcHJlY2lzZWx5IHRoZSBjYXNlIHdoZXJlIHlvdSBuZWVkXG4gICAgIHRvIGNhbGwgW3Jlc2l6ZV0gdG8gaW5jcmVhc2UgW2IubGVuZ3RoXS5cblxuICAgICBOb3RlOiBbYXNzZXJ0XSBhYm92ZSBkb2VzIG5vdCBtZWFuIHRoYXQgd2Uga25vdyB0aGUgY29uZGl0aW9uc1xuICAgICBhbHdheXMgaG9sZCwgYnV0IHRoYXQgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gY29ycmVjdGx5XG4gICAgIG9ubHkgaWYgdGhleSBob2xkLlxuXG4gICAgIE5vdGU6IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgZG9lcyBub3QgbmVlZFxuICAgICB0byBiZSBjaGVja2VkIHdpdGggdGhpcyBsZXZlbCBvZiBzY3J1dGlueSwgZ2l2ZW4gdGhhdCB0aGV5XG4gICAgIHJlYWQvd3JpdGUgdGhlIGJ1ZmZlciBpbW1lZGlhdGVseSBhZnRlciBjaGVja2luZyB0aGF0XG4gICAgIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZCBvciBjYWxsaW5nIFtyZXNpemVdLlxuICAqKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbiBsZXQgYWRkX3V0Zl84X3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICBhZGRfY2hhciBiIChDaGFyLnVuc2FmZV9jaHIgdSlcbiB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4QzAgbG9yICh1IGxzciA2KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMyA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMztcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEUwIGxvciAodSBsc3IgMTIpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDNcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhGMCBsb3IgKHUgbHNyIDE4KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMylcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgKCogVGhlIGFzc2VydGlvbiBiZWxvdyBtYXkgZmFpbCBpbiB3ZWlyZCBzY2VuYXJpbyB3aGVyZVxuICAgICB0aHJlYWRlZC9maW5hbGl6ZXIgY29kZSwgcnVuIGFzeW5jaHJvbm91c2x5IGR1cmluZyB0aGVcbiAgICAgW3JlYWxseV9pbnB1dF91cF90b10gY2FsbCwgcmFjZXMgb24gdGhlIGJ1ZmZlcjsgd2UgZG9uJ3QgZW5zdXJlXG4gICAgIGNvcnJlY3RuZXNzIGluIHRoaXMgY2FzZSwgYnV0IG5lZWQgdG8gcHJlc2VydmUgdGhlIGludmFyaWFudHMgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgKHNlZSBkaXNjdXNzaW9uIG9mIFtyZXNpemVdKS4gKilcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbiA8PSBiLmxlbmd0aCk7XG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIHVuc2FmZV9zZXRfaW50OCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgdW5zYWZlX3NldF9pbnQxNiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgdW5zYWZlX3NldF9pbnQzMiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiBidWNrZXRzIGJlY29tZSB0b28gbG9uZy4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gcmVmIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gcmFuZG9taXplZCA6PSB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9ICFyYW5kb21pemVkXG5cbmxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILmhhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZylcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfb3Blbl90YWcgc3RhdGUgcyA9IHBwX29wZW5fc3RhZyBzdGF0ZSAoU3RyaW5nX3RhZyBzKVxubGV0IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSA9IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKClcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV90YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID0gZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggPSBwcF9vcGVuX2hib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdmJveCA9IHBwX29wZW5fdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9odmJveCA9IHBwX29wZW5faHZib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faG92Ym94ID0gcHBfb3Blbl9ob3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fYm94ID0gcHBfb3Blbl9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX2JveCA9IHBwX2Nsb3NlX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl90YWcgPSBwcF9vcGVuX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGFnID0gcHBfY2xvc2VfdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3N0YWcgPSBwcF9vcGVuX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3N0YWcgPSBwcF9jbG9zZV9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9hcyA9IHBwX3ByaW50X2FzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zdHJpbmcgPSBwcF9wcmludF9zdHJpbmcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2J5dGVzID0gcHBfcHJpbnRfYnl0ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ludCA9IHBwX3ByaW50X2ludCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmxvYXQgPSBwcF9wcmludF9mbG9hdCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY2hhciA9IHBwX3ByaW50X2NoYXIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Jvb2wgPSBwcF9wcmludF9ib29sIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9icmVhayA9IHBwX3ByaW50X2JyZWFrIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jdXQgPSBwcF9wcmludF9jdXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3NwYWNlID0gcHBfcHJpbnRfc3BhY2Ugc3RkX2Zvcm1hdHRlclxuYW5kIGZvcmNlX25ld2xpbmUgPSBwcF9mb3JjZV9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbHVzaCA9IHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9uZXdsaW5lID0gcHBfcHJpbnRfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaWZfbmV3bGluZSA9IHBwX3ByaW50X2lmX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuXG5hbmQgb3Blbl90Ym94ID0gcHBfb3Blbl90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90Ym94ID0gcHBfY2xvc2VfdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGJyZWFrID0gcHBfcHJpbnRfdGJyZWFrIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF90YWIgPSBwcF9zZXRfdGFiIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YWIgPSBwcF9wcmludF90YWIgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21hcmdpbiA9IHBwX3NldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfaW5kZW50ID0gcHBfc2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2dlb21ldHJ5ID0gcHBfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBzYWZlX3NldF9nZW9tZXRyeSA9IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHVwZGF0ZV9nZW9tZXRyeSA9IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2JveGVzID0gcHBfc2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9ib3hlcyA9IHBwX2dldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIG92ZXJfbWF4X2JveGVzID0gcHBfb3Zlcl9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9wcmludF90YWdzID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9wcmludF90YWdzID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9tYXJrX3RhZ3MgPVxuICBwcF9zZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFya190YWdzID1cbiAgcHBfZ2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3RhZ3MgPVxuICBwcF9zZXRfdGFncyBzdGRfZm9ybWF0dGVyXG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRfZm9ybWF0dGVyIGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBlcnJfZm9ybWF0dGVyIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyICgpO1xuICBwcF9wcmludF9mbHVzaCBlcnJfZm9ybWF0dGVyICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG4oKlxuXG4gIERlcHJlY2F0ZWQgc3R1ZmYuXG5cbiopXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlXG4gICAgfm91dDpmIH5mbHVzaDpnIH5uZXdsaW5lOmggfnNwYWNlczppID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaCxcbiAgIHN0YXRlLnBwX291dF9uZXdsaW5lLCBzdGF0ZS5wcF9vdXRfc3BhY2VzKVxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogZXJyb3IgcHJvbmUgZnVuY3Rpb24sIGRvIG5vdCB1c2UgaXQuXG4gICBUaGlzIGZ1bmN0aW9uIGlzIG5laXRoZXIgY29tcG9zaXRpb25hbCBub3IgaW5jcmVtZW50YWwsIHNpbmNlIGl0IGZsdXNoZXNcbiAgIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhdCBlYWNoIGNhbGwuXG4gICBUbyBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgZGVmaW5lIGEgZm9ybWF0dGVyIG9mIHlvdXIgb3duIHdyaXRpbmcgdG9cbiAgIHRoZSBidWZmZXIgYXJndW1lbnQsIGFzIGluXG4gICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiXG4gICB0aGVuIHVzZSB7IWZwcmludGYgcHBmfSBhcyB1c3VhbC4gKilcbmxldCBicHJpbnRmIGIgKEZvcm1hdCAoZm10LCBfKSA6ICgnYSwgZm9ybWF0dGVyLCB1bml0KSBmb3JtYXQpID1cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPSBvdXRwdXRfYWNjIHBwZiBhY2M7IHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxuKCogRGVwcmVjYXRlZCA6IGFsaWFzIGZvciBrc3ByaW50Zi4gKilcbmxldCBrcHJpbnRmID0ga3NwcmludGZcblxuXG5cbigqIERlcHJlY2F0ZWQgdGFnIGZ1bmN0aW9ucyAqKVxuXG50eXBlIGZvcm1hdHRlcl90YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fdGFnIDogdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3RhZyA6IHRhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV90YWcgOiB0YWcgLT4gdW5pdDtcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV90YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV90YWcgPSBwY3Q7XG4gICB9ID1cbiAgbGV0IHN0cmluZ2lmeSBmIGUgPSBmdW5jdGlvbiBTdHJpbmdfdGFnIHMgLT4gZiBzIHwgXyAtPiBlIGluXG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gc3RyaW5naWZ5IG1vdCBcIlwiO1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgbWN0IFwiXCI7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHN0cmluZ2lmeSBwb3QgKCk7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgcGN0ICgpXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgZm10ICgpID1cbiAgbGV0IGZ1bnMgPSBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuICBsZXQgbWFya19vcGVuX3RhZyBzID0gZnVucy5tYXJrX29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgbWFya19jbG9zZV90YWcgcyA9IGZ1bnMubWFya19jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9vcGVuX3RhZyBzID0gZnVucy5wcmludF9vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X2Nsb3NlX3RhZyBzID0gZnVucy5wcmludF9jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIHttYXJrX29wZW5fdGFnOyBtYXJrX2Nsb3NlX3RhZzsgcHJpbnRfb3Blbl90YWc7IHByaW50X2Nsb3NlX3RhZ31cblxubGV0IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgW3N0ZGliXSBpcyBlcXVpdmFsZW50IHRvIFtTY2FubmluZy5mcm9tX2NoYW5uZWwgU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgc3RkaWIgOiBpbl9jaGFubmVsXG4gICgqIEFuIGFsaWFzIGZvciBbU2NhbmYuc3RkaW5dLCB0aGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbVxuICAgICBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbiAgdmFsIG1lbW9fZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuICAoKiBPYnNvbGV0ZS4gKilcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpYl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuXG4gIGxldCBzdGRpYiA9IHN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuXG4gICgqXG4gICAgIE9ic29sZXRlOiBhIG1lbW8gW2Zyb21fY2hhbm5lbF0gdmVyc2lvbiB0byBidWlsZCBhIFtTY2FubmluZy5pbl9jaGFubmVsXVxuICAgICBzY2FubmluZyBidWZmZXIgb3V0IG9mIGEgW1N0ZGxpYi5pbl9jaGFubmVsXS5cbiAgICAgVGhpcyBmdW5jdGlvbiB3YXMgdXNlZCB0byB0cnkgdG8gcHJlc2VydmUgdGhlIHNjYW5uaW5nXG4gICAgIHNlbWFudGljcyBmb3IgdGhlIChub3cgb2Jzb2xldGUpIGZ1bmN0aW9uIFtmc2NhbmZdLlxuICAgICBHaXZlbiB0aGF0IGFsbCBzY2FubmVyIG11c3QgcmVhZCBmcm9tIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIHNjYW5uaW5nXG4gICAgIGJ1ZmZlciwgW2ZzY2FuZl0gbXVzdCByZWFkIGZyb20gb25lIVxuICAgICBNb3JlIHByZWNpc2VseSwgZ2l2ZW4gW2ljXSwgYWxsIHN1Y2Nlc3NpdmUgY2FsbHMgW2ZzY2FuZiBpY10gbXVzdCByZWFkXG4gICAgIGZyb20gdGhlIHNhbWUgc2Nhbm5pbmcgYnVmZmVyLlxuICAgICBUaGlzIG9ibGlnZWQgdGhpcyBsaWJyYXJ5IHRvIGFsbG9jYXRlZCBzY2FubmluZyBidWZmZXJzIHRoYXQgd2VyZVxuICAgICBub3QgcHJvcGVybHkgZ2FyYmFnZSBjb2xsZWN0YWJsZSwgaGVuY2UgbGVhZGluZyB0byBtZW1vcnkgbGVha3MuXG4gICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgZnJvbSBhIFtTdGRsaWIuaW5fY2hhbm5lbF0gaW5wdXQgY2hhbm5lbFxuICAgICBbaWNdLCBzaW1wbHkgZGVmaW5lIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIGZvcm1hdHRlZCBpbnB1dCBjaGFubmVsIGFzIGluXG4gICAgIFtsZXQgaWIgPSBTY2FubmluZy5mcm9tX2NoYW5uZWwgaWNdLCB0aGVuIHVzZSBbU2NhbmYuYnNjYW5mIGliXSBhcyB1c3VhbC5cbiAgKilcbiAgbGV0IG1lbW9fZnJvbV9pYyA9XG4gICAgbGV0IG1lbW8gPSByZWYgW10gaW5cbiAgICAoZnVuIHNjYW5fY2xvc2VfaWMgaWMgLT5cbiAgICAgdHJ5IExpc3QuYXNzcSBpYyAhbWVtbyB3aXRoXG4gICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgbGV0IGliID1cbiAgICAgICAgIGZyb21faWMgc2Nhbl9jbG9zZV9pYyAoRnJvbV9jaGFubmVsIGljKSBpYyBpblxuICAgICAgIG1lbW8gOj0gKGljLCBpYikgOjogIW1lbW87XG4gICAgICAgaWIpXG5cblxuICAoKiBPYnNvbGV0ZTogc2VlIHshbWVtb19mcm9tX2ljfSBhYm92ZS4gKilcbiAgbGV0IG1lbW9fZnJvbV9jaGFubmVsID0gbWVtb19mcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxudHlwZSAnYSBrc2NhbmZfcmVzdWx0ID0gQXJncyBvZiAnYSB8IEV4YyBvZiBleG5cblxubGV0IGtzY2FuZiBpYiBlZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCB0cnkgQXJncyAobWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycykgd2l0aFxuICAgICAgfCAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSkgYXMgZXhjIC0+IEV4YyBleGNcbiAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB3aXRoXG4gICAgICB8IEFyZ3MgYXJncyAtPiBhcHBseSBmIGFyZ3NcbiAgICAgIHwgRXhjIGV4YyAtPiBlZiBpYiBleGNcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuXG5cbigqIERlcHJlY2F0ZWQgKilcbmxldCBrZnNjYW5mIGljIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBlZiBmbXRcbmxldCBmc2NhbmYgaWMgZm10ID0ga3NjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgc2NhbmZfYmFkX2lucHV0IGZtdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNlZWRlZFNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGdldF9rZXk6ICdhIGNvbnRhaW5lciAtPiB0IG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshaXRlcn0sIHshZm9sZH0sIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGl0ZXIgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGRcbiAgICAgICAgICAgIGVuZDsgZG9fYnVja2V0IHJlc3QgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGZvbGQgZiBoIGluaXQgPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICAgICAgbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAgIGFjY3VcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZCBhY2N1XG4gICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0IGFjY3UgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgICAgZG9uZTtcbiAgICAgICFhY2N1XG5cbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZiBrIGQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZCAtPlxuICAgICAgICAgICAgICAgICAgICBILnNldF9rZXlfZGF0YSBjIGsgbmV3X2Q7XG4gICAgICAgICAgICAgICAgICAgIENvbnMoaGssIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCB0b19zZXEgdGJsID1cbiAgICAgICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICAgICAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgICAgICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gICAgICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgICAgICB8IENvbnMgKF8sIGMsIG5leHQpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggaSBuZXh0ICgpXG4gICAgICAgICAgICAgIHwgU29tZSBrZXksIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYXV4IDAgRW1wdHlcblxuICAgIGxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKHQyOignaywnZCkgdCk6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIG1hdGNoIEFycmF5Lmxlbmd0aCBkaW1zLCBsYXlvdXQgd2l0aFxuICAgIHwgMCwgXyAtPiBhcnJcbiAgICB8IGRsZW4sIENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IGRsZW4sIEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxuKCogQW4gaW50ZWdlciBudW1iZXIgb2YgY2VudHMgKilcbnR5cGUgbW9uZXkgPSBaLnRcbnR5cGUgaW50ZWdlciA9IFoudFxudHlwZSBkZWNpbWFsID0gUS50XG50eXBlIGRhdGUgPSBDYWxlbmRhckxpYi5EYXRlLnRcbnR5cGUgZHVyYXRpb24gPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC50XG50eXBlICdhIGVvcHRpb24gPSBFTm9uZSBvZiB1bml0IHwgRVNvbWUgb2YgJ2FcblxudHlwZSBzb3VyY2VfcG9zaXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBzdGFydF9saW5lIDogaW50O1xuICBzdGFydF9jb2x1bW4gOiBpbnQ7XG4gIGVuZF9saW5lIDogaW50O1xuICBlbmRfY29sdW1uIDogaW50O1xuICBsYXdfaGVhZGluZ3MgOiBzdHJpbmcgbGlzdDtcbn1cbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxuZXhjZXB0aW9uIEVtcHR5RXJyb3JcbmV4Y2VwdGlvbiBBc3NlcnRpb25GYWlsZWQgb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gQ29uZmxpY3RFcnJvciBvZiBzb3VyY2VfcG9zaXRpb25cbmV4Y2VwdGlvbiBVbmNvbXBhcmFibGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbmRpdmlzYWJsZUR1cmF0aW9uc1xuZXhjZXB0aW9uIEltcG9zc2libGVEYXRlXG5leGNlcHRpb24gTm9WYWx1ZVByb3ZpZGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuXG5sZXQgbW9uZXlfb2ZfY2VudHNfc3RyaW5nIChjZW50cyA6IHN0cmluZykgOiBtb25leSA9IFoub2Zfc3RyaW5nIGNlbnRzXG5sZXQgbW9uZXlfb2ZfdW5pdHNfaW50ICh1bml0cyA6IGludCkgOiBtb25leSA9IFouKG9mX2ludCB1bml0cyAqIG9mX2ludCAxMDApXG5sZXQgbW9uZXlfb2ZfY2VudHNfaW50ZWdlciAoY2VudHMgOiBpbnRlZ2VyKSA6IG1vbmV5ID0gY2VudHNcbmxldCBtb25leV90b19mbG9hdCAobSA6IG1vbmV5KSA6IGZsb2F0ID0gWi50b19mbG9hdCBtIC8uIDEwMC5cblxubGV0IG1vbmV5X29mX2RlY2ltYWwgKGQgOiBkZWNpbWFsKSA6IG1vbmV5ID1cbiAgUS50b19iaWdpbnQgKFEubXVsIGQgKFEub2ZfaW50IDEwMCkpXG5cbmxldCBtb25leV90b19zdHJpbmcgKG0gOiBtb25leSkgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlLjJmXCIgUS4odG9fZmxvYXQgKG9mX2JpZ2ludCBtIC8gb2ZfaW50IDEwMCkpXG5cbmxldCBtb25leV90b19jZW50cyBtID0gbVxuXG5sZXQgbW9uZXlfcm91bmQgKG0gOiBtb25leSkgOiBtb25leSA9XG4gIGxldCB1bml0cywgY2VudHMgPSBaLmRpdl9yZW0gbSAoWi5vZl9pbnQgMTAwKSBpblxuICAoKiBJZiBbbV0gaXMgbmVnYXRpdmUsIFtjZW50c10gd2lsbCBhbHNvIGJlIG5lZ2F0aXZlLiAqKVxuICBpZiBaLihhYnMgY2VudHMgPCBvZl9pbnQgNTApIHRoZW4gWi4odW5pdHMgKiBvZl9pbnQgMTAwKVxuICBlbHNlIFouKCh1bml0cyArIG9mX2ludCAoc2lnbiB1bml0cykpICogb2ZfaW50IDEwMClcblxubGV0IGRlY2ltYWxfb2Zfc3RyaW5nIChkIDogc3RyaW5nKSA6IGRlY2ltYWwgPSBRLm9mX3N0cmluZyBkXG5sZXQgZGVjaW1hbF90b19mbG9hdCAoZCA6IGRlY2ltYWwpIDogZmxvYXQgPSBRLnRvX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2Zsb2F0IChkIDogZmxvYXQpIDogZGVjaW1hbCA9IFEub2ZfZmxvYXQgZFxubGV0IGRlY2ltYWxfb2ZfaW50ZWdlciAoZCA6IGludGVnZXIpIDogZGVjaW1hbCA9IFEub2ZfYmlnaW50IGRcblxubGV0IGRlY2ltYWxfdG9fc3RyaW5nIH4obWF4X3ByZWNfZGlnaXRzIDogaW50KSAoaSA6IGRlY2ltYWwpIDogc3RyaW5nID1cbiAgbGV0IHNpZ24gPSBRLnNpZ24gaSBpblxuICBsZXQgbiA9IFouYWJzIChRLm51bSBpKSBpblxuICBsZXQgZCA9IFouYWJzIChRLmRlbiBpKSBpblxuICBsZXQgaW50X3BhcnQgPSBaLmVkaXYgbiBkIGluXG4gIGxldCBuID0gcmVmIChaLmVyZW0gbiBkKSBpblxuICBsZXQgZGlnaXRzID0gcmVmIFtdIGluXG4gIGxldCBsZWFkaW5nX3plcm9lcyAoZGlnaXRzIDogWi50IGxpc3QpIDogaW50ID1cbiAgICBtYXRjaFxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gZGlnaXQgbnVtX2xlYWRpbmdfemVyb2VzIC0+XG4gICAgICAgICAgbWF0Y2ggbnVtX2xlYWRpbmdfemVyb2VzIHdpdGhcbiAgICAgICAgICB8IGBFbmQgXyAtPiBudW1fbGVhZGluZ196ZXJvZXNcbiAgICAgICAgICB8IGBCZWdpbiBpIC0+IGlmIFouKGRpZ2l0ID0gemVybykgdGhlbiBgQmVnaW4gKGkgKyAxKSBlbHNlIGBFbmQgaSlcbiAgICAgICAgZGlnaXRzIChgQmVnaW4gMClcbiAgICB3aXRoXG4gICAgfCBgRW5kIGkgLT4gaVxuICAgIHwgYEJlZ2luIGkgLT4gaVxuICBpblxuICB3aGlsZVxuICAgICFuIDw+IFouemVyb1xuICAgICYmIExpc3QubGVuZ3RoICFkaWdpdHMgLSBsZWFkaW5nX3plcm9lcyAhZGlnaXRzIDwgbWF4X3ByZWNfZGlnaXRzXG4gIGRvXG4gICAgbiA6PSBaLm11bCAhbiAoWi5vZl9pbnQgMTApO1xuICAgIGRpZ2l0cyA6PSBaLmVkaXYgIW4gZCA6OiAhZGlnaXRzO1xuICAgIG4gOj0gWi5lcmVtICFuIGRcbiAgZG9uZTtcbiAgRm9ybWF0LmFzcHJpbnRmIFwiJXMlYS4lYSVzXCJcbiAgICAoaWYgc2lnbiA8IDAgdGhlbiBcIi1cIiBlbHNlIFwiXCIpXG4gICAgWi5wcF9wcmludCBpbnRfcGFydFxuICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBfZm10ICgpIC0+ICgpKVxuICAgICAgIChmdW4gZm10IGRpZ2l0IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhXCIgWi5wcF9wcmludCBkaWdpdCkpXG4gICAgKExpc3QucmV2ICFkaWdpdHMpXG4gICAgKGlmIExpc3QubGVuZ3RoICFkaWdpdHMgLSBsZWFkaW5nX3plcm9lcyAhZGlnaXRzID0gbWF4X3ByZWNfZGlnaXRzIHRoZW4gXCLigKZcIlxuICAgIGVsc2UgXCJcIilcblxubGV0IGRlY2ltYWxfcm91bmQgKHEgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPVxuICAoKiBJbXBsZW1lbnRzIHRoZSB3b3JrYXJvdW5kIGJ5XG4gICAgIGh0dHBzOi8vZ21wbGliLm9yZy9saXN0LWFyY2hpdmVzL2dtcC1kaXNjdXNzLzIwMDktTWF5LzAwMzc2Ny5odG1sICopXG4gIGxldCBuID0gUS5udW0gcSBpblxuICBsZXQgZCA9IFEuZGVuIHEgaW5cbiAgUS5vZl9iaWdpbnQgWi4oZmRpdiAoKG9mX2ludCAyICogbikgKyBkKSAob2ZfaW50IDIgKiBkKSlcblxubGV0IGRlY2ltYWxfb2ZfbW9uZXkgKG0gOiBtb25leSkgOiBkZWNpbWFsID1cbiAgUS5kaXYgKFEub2ZfYmlnaW50IG0pIChRLm9mX2ludCAxMDApXG5cbmxldCBpbnRlZ2VyX29mX3N0cmluZyAocyA6IHN0cmluZykgOiBpbnRlZ2VyID0gWi5vZl9zdHJpbmcgc1xubGV0IGludGVnZXJfdG9fc3RyaW5nIChpIDogaW50ZWdlcikgOiBzdHJpbmcgPSBaLnRvX3N0cmluZyBpXG5sZXQgaW50ZWdlcl90b19pbnQgKGkgOiBpbnRlZ2VyKSA6IGludCA9IFoudG9faW50IGlcbmxldCBpbnRlZ2VyX29mX2ludCAoaSA6IGludCkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgaVxubGV0IGludGVnZXJfZXhwb25lbnRpYXRpb24gKGkgOiBpbnRlZ2VyKSAoZSA6IGludCkgOiBpbnRlZ2VyID0gWi5wb3cgaSBlXG5sZXQgaW50ZWdlcl9sb2cyID0gWi5sb2cyXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgKENhbGVuZGFyTGliLkRhdGUueWVhciBkKVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBaLm9mX2ludCAoQ2FsZW5kYXJMaWIuRGF0ZS5pbnRfb2ZfbW9udGggKENhbGVuZGFyTGliLkRhdGUubW9udGggZCkpXG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIFoub2ZfaW50IChDYWxlbmRhckxpYi5EYXRlLmRheV9vZl9tb250aCBkKVxuXG5sZXQgZGF0ZV9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZGF0ZSA9XG4gIHRyeSBDYWxlbmRhckxpYi5EYXRlLm1ha2UgeWVhciBtb250aCBkYXkgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID0gQ2FsZW5kYXJMaWIuUHJpbnRlci5EYXRlLnRvX3N0cmluZyBkXG5cbmxldCBmaXJzdF9kYXlfb2ZfbW9udGggKGQgOiBkYXRlKSA6IGRhdGUgPVxuICBkYXRlX29mX251bWJlcnMgKENhbGVuZGFyTGliLkRhdGUueWVhciBkKVxuICAgIChDYWxlbmRhckxpYi5EYXRlLmludF9vZl9tb250aCAoQ2FsZW5kYXJMaWIuRGF0ZS5tb250aCBkKSlcbiAgICAxXG5cbmxldCBsYXN0X2RheV9vZl9tb250aCAoZCA6IGRhdGUpIDogZGF0ZSA9XG4gIGRhdGVfb2ZfbnVtYmVycyAoQ2FsZW5kYXJMaWIuRGF0ZS55ZWFyIGQpXG4gICAgKENhbGVuZGFyTGliLkRhdGUuaW50X29mX21vbnRoIChDYWxlbmRhckxpYi5EYXRlLm1vbnRoIGQpKVxuICAgIChDYWxlbmRhckxpYi5EYXRlLmRheXNfaW5fbW9udGggZClcblxubGV0IGR1cmF0aW9uX29mX251bWJlcnMgKHllYXIgOiBpbnQpIChtb250aCA6IGludCkgKGRheSA6IGludCkgOiBkdXJhdGlvbiA9XG4gIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm1ha2UgeWVhciBtb250aCBkYXlcblxubGV0IGR1cmF0aW9uX3RvX3N0cmluZyAoZCA6IGR1cmF0aW9uKSA6IHN0cmluZyA9XG4gIGxldCB4LCB5LCB6ID0gQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QueW1kIGQgaW5cbiAgbGV0IHRvX3ByaW50ID1cbiAgICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICBpblxuICBtYXRjaCB0b19wcmludCB3aXRoXG4gIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gIHwgXyAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIilcbiAgICAgICAgIChmdW4gZm10IChkLCBsKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZCAlc1wiIGQgbCkpXG4gICAgICB0b19wcmludFxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC55bWQgZFxuXG5sZXQgeW9qc29uX29mX21vbmV5IChtIDogbW9uZXkpID0gYEZsb2F0IChtb25leV90b19mbG9hdCBtKVxubGV0IHlvanNvbl9vZl9pbnRlZ2VyIChpIDogaW50ZWdlcikgPSBgSW50IChpbnRlZ2VyX3RvX2ludCBpKVxubGV0IHlvanNvbl9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgPSBgRmxvYXQgKGRlY2ltYWxfdG9fZmxvYXQgZClcbmxldCB5b2pzb25fb2ZfZGF0ZSAoZCA6IGRhdGUpID0gYFN0cmluZyAoZGF0ZV90b19zdHJpbmcgZClcbmxldCB5b2pzb25fb2ZfZHVyYXRpb24gKGQgOiBkdXJhdGlvbikgPSBgU3RyaW5nIChkdXJhdGlvbl90b19zdHJpbmcgZClcblxudHlwZSBydW50aW1lX3ZhbHVlID1cbiAgfCBVbml0XG4gIHwgQm9vbCBvZiBib29sXG4gIHwgTW9uZXkgb2YgbW9uZXlcbiAgfCBJbnRlZ2VyIG9mIGludGVnZXJcbiAgfCBEZWNpbWFsIG9mIGRlY2ltYWxcbiAgfCBEYXRlIG9mIGRhdGVcbiAgfCBEdXJhdGlvbiBvZiBkdXJhdGlvblxuICB8IEVudW0gb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nICogcnVudGltZV92YWx1ZSlcbiAgfCBTdHJ1Y3Qgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nICogcnVudGltZV92YWx1ZSkgbGlzdFxuICB8IEFycmF5IG9mIHJ1bnRpbWVfdmFsdWUgYXJyYXlcbiAgfCBVbmVtYmVkZGFibGVcbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxubGV0IHVuZW1iZWRkYWJsZSBfID0gVW5lbWJlZGRhYmxlXG5sZXQgZW1iZWRfdW5pdCAoKSA9IFVuaXRcbmxldCBlbWJlZF9ib29sIHggPSBCb29sIHhcbmxldCBlbWJlZF9tb25leSB4ID0gTW9uZXkgeFxubGV0IGVtYmVkX2ludGVnZXIgeCA9IEludGVnZXIgeFxubGV0IGVtYmVkX2RlY2ltYWwgeCA9IERlY2ltYWwgeFxubGV0IGVtYmVkX2RhdGUgeCA9IERhdGUgeFxubGV0IGVtYmVkX2R1cmF0aW9uIHggPSBEdXJhdGlvbiB4XG5sZXQgZW1iZWRfYXJyYXkgZiB4ID0gQXJyYXkgKEFycmF5Lm1hcCBmIHgpXG5cbnR5cGUgaW5mb3JtYXRpb24gPSBzdHJpbmcgbGlzdCBbQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbnR5cGUgcmF3X2V2ZW50ID1cbiAgfCBCZWdpbkNhbGwgb2YgaW5mb3JtYXRpb25cbiAgfCBFbmRDYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgVmFyaWFibGVEZWZpbml0aW9uIG9mIGluZm9ybWF0aW9uICogcnVudGltZV92YWx1ZVxuICB8IERlY2lzaW9uVGFrZW4gb2Ygc291cmNlX3Bvc2l0aW9uXG5cbnR5cGUgZXZlbnQgPVxuICB8IFZhckNvbXB1dGF0aW9uIG9mIHZhcl9kZWZcbiAgfCBGdW5DYWxsIG9mIGZ1bl9jYWxsXG4gIHwgU3ViU2NvcGVDYWxsIG9mIHtcbiAgICAgIG5hbWUgOiBpbmZvcm1hdGlvbjtcbiAgICAgIGlucHV0cyA6IHZhcl9kZWYgbGlzdDtcbiAgICAgIGJvZHkgOiBldmVudCBsaXN0O1xuICAgIH1cbltAQGRlcml2aW5nIHlvanNvbl9vZl1cblxuYW5kIHZhcl9kZWYgPSB7XG4gIHBvcyA6IHNvdXJjZV9wb3NpdGlvbiBvcHRpb247XG4gIG5hbWUgOiBpbmZvcm1hdGlvbjtcbiAgdmFsdWUgOiBydW50aW1lX3ZhbHVlO1xuICBmdW5fY2FsbHMgOiBmdW5fY2FsbCBsaXN0IG9wdGlvbjtcbn1cblxuYW5kIGZ1bl9jYWxsID0ge1xuICBmdW5fbmFtZSA6IGluZm9ybWF0aW9uO1xuICBpbnB1dCA6IHZhcl9kZWY7XG4gIGJvZHkgOiBldmVudCBsaXN0O1xuICBvdXRwdXQgOiB2YXJfZGVmO1xufVxuXG5sZXQgbG9nX3JlZiA6IHJhd19ldmVudCBsaXN0IHJlZiA9IHJlZiBbXVxubGV0IHJlc2V0X2xvZyAoKSA9IGxvZ19yZWYgOj0gW11cbmxldCByZXRyaWV2ZV9sb2cgKCkgPSBMaXN0LnJldiAhbG9nX3JlZlxuXG5sZXQgbG9nX2JlZ2luX2NhbGwgaW5mbyBmID1cbiAgbG9nX3JlZiA6PSBCZWdpbkNhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgZlxuXG5sZXQgbG9nX2VuZF9jYWxsIGluZm8geCA9XG4gIGxvZ19yZWYgOj0gRW5kQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiAoaW5mbyA6IHN0cmluZyBsaXN0KSBlbWJlZCAoeCA6ICdhKSA9XG4gIGxvZ19yZWYgOj0gVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBlbWJlZCB4KSA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX2RlY2lzaW9uX3Rha2VuIHBvcyB4ID1cbiAgaWYgeCB0aGVuIGxvZ19yZWYgOj0gRGVjaXNpb25UYWtlbiBwb3MgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IHJlYyBwcF9ldmVudHMgPyhpc19maXJzdF9jYWxsID0gdHJ1ZSkgcHBmIGV2ZW50cyA9XG4gIGxldCByZWMgZm9ybWF0X3Zhcl9kZWYgcHBmIHZhciA9XG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aG92IDI+PHZhcl9kZWYgYXQgJWE+QCAlczpAICVhQF1cIiBmb3JtYXRfcG9zX29wdFxuICAgICAgdmFyLnBvc1xuICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyLm5hbWUpXG4gICAgICBmb3JtYXRfdmFsdWUgdmFyLnZhbHVlXG4gIGFuZCBmb3JtYXRfcG9zX29wdCBwcGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJub19wb3NcIlxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzIGxpbmUgJWQgdG8gJWRcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLmVuZF9saW5lXG4gIGFuZCBmb3JtYXRfdmFyX2RlZnMgcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAIFwiKVxuICAgICAgZm9ybWF0X3Zhcl9kZWYgcHBmXG4gIGFuZCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBwcGYgdmFyX3dpdGhfZnVuID1cbiAgICBtYXRjaCB2YXJfd2l0aF9mdW4uZnVuX2NhbGxzIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFtdIC0+IGZvcm1hdF92YXJfZGVmIHBwZiB2YXJfd2l0aF9mdW5cbiAgICB8IFNvbWUgZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMj48dmFyX2RlZl93aXRoX2Z1bj5AICVzOiAlYUAgY29tcHV0ZWQgZnJvbUAgOkAgQFs8aHYgMj5bQCAlYUA7XFxcbiAgICAgICAgIDwxIC0yPl1AXSBAXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhcl93aXRoX2Z1bi5uYW1lKVxuICAgICAgICBmb3JtYXRfdmFsdWUgdmFyX3dpdGhfZnVuLnZhbHVlXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKVxuICAgICAgICAgICAoZnVuIHBwZiBmdW5fY2FsbCAtPiBmb3JtYXRfZXZlbnQgcHBmIChGdW5DYWxsIGZ1bl9jYWxsKSkpXG4gICAgICAgIGZ1bl9jYWxsc1xuICBhbmQgZm9ybWF0X3ZhbHVlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmVtYmVkZGFibGUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiZnVuXCJcbiAgICB8IFVuaXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiKClcIlxuICAgIHwgQm9vbCB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiViXCIgeFxuICAgIHwgTW9uZXkgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc+KCrFwiIChtb25leV90b19zdHJpbmcgeClcbiAgICB8IEludGVnZXIgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZFwiIChpbnRlZ2VyX3RvX2ludCB4KVxuICAgIHwgRGVjaW1hbCB4IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkZWNpbWFsX3RvX3N0cmluZyB+bWF4X3ByZWNfZGlnaXRzOjEwIHgpXG4gICAgfCBEYXRlIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGF0ZV90b19zdHJpbmcgeClcbiAgICB8IER1cmF0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZHVyYXRpb25fdG9fc3RyaW5nIHgpXG4gICAgfCBFbnVtIChfLCAobmFtZSwgXykpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgbmFtZVxuICAgIHwgU3RydWN0IChuYW1lLCBhdHRycykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+JXMgPSB7QCAlYUA7PDEgLTI+fUBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAsXCIpXG4gICAgICAgICAgIChmdW4gZm10IChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczogJWFcIiBuYW1lIGZvcm1hdF92YWx1ZSB2YWx1ZSkpXG4gICAgICAgIGF0dHJzXG4gICAgfCBBcnJheSBlbHRzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPltAICVhQDs8MSAtMj5dQF1cIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCI7QCBcIilcbiAgICAgICAgICAgZm9ybWF0X3ZhbHVlKVxuICAgICAgICAoZWx0cyB8PiBBcnJheS50b19saXN0KVxuICBhbmQgZm9ybWF0X2V2ZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmX3dpdGhfZnVuXG4gICAgICB3aGVuIE9wdGlvbi5pc19zb21lIHZhcl9kZWZfd2l0aF9mdW4uZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHZhcl9kZWZfd2l0aF9mdW5cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZiB2YXJfZGVmXG4gICAgfCBGdW5DYWxsIHsgZnVuX25hbWU7IGlucHV0OyBib2R5OyBvdXRwdXQgfSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgIFwiQFs8aG92IDE+PGZ1bmN0aW9uX2NhbGw+QCAlcyA6PUAge0BbPGh2IDE+QCBpbnB1dDpAICVhLEAgb3V0cHV0OkAgXFxcbiAgICAgICAgICVhLEAgYm9keTpAIFtALFxcXG4gICAgICAgICAlYV1AXUAsXFxcbiAgICAgICAgIEBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIGZ1bl9uYW1lKVxuICAgICAgICBmb3JtYXRfdmFyX2RlZiBpbnB1dCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBvdXRwdXRcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICAgIHwgU3ViU2NvcGVDYWxsIHsgbmFtZTsgaW5wdXRzOyBib2R5IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGh2IDI+PHN1YnNjb3BlX2NhbGw+QCAlcyA6PUAge0BbPGh2IDE+QCxcXFxuICAgICAgICAgaW5wdXRzOkAgQFs8aHYgMj5bQCxcXFxuICAgICAgICAgJWFAXV0sQCxcXFxuICAgICAgICAgYm9keTpAIEBbPGh2IDI+W0AgJWFAIF1AXUBdQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSkgZm9ybWF0X3Zhcl9kZWZzIGlucHV0c1xuICAgICAgICAocHBfZXZlbnRzIH5pc19maXJzdF9jYWxsOmZhbHNlKVxuICAgICAgICBib2R5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgIChcIkBbPGh2IDE+JWFAXVwiIF5eIGlmIGlzX2ZpcnN0X2NhbGwgdGhlbiBcIkAuXCIgZWxzZSBcIlwiKVxuICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQCBcIilcbiAgICAgICBmb3JtYXRfZXZlbnQpXG4gICAgZXZlbnRzXG5cbm1vZHVsZSBFdmVudFBhcnNlciA9IHN0cnVjdFxuICBtb2R1bGUgVmFyRGVmTWFwID0gc3RydWN0XG4gICAgbW9kdWxlIFN0cmluZ01hcCA9IE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICB0eXBlIHQgPSB2YXJfZGVmIGxpc3QgU3RyaW5nTWFwLnRcblxuICAgIGxldCBhZGQgKG5hbWUgOiBzdHJpbmcpICh2IDogdmFyX2RlZikgKG1hcCA6IHQpIDogdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aFxuICAgICAgfCBTb21lIGxzIC0+IFN0cmluZ01hcC5hZGQgbmFtZSAodiA6OiBscykgbWFwXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nTWFwLmFkZCBuYW1lIFt2XSBtYXBcblxuICAgICgqKiBbZ2V0IG5hbWUgbWFwXSByZXR1cm5zIHRoZSBsaXN0IG9mIGRlZmluaXRpb25zIGlmIHRoZXJlIGlzIGFcbiAgICAgICAgY29ycmVzcG9uZGluZyBlbnRyeSwgb3RoZXJ3aXNlLCByZXR1cm5zIGFuIGVtcHR5IGFycmF5LiAqKVxuICAgIGxldCBnZXQgKG5hbWUgOiBzdHJpbmcpIChtYXAgOiB0KSA6IHZhcl9kZWYgbGlzdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aCBTb21lIGxzIC0+IGxzIHwgTm9uZSAtPiBbXVxuXG4gICAgbGV0IGVtcHR5IDogdCA9IFN0cmluZ01hcC5lbXB0eVxuICBlbmRcblxuICB0eXBlIGNvbnRleHQgPSB7XG4gICAgKCogS2VlcHMgdHJhY2tzIG9mIHRoZSBzdWJzY29wZSBpbnB1dCB2YXJpYWJsZSBkZWZpbml0aW9ucy4gKilcbiAgICB2YXJzIDogVmFyRGVmTWFwLnQ7XG4gICAgKCogQ3VycmVudCBwYXJzZWQgZXZlbnRzLiAqKVxuICAgIGV2ZW50cyA6IGV2ZW50IGxpc3Q7XG4gICAgcmVzdCA6IHJhd19ldmVudCBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5X2N0eCA9IHsgdmFycyA9IFZhckRlZk1hcC5lbXB0eTsgZXZlbnRzID0gW107IHJlc3QgPSBbXSB9XG5cbiAgbGV0IHJhd19ldmVudF90b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQmVnaW5DYWxsIG5hbWUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiQmVnaW5DYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgRW5kQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkVuZENhbGwoWyBcIiBeIFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUgXiBcIiBdKVwiXG4gICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJWYXJpYWJsZURlZmluaXRpb24oWyAlcyBdLCAlcylcIiAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSlcbiAgICAgICAgKHlvanNvbl9vZl9ydW50aW1lX3ZhbHVlIHZhbHVlIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZylcbiAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBQcmludGYuc3ByaW50ZiBcIkRlY2lzaW9uVGFrZW4oXylcIlxuXG4gIGxldCBwYXJzZV9yYXdfZXZlbnRzIHJhd19ldmVudHMgPVxuICAgIGxldCBuYl9yYXdfZXZlbnRzID0gTGlzdC5sZW5ndGggcmF3X2V2ZW50c1xuICAgIGFuZCBpc19mdW5jdGlvbl9jYWxsIGluZm9zID0gMiA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgPSAzID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfdmFyX2RlZiBuYW1lID0gMiA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICBhbmQgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcIm91dHB1dFwiID0gTGlzdC5udGggbmFtZSAyXG4gICAgYW5kIGlzX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcImlucHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuXG4gICAgbGV0IHJlYyBwYXJzZV9ldmVudHMgKGN0eCA6IGNvbnRleHQpIDogY29udGV4dCA9XG4gICAgICBtYXRjaCBjdHgucmVzdCB3aXRoXG4gICAgICB8IFtdIC0+IHsgY3R4IHdpdGggZXZlbnRzID0gY3R4LmV2ZW50cyB8PiBMaXN0LnJldiB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgXykgOjogcmVzdCB3aGVuIGlzX3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICAoKiBWYXJpYWJsZURlZmluaXRpb24gd2l0aG91dCBwb3NpdGlvbiBjb3JyZXNwb25kcyB0byBhIGZ1bmN0aW9uXG4gICAgICAgICAgIGRlZmluaXRpb24gd2hpY2ggYXJlIGlnbm9yZWQgZm9yIG5vdyBpbiBzdHJ1Y3R1cmVkIGV2ZW50cy4gKilcbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggcmVzdCB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmIG5hbWUgLT4gKFxuICAgICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZV0gLT5cbiAgICAgICAgICBsZXQgdmFyX25hbWUgPVxuICAgICAgICAgICAgTGlzdC5udGggKFN0cmluZy5zcGxpdF9vbl9jaGFyICcuJyB2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lKSAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgdmFycyA9XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNcbiAgICAgICAgICAgICAgICB8PiBWYXJEZWZNYXAuYWRkIHZhcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9O1xuICAgICAgICAgICAgICByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2lucHV0X3Zhcl9kZWZdIHRlc3RcIilcbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgOjogcmVzdFxuICAgICAgICB3aGVuIGlzX3Zhcl9kZWYgbmFtZSB8fCBpc19vdXRwdXRfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICBWYXJDb21wdXRhdGlvbiB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9XG4gICAgICAgICAgICAgIDo6IGN0eC5ldmVudHM7XG4gICAgICAgICAgICByZXN0O1xuICAgICAgICAgIH1cbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF9cbiAgICAgICAgd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zIC0+XG4gICAgICAgICgqIFZhcmlhYmxlIGRlZmluaXRpb24gd2l0aCBmdW5jdGlvbiBjYWxscy4gKilcbiAgICAgICAgbGV0IHJlYyBwYXJzZV9mdW5fY2FsbHMgZnVuX2NhbGxzIHJhd19ldmVudHMgPVxuICAgICAgICAgIG1hdGNoIHJhd19ldmVudHMgd2l0aFxuICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF9cbiAgICAgICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxsID0gcGFyc2VfZnVuX2NhbGwgcmF3X2V2ZW50cyBpblxuICAgICAgICAgICAgcGFyc2VfZnVuX2NhbGxzIChmdW5fY2FsbCA6OiBmdW5fY2FsbHMpIHJlc3RcbiAgICAgICAgICB8IHJlc3QgLT4gcmVzdCwgZnVuX2NhbGxzIHw+IExpc3QucmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN0LCB2YXJfY29tcCA9XG4gICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxscyA9IHBhcnNlX2Z1bl9jYWxscyBbXSAoTGlzdC50bCBjdHgucmVzdCkgaW5cbiAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICggcmVzdCxcbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb25cbiAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gU29tZSBmdW5fY2FsbHMgfSApXG4gICAgICAgICAgfCBldmVudCA6OiBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoXCJJbnZhbGlkIGZ1bmN0aW9uIGNhbGwgKFsgXCJcbiAgICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBpbmZvc1xuICAgICAgICAgICAgICBeIFwiIF0pOiBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uIChmdW5jdGlvbiBvdXRwdXQpLCBmb3VuZDogXCJcbiAgICAgICAgICAgICAgXiByYXdfZXZlbnRfdG9fc3RyaW5nIGV2ZW50XG4gICAgICAgICAgICAgIF4gXCJbXCJcbiAgICAgICAgICAgICAgXiAobmJfcmF3X2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlc3QgKyAxIHw+IHN0cmluZ19vZl9pbnQpXG4gICAgICAgICAgICAgIF4gXCJdXCIpXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFxcXG4gICAgICAgICAgICAgICAgIGVuZCBvZiB0b2tlbnNcIilcbiAgICAgICAgaW5cblxuICAgICAgICBwYXJzZV9ldmVudHMgeyBjdHggd2l0aCBldmVudHMgPSB2YXJfY29tcCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF8gd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zXG4gICAgICAgIC0+XG4gICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIGN0eC5yZXN0IGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gRnVuQ2FsbCBmdW5fY2FsbCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgQmVnaW5DYWxsIGluZm9zIDo6IHJlc3Qgd2hlbiBpc19zdWJzY29wZV9jYWxsIGluZm9zIC0+IChcbiAgICAgICAgbWF0Y2ggaW5mb3Mgd2l0aFxuICAgICAgICB8IFtfOyB2YXJfbmFtZTsgX10gLT5cbiAgICAgICAgICBsZXQgYm9keV9jdHggPSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0IH0gaW5cbiAgICAgICAgICBsZXQgaW5wdXRzID0gVmFyRGVmTWFwLmdldCB2YXJfbmFtZSBjdHgudmFycyBpblxuICAgICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICAgIFN1YlNjb3BlQ2FsbCB7IG5hbWUgPSBpbmZvczsgaW5wdXRzOyBib2R5ID0gYm9keV9jdHguZXZlbnRzIH1cbiAgICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgICByZXN0ID0gYm9keV9jdHgucmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidW5yZWFjaGFibGUgZHVlIHRvIHRoZSBbaXNfc3Vic2NvcGVfY2FsbF0gdGVzdFwiKVxuICAgICAgfCBFbmRDYWxsIF8gOjogcmVzdCAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXY7IHJlc3QgfVxuICAgICAgfCBldmVudCA6OiBfIC0+IGZhaWx3aXRoIChcIlVuZXhwZWN0ZWQgZXZlbnQ6IFwiIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudClcbiAgICBhbmQgcGFyc2VfZnVuX2NhbGwgZXZlbnRzID1cbiAgICAgIG1hdGNoIGV2ZW50cyB3aXRoXG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAmJiBpc19pbnB1dF92YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgbGV0IHJlc3QsIGJvZHksIG91dHB1dCA9XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID1cbiAgICAgICAgICAgIHBhcnNlX2V2ZW50cyB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBib2R5X3JldiA9IExpc3QucmV2IGJvZHlfY3R4LmV2ZW50cyBpblxuICAgICAgICAgIGJvZHlfY3R4LnJlc3QsIGJvZHlfcmV2IHw+IExpc3QudGwgfD4gTGlzdC5yZXYsIGJvZHlfcmV2IHw+IExpc3QuaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gdmFyX2RlZlxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1pc3NpbmcgZnVuY3Rpb24gb3V0cHV0IHZhcmlhYmxlIGRlZmluaXRpb24uXCJcbiAgICAgICAgaW5cblxuICAgICAgICAoIHJlc3QsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuX25hbWUgPSBpbmZvcztcbiAgICAgICAgICAgIGlucHV0ID0geyBwb3MgPSBOb25lOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9O1xuICAgICAgICAgICAgYm9keTtcbiAgICAgICAgICAgIG91dHB1dDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIkludmFsaWQgc3RhcnQgb2YgZnVuY3Rpb24gY2FsbC5cIlxuICAgIGluXG5cbiAgICBsZXQgY3R4ID1cbiAgICAgIHRyeSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0ID0gcmF3X2V2ZW50cyB9XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+XG4gICAgICAgICgqIFRPRE86IGRpc2N1c3Mgd2hhdCBzaG91bGQgYmUgZG9uZS4gKilcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHJhdyBldmVudHM6ICVzXFxuXCIgbXNnO1xuICAgICAgICBlbXB0eV9jdHhcbiAgICBpblxuICAgIGN0eC5ldmVudHNcbmVuZFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgOlxuICAgICAgJ2EuXG4gICAgICBzb3VyY2VfcG9zaXRpb24gLT5cbiAgICAgICh1bml0IC0+ICdhKSBhcnJheSAtPlxuICAgICAgKHVuaXQgLT4gYm9vbCkgLT5cbiAgICAgICh1bml0IC0+ICdhKSAtPlxuICAgICAgJ2EgPVxuIGZ1biBwb3MgZXhjZXB0aW9ucyBqdXN0IGNvbnMgLT5cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbGV0IG5ld192YWwgPSB0cnkgU29tZSAoZXhjZXB0ICgpKSB3aXRoIEVtcHR5RXJyb3IgLT4gTm9uZSBpblxuICAgICAgICBtYXRjaCBhY2MsIG5ld192YWwgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gbmV3X3ZhbFxuICAgICAgICB8IFNvbWUgXywgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIF8sIFNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgTm9uZSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGlmIGp1c3QgKCkgdGhlbiBjb25zICgpIGVsc2UgcmFpc2UgRW1wdHlFcnJvclxuXG5sZXQgaGFuZGxlX2RlZmF1bHRfb3B0XG4gICAgKHBvcyA6IHNvdXJjZV9wb3NpdGlvbilcbiAgICAoZXhjZXB0aW9ucyA6ICdhIGVvcHRpb24gYXJyYXkpXG4gICAgKGp1c3QgOiBib29sIGVvcHRpb24pXG4gICAgKGNvbnMgOiAnYSBlb3B0aW9uKSA6ICdhIGVvcHRpb24gPVxuICBsZXQgZXhjZXB0ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGV4Y2VwdCAtPlxuICAgICAgICBtYXRjaCBhY2MsIGV4Y2VwdCB3aXRoXG4gICAgICAgIHwgRU5vbmUgXywgXyAtPiBleGNlcHRcbiAgICAgICAgfCBFU29tZSBfLCBFTm9uZSBfIC0+IGFjY1xuICAgICAgICB8IEVTb21lIF8sIEVTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIChFTm9uZSAoKSkgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IEVTb21lIF8gLT4gZXhjZXB0XG4gIHwgRU5vbmUgXyAtPiAoXG4gICAgbWF0Y2gganVzdCB3aXRoXG4gICAgfCBFU29tZSBiIC0+IGlmIGIgdGhlbiBjb25zIGVsc2UgRU5vbmUgKClcbiAgICB8IEVOb25lIF8gLT4gRU5vbmUgKCkpXG5cbmxldCBub19pbnB1dCA6IHVuaXQgLT4gJ2EgPSBmdW4gXyAtPiByYWlzZSBFbXB0eUVycm9yXG5cbmxldCAoICokICkgKGkxIDogbW9uZXkpIChpMiA6IGRlY2ltYWwpIDogbW9uZXkgPVxuICBsZXQgaTFfYWJzID0gWi5hYnMgaTEgaW5cbiAgbGV0IGkyX2FicyA9IFEuYWJzIGkyIGluXG4gIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICBsZXQgcmF0X3Jlc3VsdCA9IFEubXVsIChRLm9mX2JpZ2ludCBpMV9hYnMpIGkyX2FicyBpblxuICBsZXQgcmVzLCByZW1haW5kZXIgPSBaLmRpdl9yZW0gKFEubnVtIHJhdF9yZXN1bHQpIChRLmRlbiByYXRfcmVzdWx0KSBpblxuICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICBkZWNpbWFsICEqKVxuICBpZiBaLihvZl9pbnQgMiAqIHJlbWFpbmRlciA+PSBRLmRlbiByYXRfcmVzdWx0KSB0aGVuXG4gICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICBlbHNlIFouKHJlcyAqIG9mX2ludCBzaWduX2ludClcblxubGV0ICggLyQgKSAobTEgOiBtb25leSkgKG0yIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICBlbHNlIFEuZGl2IChRLm9mX2JpZ2ludCBtMSkgKFEub2ZfYmlnaW50IG0yKVxuXG5sZXQgKCArJCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBtb25leSA9IFouYWRkIG0xIG0yXG5sZXQgKCAtJCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBtb25leSA9IFouc3ViIG0xIG0yXG5sZXQgKCB+LSQgKSAobTEgOiBtb25leSkgOiBtb25leSA9IFouc3ViIFouemVybyBtMVxubGV0ICggKyEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGludGVnZXIgPSBaLmFkZCBpMSBpMlxubGV0ICggLSEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGludGVnZXIgPSBaLnN1YiBpMSBpMlxubGV0ICggfi0hICkgKGkxIDogaW50ZWdlcikgOiBpbnRlZ2VyID0gWi5zdWIgWi56ZXJvIGkxXG5sZXQgKCAqISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogaW50ZWdlciA9IFoubXVsIGkxIGkyXG5cbmxldCAoIC8hICkgKGkxIDogaW50ZWdlcikgKGkyIDogaW50ZWdlcikgOiBpbnRlZ2VyID1cbiAgaWYgWi56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgWi5kaXYgaTEgaTJcblxubGV0ICggKyYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPSBRLmFkZCBpMSBpMlxubGV0ICggLSYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGRlY2ltYWwgPSBRLnN1YiBpMSBpMlxubGV0ICggfi0mICkgKGkxIDogZGVjaW1hbCkgOiBkZWNpbWFsID0gUS5zdWIgUS56ZXJvIGkxXG5sZXQgKCAqJiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogZGVjaW1hbCA9IFEubXVsIGkxIGkyXG5cbmxldCAoIC8mICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgaWYgUS56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS5kaXYgaTEgaTJcblxubGV0ICggK0AgKSAoZDEgOiBkYXRlKSAoZDIgOiBkdXJhdGlvbikgOiBkYXRlID0gQ2FsZW5kYXJMaWIuRGF0ZS5hZGQgZDEgZDJcbmxldCAoIC1AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBkdXJhdGlvbiA9IENhbGVuZGFyTGliLkRhdGUuc3ViIGQxIGQyXG5cbmxldCAoICteICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGR1cmF0aW9uID1cbiAgQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QuYWRkIGQxIGQyXG5cbmxldCAoIC1eICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGR1cmF0aW9uID1cbiAgQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2Quc3ViIGQxIGQyXG5cbigqIChFbWlsZVJvbGxleSkgTk9URTogeyFDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzfSBpcyBkZXByZWNhdGVkLFxuICAgeyFDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5zYWZlX25iX2RheXN9IHNob3VsZCBiZSB1c2VkLiBCdXQgdGhlIGN1cnJlbnRcbiAgIHshZHVyYXRpb259IGlzIGdyZWF0ZXIgdGhhdCB0aGUgc3VwcG9ydGVkIHBvbHltb3JwaGljIHZhcmlhbnRzLiopXG5sZXQgKCAvXiApIChkMSA6IGR1cmF0aW9uKSAoZDIgOiBkdXJhdGlvbikgOiBkZWNpbWFsID1cbiAgdHJ5XG4gICAgbGV0IG5iX2RheTEgPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzIGQxIGluXG4gICAgbGV0IG5iX2RheTIgPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5uYl9kYXlzIGQyIGluXG4gICAgaWYgMCA9IG5iX2RheTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS4obmJfZGF5MSAvLyBuYl9kYXkyKVxuICB3aXRoIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLk5vdF9jb21wdXRhYmxlIC0+IHJhaXNlIEluZGl2aXNhYmxlRHVyYXRpb25zXG5cbmxldCAoICpeICkgKGQxIDogZHVyYXRpb24pIChpMSA6IGludGVnZXIpIDogZHVyYXRpb24gPVxuICBsZXQgeSwgbSwgZCA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkMSBpblxuICBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC5tYWtlXG4gICAgKHkgKiBpbnRlZ2VyX3RvX2ludCBpMSlcbiAgICAobSAqIGludGVnZXJfdG9faW50IGkxKVxuICAgIChkICogaW50ZWdlcl90b19pbnQgaTEpXG5cbmxldCAoIDw9JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yIDw9IDBcbmxldCAoID49JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yID49IDBcbmxldCAoIDwkICkgKG0xIDogbW9uZXkpIChtMiA6IG1vbmV5KSA6IGJvb2wgPSBaLmNvbXBhcmUgbTEgbTIgPCAwXG5sZXQgKCA+JCApIChtMSA6IG1vbmV5KSAobTIgOiBtb25leSkgOiBib29sID0gWi5jb21wYXJlIG0xIG0yID4gMFxubGV0ICggPSQgKSAobTEgOiBtb25leSkgKG0yIDogbW9uZXkpIDogYm9vbCA9IFouY29tcGFyZSBtMSBtMiA9IDBcbmxldCAoID49ISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogYm9vbCA9IFouY29tcGFyZSBpMSBpMiA+PSAwXG5sZXQgKCA8PSEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGJvb2wgPSBaLmNvbXBhcmUgaTEgaTIgPD0gMFxubGV0ICggPiEgKSAoaTEgOiBpbnRlZ2VyKSAoaTIgOiBpbnRlZ2VyKSA6IGJvb2wgPSBaLmNvbXBhcmUgaTEgaTIgPiAwXG5sZXQgKCA8ISApIChpMSA6IGludGVnZXIpIChpMiA6IGludGVnZXIpIDogYm9vbCA9IFouY29tcGFyZSBpMSBpMiA8IDBcbmxldCAoID0hICkgKGkxIDogaW50ZWdlcikgKGkyIDogaW50ZWdlcikgOiBib29sID0gWi5jb21wYXJlIGkxIGkyID0gMFxubGV0ICggPj0mICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBib29sID0gUS5jb21wYXJlIGkxIGkyID49IDBcbmxldCAoIDw9JiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogYm9vbCA9IFEuY29tcGFyZSBpMSBpMiA8PSAwXG5sZXQgKCA+JiApIChpMSA6IGRlY2ltYWwpIChpMiA6IGRlY2ltYWwpIDogYm9vbCA9IFEuY29tcGFyZSBpMSBpMiA+IDBcbmxldCAoIDwmICkgKGkxIDogZGVjaW1hbCkgKGkyIDogZGVjaW1hbCkgOiBib29sID0gUS5jb21wYXJlIGkxIGkyIDwgMFxubGV0ICggPSYgKSAoaTEgOiBkZWNpbWFsKSAoaTIgOiBkZWNpbWFsKSA6IGJvb2wgPSBRLmNvbXBhcmUgaTEgaTIgPSAwXG5sZXQgKCA+PUAgKSAoZDEgOiBkYXRlKSAoZDIgOiBkYXRlKSA6IGJvb2wgPSBDYWxlbmRhckxpYi5EYXRlLmNvbXBhcmUgZDEgZDIgPj0gMFxubGV0ICggPD1AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBib29sID0gQ2FsZW5kYXJMaWIuRGF0ZS5jb21wYXJlIGQxIGQyIDw9IDBcbmxldCAoID5AICkgKGQxIDogZGF0ZSkgKGQyIDogZGF0ZSkgOiBib29sID0gQ2FsZW5kYXJMaWIuRGF0ZS5jb21wYXJlIGQxIGQyID4gMFxubGV0ICggPEAgKSAoZDEgOiBkYXRlKSAoZDIgOiBkYXRlKSA6IGJvb2wgPSBDYWxlbmRhckxpYi5EYXRlLmNvbXBhcmUgZDEgZDIgPCAwXG5sZXQgKCA9QCApIChkMSA6IGRhdGUpIChkMiA6IGRhdGUpIDogYm9vbCA9IENhbGVuZGFyTGliLkRhdGUuY29tcGFyZSBkMSBkMiA9IDBcblxubGV0IGNvbXBhcmVfcGVyaW9kc1xuICAgIChwMSA6IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnQpXG4gICAgKHAyIDogQ2FsZW5kYXJMaWIuRGF0ZS5QZXJpb2QudCkgOiBpbnQgPVxuICB0cnlcbiAgICBsZXQgcDFfZGF5cyA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm5iX2RheXMgcDEgaW5cbiAgICBsZXQgcDJfZGF5cyA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm5iX2RheXMgcDIgaW5cbiAgICBjb21wYXJlIHAxX2RheXMgcDJfZGF5c1xuICB3aXRoIENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLk5vdF9jb21wdXRhYmxlIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG5sZXQgKCA+PV4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+PSAwXG5sZXQgKCA8PV4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8PSAwXG5sZXQgKCA+XiApIChkMSA6IGR1cmF0aW9uKSAoZDIgOiBkdXJhdGlvbikgOiBib29sID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID4gMFxubGV0ICggPF4gKSAoZDEgOiBkdXJhdGlvbikgKGQyIDogZHVyYXRpb24pIDogYm9vbCA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8IDBcbmxldCAoID1eICkgKGQxIDogZHVyYXRpb24pIChkMiA6IGR1cmF0aW9uKSA6IGJvb2wgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPSAwXG5sZXQgKCB+LV4gKSAoZDEgOiBkdXJhdGlvbikgOiBkdXJhdGlvbiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLm9wcCBkMVxuXG5sZXQgYXJyYXlfZmlsdGVyIChmIDogJ2EgLT4gYm9vbCkgKGEgOiAnYSBhcnJheSkgOiAnYSBhcnJheSA9XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QuZmlsdGVyIGYgKEFycmF5LnRvX2xpc3QgYSkpXG5cbmxldCBhcnJheV9sZW5ndGggKGEgOiAnYSBhcnJheSkgOiBpbnRlZ2VyID0gWi5vZl9pbnQgKEFycmF5Lmxlbmd0aCBhKVxuIixudWxsLG51bGwsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz4uXG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBSX29jYW1sID0gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbmNsYXNzIHR5cGUgc291cmNlX3Bvc2l0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGZpbGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBsYXdIZWFkaW5ncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSByYXdfZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZXZlbnRUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzb3VyY2VQb3NpdGlvbiA6IHNvdXJjZV9wb3NpdGlvbiBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gICAgbWV0aG9kIGxvZ2dlZFZhbHVlSnNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZHVyYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgeWVhcnMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250aHMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXlzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkdXJhdGlvbl9vZl9qc29vIGQgPVxuICBSX29jYW1sLmR1cmF0aW9uX29mX251bWJlcnMgZCMjLnllYXJzIGQjIy5tb250aHMgZCMjLmRheXNcblxubGV0IGR1cmF0aW9uX3RvX2pzb28gZCA9XG4gIGxldCB5ZWFycywgbW9udGhzLCBkYXlzID0gUl9vY2FtbC5kdXJhdGlvbl90b195ZWFyc19tb250aHNfZGF5cyBkIGluXG4gIG9iamVjdCVqc1xuICAgIHZhbCB5ZWFycyA9IHllYXJzXG4gICAgdmFsIG1vbnRocyA9IG1vbnRoc1xuICAgIHZhbCBkYXlzID0gZGF5c1xuICBlbmRcblxubGV0IGRhdGVfb2ZfanNvbyBkID1cbiAgbGV0IGQgPSBKcy50b19zdHJpbmcgZCBpblxuICBsZXQgZCA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGQgJ1QnIHRoZW4gZCB8PiBTdHJpbmcuc3BsaXRfb25fY2hhciAnVCcgfD4gTGlzdC5oZFxuICAgIGVsc2UgZFxuICBpblxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciAnLScgZCB3aXRoXG4gIHwgW3llYXI7IG1vbnRoOyBkYXldIC0+XG4gICAgUl9vY2FtbC5kYXRlX29mX251bWJlcnMgKGludF9vZl9zdHJpbmcgeWVhcikgKGludF9vZl9zdHJpbmcgbW9udGgpXG4gICAgICAoaW50X29mX3N0cmluZyBkYXkpXG4gIHwgXyAtPiBmYWlsd2l0aCBcImRhdGVfb2ZfanNvbzogaW52YWxpZCBkYXRlXCJcblxubGV0IGRhdGVfdG9fanNvbyBkID0gSnMuc3RyaW5nIEBAIFJfb2NhbWwuZGF0ZV90b19zdHJpbmcgZFxuXG5jbGFzcyB0eXBlIGV2ZW50X21hbmFnZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzZXRMb2cgOiAodW5pdCwgdW5pdCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVFdmVudHMgOlxuICAgICAgKHVuaXQsIGV2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgOlxuICAgICAgKHVuaXQsIHJhd19ldmVudCBKcy50IEpzLmpzX2FycmF5IEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcblxubGV0IGV2ZW50X21hbmFnZXIgOiBldmVudF9tYW5hZ2VyIEpzLnQgPVxuICBvYmplY3QlanNcbiAgICBtZXRob2QgcmVzZXRMb2cgPSBKcy53cmFwX21ldGhfY2FsbGJhY2sgUl9vY2FtbC5yZXNldF9sb2dcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA9XG4gICAgICBKcy53cmFwX21ldGhfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgKFJfb2NhbWwucmV0cmlldmVfbG9nICgpXG4gICAgICAgICAgICAgICB8PiBSX29jYW1sLkV2ZW50UGFyc2VyLnBhcnNlX3Jhd19ldmVudHNcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICBvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGRhdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBZb2pzb24uU2FmZS50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSkpKVxuXG4gICAgbWV0aG9kIHJldHJpZXZlUmF3RXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGV2ZW50VHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUl9vY2FtbC5CZWdpbkNhbGwgXyAtPiBcIkJlZ2luIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgXyAtPiBcIkVuZCBjYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gXyAtPiBcIlZhcmlhYmxlIGRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBcIkRlY2lzaW9uIHRha2VuXCIpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBpbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCZWdpbkNhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoaW5mbywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBKcy5zdHJpbmcgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBbXSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsb2dnZWRWYWx1ZUpzb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoXywgdikgLT4gdlxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gfCBCZWdpbkNhbGwgXyB8IERlY2lzaW9uVGFrZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBSX29jYW1sLnVuZW1iZWRkYWJsZSAoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX3J1bnRpbWVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzb3VyY2VQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5kZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZmlsZU5hbWUgPSBKcy5zdHJpbmcgcG9zLmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRMaW5lID0gcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRMaW5lID0gcG9zLmVuZF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRDb2x1bW4gPSBwb3Muc3RhcnRfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kQ29sdW1uID0gcG9zLmVuZF9jb2x1bW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxhd0hlYWRpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBKcy5zdHJpbmcgcG9zLmxhd19oZWFkaW5ncykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IEpzLnVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKCkpKSkpXG4gIGVuZFxuXG5sZXQgZXhlY3V0ZV9vcl90aHJvd19lcnJvciBmID1cbiAgbGV0IHRocm93X2Vycm9yIChkZXNjciA6IHN0cmluZykgKHBvcyA6IFJfb2NhbWwuc291cmNlX3Bvc2l0aW9uKSA9XG4gICAgbGV0IG1zZyA9XG4gICAgICBKcy5zdHJpbmdcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzIGluIGZpbGUgJXMsIHBvc2l0aW9uICVkOiVkLS0lZDolZC5cIiBkZXNjclxuICAgICAgICAgICBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmUgcG9zLnN0YXJ0X2NvbHVtbiBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgcG9zLmVuZF9jb2x1bW4pXG4gICAgaW5cbiAgICBKcy5Kc19lcnJvci5yYWlzZV9cbiAgICAgIChKcy5Kc19lcnJvci5vZl9lcnJvclxuICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgdmFsIG11dGFibGUgbmFtZSA9IEpzLnN0cmluZyBcIk5vVmFsdWVQcm92aWRlZFwiXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBtZXNzYWdlID0gbXNnXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFjayA9IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICAgICAgbWV0aG9kIHRvU3RyaW5nID0gbXNnXG4gICAgICAgICBlbmQpKVxuICBpblxuICB0cnkgZiAoKSB3aXRoXG4gIHwgUl9vY2FtbC5Ob1ZhbHVlUHJvdmlkZWQgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiTm8gcnVsZSBhcHBsaWVzIGluIHRoZSBnaXZlbiBjb250ZXh0IHRvIGdpdmUgYSB2YWx1ZSB0byB0aGUgdmFyaWFibGVcIiBwb3NcbiAgfCBSX29jYW1sLkNvbmZsaWN0RXJyb3IgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiQSBjb25mbGljdCBoYXBwZW5kIGJldHdlZW4gdHdvIHJ1bGVzIGdpdmluZyBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQXNzZXJ0aW9uRmFpbGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yIFwiQSBmYWlsdXJlIGhhcHBlbmVkIGluIHRoZSBhc3NlcnRpb25cIiBwb3NcbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNvbXB0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBDb21wbGV0ZSBvZiB1bml0XG4gICAgfCBQYXJ0YWdlZSBvZiB1bml0XG4gICAgfCBaZXJvIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY29tcHRlICh4OiBQcmlzZUVuQ29tcHRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNvbXB0ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDb21wbGV0ZSB4IC0+IChcIkNvbXBsw6h0ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXJ0YWdlZSB4IC0+IChcIlBhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBaZXJvIHggLT4gKFwiWsOpcm9cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QWxsb2NhdGlvbnMgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTm9ybWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMgKHg6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVmVyc2VtZW50QWxsb2NhdGlvbnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9ybWFsIHggLT4gKFwiTm9ybWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBFbmZhbnRFbnRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRfaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkX2RhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGRfcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9lbnRyZWUgKHg6IEVuZmFudEVudHJlZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50RW50csOpZVwiXSxcbiAgWyhcImRfaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50RW50cmVlLmRfaWRlbnRpZmlhbnQpO1xuICAgIChcImRfcsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEVudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRfZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50RW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJkX2FfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkX2LDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGFnZTogaW50ZWdlcjtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnQgKHg6IEVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRW5mYW50XCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50LmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHguRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCLDomdlXCIsIGVtYmVkX2ludGVnZXIgeC5FbmZhbnQuYWdlKTtcbiAgICAoXCJwcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfcHJpc2VfZW5fY2hhcmdlXG4gICAgeC5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnRfb3V0OiBFbmZhbnQudCAtPiBib29sO1xuICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0OiBFbmZhbnQudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMl9vdXQ6IGludGVnZXI7XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmRyb2l0X291dmVydF9vdXQpO1xuICAgIChcImNvbmRpdGlvbnNfaG9yc1/DomdlX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5jb25kaXRpb25zX2hvcnNfYWdlX291dCk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMl9vdXRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmFnZV9sNTEyXzNfMl9vdXQpO1xuICAgIChcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dDogaW50ZWdlcn1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0ICh4OiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhfb3V0XCJdLFxuICBbKFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM19vdXQpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIChfOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQpIDogcnVudGltZV92YWx1ZSA9IFVuaXRcblxuXG5tb2R1bGUgRW5mYW50TGVQbHVzQWdlT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtsZV9wbHVzX2FnZV9vdXQ6IEVuZmFudC50fVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlX291dCAoeDogRW5mYW50TGVQbHVzQWdlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9vdXRcIl0sXG4gIFsoXCJsZV9wbHVzX8OiZ8OpX291dFwiLCBlbWJlZF9lbmZhbnQgeC5FbmZhbnRMZVBsdXNBZ2VPdXQubGVfcGx1c19hZ2Vfb3V0KV0pXG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlbmZhbnRzX2luOiBFbmZhbnQudCBhcnJheX1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiAoeDogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpX2luXCJdLFxuICBbKFwiZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSB4LkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4pXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ZlcnNlX291dDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF92ZXJzw6lfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF92ZXJzZV9vdXQpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBlbmZhbnRzX2FfY2hhcmdlX2luOiBFbmZhbnQudCBhcnJheTtcbiAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJlbmZhbnRzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbik7XG4gICAgKFwiYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxubW9kdWxlIFNtaWNPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pY19vdXQgKHg6IFNtaWNPdXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfb3V0XCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlX291dFwiLCBlbWJlZF9tb25leSB4LlNtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCldKVxuXG5cbm1vZHVsZSBTbWljSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGU7IHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9zbWljX2luICh4OiBTbWljSW4udCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZSB4LlNtaWNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2lfbW9udGFudF92ZXJzZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJpX21vbnRhbnRfdmVyc8OpX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LmlfbW9udGFudF92ZXJzZV9vdXQpXSlcblxuXG5tb2R1bGUgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlfZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBpX2VuZmFudHNfaW46IEVuZmFudEVudHJlZS50IGFycmF5O1xuICAgIGlfcmVzc291cmNlc19tZW5hZ2VfaW46IG1vbmV5O1xuICAgIGlfcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luOiBib29sO1xuICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbjogYm9vbDtcbiAgICBpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiaV9kYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiaV9lbmZhbnRzX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnRfZW50cmVlKVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9lbmZhbnRzX2luKTtcbiAgICAoXCJpX3Jlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNzb3VyY2VzX21lbmFnZV9pbik7XG4gICAgKFwiaV9yw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNpZGVuY2VfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbik7XG4gICAgKFwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbik7XG4gICAgKFwiaV9hdmFpdF9lbmZhbnRfw6BfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cblxuXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbjogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LnQgPVxuICBsZXQgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7QWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhPdXQuYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dCA9XG4gICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM199XG5cbmxldCBlbmZhbnRfbGVfcGx1c19hZ2UgKGVuZmFudF9sZV9wbHVzX2FnZV9pbjogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBFbmZhbnRMZVBsdXNBZ2VPdXQudCA9XG4gIGxldCBlbmZhbnRzXzogRW5mYW50LnQgYXJyYXkgPSBlbmZhbnRfbGVfcGx1c19hZ2VfaW4uRW5mYW50TGVQbHVzQWdlSW4uZW5mYW50c19pbiBpblxuICBsZXQgbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkVuZmFudExlUGx1c8OCZ8OpXCI7IFwibGVfcGx1c1/DomfDqVwiXSAoZW1iZWRfZW5mYW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobGV0IHByZWRpY2F0ZV8gOiBfID1cbiAgICAgICAgICAgICAgIChmdW4gKHBvdGVudGllbF9wbHVzX2FnZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBwb3RlbnRpZWxfcGx1c19hZ2VfLkVuZmFudC5hZ2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogXykgKGl0ZW1fOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmICgocHJlZGljYXRlXyBhY2NfKSA+ISAocHJlZGljYXRlXyBpdGVtXykpIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgIGFjY18gZWxzZSBpdGVtXylcbiAgICAgICAgICAgICAgIHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCItMVwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UgPSAoZGF0ZV9vZl9udW1iZXJzICgxOTAwKSAoMSkgKDEpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5hZ2UgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlfSBlbmZhbnRzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge0VuZmFudExlUGx1c0FnZU91dC5sZV9wbHVzX2FnZV9vdXQgPSBsZV9wbHVzX2FnZV99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJTbWljXCI7IFwiYnJ1dF9ob3JhaXJlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzc0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCA9IGJydXRfaG9yYWlyZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMS82NSBkdSAxOSBtYXJzIDIwMjEgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjEgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDgxXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfb3V0ID0gbW9udGFudF99XG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IFByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBhZ2VfbDUxMl8zXzJfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgc21pY19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NjsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMucsOpc2lkZW5jZVwiXSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NjsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdIHNtaWMpXG4gICAge1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgU21pY0luLnJlc2lkZW5jZV9pbiA9IHNtaWNfZG90X3Jlc2lkZW5jZV99KSkgaW5cbiAgbGV0IHNtaWNfZG90X2JydXRfaG9yYWlyZV86IG1vbmV5ID0gcmVzdWx0Xy5TbWljT3V0LmJydXRfaG9yYWlyZV9vdXQgaW5cbiAgbGV0IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI3NTUtMC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKHNtaWNfZG90X2JydXRfaG9yYWlyZV8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChzbWljX2RvdF9icnV0X2hvcmFpcmVfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpICokXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOyBlbmRfY29sdW1uPTU3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXy5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSkgPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2F1dHJlc19jb2Rlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFLDqGdsZXMgZGUgbm9uLWN1bXVsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSkgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJhbV8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpIDwhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2w1MTJfM18yXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge1ByZXN0YXRpb25zRmFtaWxpYWxlc091dC5kcm9pdF9vdXZlcnRfb3V0ID0gZHJvaXRfb3V2ZXJ0XztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID0gY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0ID0gYWdlX2w1MTJfM18yXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luIGluXG4gIGxldCBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBwcmlzZV9lbl9jb21wdGVfOiBFbmZhbnQudCAtPiBQcmlzZUVuQ29tcHRlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IFByaXNlRW5Db21wdGUuUGFydGFnZWUgKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU0OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLlplcm8gKCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY0OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCB2ZXJzZW1lbnRfOiBFbmZhbnQudCAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2VtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1OTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDg7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4ODsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocGFyYW1fLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9lbmZhbnRzX2w1MjFfMV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfZW5mYW50c19sNTIxXzFcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDY7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjkxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfYWxpbsOpYV8yX2w1MjFfM1wiXVxuICAgIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByZXN1bHRfOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2lvbl9hdnJpbF8yMDA4XCI7XG4gICAgICBcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgpXG4gICAgKCkpKSBpblxuICBsZXQgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBpbnRlZ2VyID0gcmVzdWx0Xy5BbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfb3V0IGluXG4gIGxldCBibWFmX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xNDM7IGVuZF9jb2x1bW49NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGJtYWZfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xNDA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICB7UHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlX30pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmRyb2l0X291dmVydF9vdXQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl86IGludGVnZXIgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlc091dC5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXQgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpLmVuZmFudHNcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGVuZmFudHNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVuZmFudExlUGx1c0FnZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJFbmZhbnRMZVBsdXPDgmfDqVwiXVxuICAgIGVuZmFudF9sZV9wbHVzX2FnZSlcbiAgICB7RW5mYW50TGVQbHVzQWdlSW4uZW5mYW50c19pbiA9IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c199KSkgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IHJlc3VsdF8uRW5mYW50TGVQbHVzQWdlT3V0LmxlX3BsdXNfYWdlX291dCBpblxuICBsZXQgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogRW5mYW50LnQgLT4gaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM7IHN0YXJ0X2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxMSkgKDApICgwKSkpIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiMTRcIikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV86IEVuZmFudC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcImVuZmFudHNfw6BfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03NTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSBlbmZhbnRzX2FfY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV8gPSBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9pX2Q1MjFfM186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9JSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4NzcwMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5NTU4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTY4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE1NTgwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzgzMDAwMFwiKSArJFxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2Mjg2MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTY4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Nzc1OTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTgyNzkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKSArJFxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgIChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTA7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X2NvbXBsZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X2NvbXBsw6ltZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Mjc7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIwOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChhcnJheV9sZW5ndGggZW5mYW50c19hX2NoYXJnZV8pID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnQuYWdlKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmnDqG1lX2VuZmFudF9ldF9wbHVzX21heW90dGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSA+IVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICgoYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKSAqJFxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIC0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzacOobWVfZW5mYW50X21heW90dGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA2MTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDQ7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pID4hXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfdG90YWxfZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfdG90YWxfZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfbW95ZW5fZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfbW95ZW5fZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChhY2NfOiBkZWNpbWFsKSAoZW5mYW50XzogXykgLT5cbiAgICAgICAgICAgICAgICAgYWNjXyArJlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNDVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzOTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyNzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjgzOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTk7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTEwNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDk3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTU7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDcxN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1ODhcIikpXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1ODhcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTk7IHN0YXJ0X2NvbHVtbj0yOTsgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfYmFzZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfYmFzZVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICA+PSEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSEgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpID49ISAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9lbmZhbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudC5hZ2UpID49ISAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfaW50ZWdlcikgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29tcGxlbWVudF9kZWdyZXNzaWZfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzQ7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9faV9pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSQgcmVzc291cmNlc19tZW5hZ2VfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fICokIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJCByZXNzb3VyY2VzX21lbmFnZV8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTg7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzM7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDExN1wiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUwNTlcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X2V0X3BsdXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2nDqG1lX2VuZmFudF9ldF9wbHVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDFcIikpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwNVwiKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwMjVcIikpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGnDqG1lX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzc5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0MzdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQ5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yNTU1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2MTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY3MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yODA0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI5MzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4hIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzA2OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChibWFmX2RvdF9tb250YW50XyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKSAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlXyA+JCBwbGFmb25kX19pX2Q1MjFfM18pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiEgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhcnJheV9sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXCJdIChlbWJlZF9kZWNpbWFsKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV90b3RhbF9lbmZhbnRzXyA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgKG5vbWJyZV9tb3llbl9lbmZhbnRzXyAvJiBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlXyA8PSQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChyZXNzb3VyY2VzX21lbmFnZV8gPiQgcGxhZm9uZF9faV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JCBwbGFmb25kX19pX2lfZDUyMV8zXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDRcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIHBhcmFtXykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF8gKiRcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGludGVnZXIpIChlbmZhbnRfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgYWNjXylcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU0OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XykpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfICskXG4gICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBwYXJhbV8pKSkpKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJhbV8uRW5mYW50LmFnZSkgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTFcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXy5FbmZhbnQuYWdlKSA8IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIikpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1hZl9kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODg7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50LmFnZSkgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtYWZfZG90X21vbnRhbnRfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU2N1wiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2ZvcmZhaXRhaXJlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV8gPiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV8gPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9faV9pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFmb25kX19pX2lfZDUyMV8zXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19tZW5hZ2VfID4kIHBsYWZvbmRfX2lfZDUyMV8zXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX19pX2Q1MjFfM18gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGxhZm9uZF9faV9kNTIxXzNfICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4MzsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX2Jhc2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfaW5pdGlhbF9iYXNlXyAqJCByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTI7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX21ham9yYXRpb25fKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgIChtYXRjaCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJpc2VfZW5fY29tcHRlKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgcGFyYW1fKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuWmVybyBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlbiBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV9cbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgIChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogbW9uZXkpIChlbmZhbnRfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhY2NfICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgXCIwXCIpIGVuZmFudHNfYV9jaGFyZ2VfKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2Jhc2VfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4NzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbnRhbnRfdmVyc2VfYmFzZV8gKyQgbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9jb21wbGVtZW50XyB0aGVuXG4gICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRfZGVncmVzc2lmXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICBtb250YW50X2Jhc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl8pKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgICgoKChtb250YW50X3ZlcnNlX2Jhc2VfICskIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pICskXG4gICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV8pICskXG4gICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSArJFxuICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV8pIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKChub3QgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV8pKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19KSBpblxuICB7QWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfdmVyc2Vfb3V0ID0gbW9udGFudF92ZXJzZV99XG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgaV9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgaV9lbmZhbnRzXzogRW5mYW50RW50cmVlLnQgYXJyYXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4gaW5cbiAgbGV0IGlfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IGlfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRzX8OgX2NoYXJnZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogXykgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlKSArQFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMykgKDApICgwKSkpID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoeWVhcl9vZl9kYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX29mX251bWJlcnMgKDApICgxKSAoMSkpICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlfZGF0ZV9jb3VyYW50ZV8gLUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pXG4gICAgICAgICAgICAgIGlfZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5yZXNzb3VyY2VzX23DqW5hZ2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpX3Jlc3NvdXJjZXNfbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGlfcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZW5mYW50c1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZW5mYW50c19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXztcbiAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXztcbiAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mYW50c19hX2NoYXJnZV87XG4gICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJffSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50X3ZlcnNlXzogbW9uZXkgPSByZXN1bHRfLkFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X3ZlcnNlX291dCBpblxuICBsZXQgaV9tb250YW50X3ZlcnNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJpX21vbnRhbnRfdmVyc8OpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF92ZXJzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpKSkgaW5cbiAge0ludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5pX21vbnRhbnRfdmVyc2Vfb3V0ID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBlbmZhbnRfZW50cmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRJZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkRGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRQcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfdG9fanNvbyAoZW5mYW50X2VudHJlZSA6IEVuZmFudEVudHJlZS50KVxuICAgIDogZW5mYW50X2VudHJlZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkSWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfZW50cmVlLmRfaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9lbnRyZWUuZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZERhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfZW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBkUHJpc2VFbkNoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBkQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfZW50cmVlX29mX2pzb28gKGVuZmFudF9lbnRyZWUgOiBlbmZhbnRfZW50cmVlIEpzLnQpIDpcbiAgICBFbmZhbnRFbnRyZWUudCA9XG4gICAge1xuICAgICAgZF9pZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9lbnRyZWUjIy5kSWRlbnRpZmlhbnQ7XG4gICAgICBkX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRSZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkX2RhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kRGF0ZURlTmFpc3NhbmNlO1xuICAgICAgZF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnRfZW50cmVlIyMuZFByaXNlRW5DaGFyZ2U7XG4gICAgICBkX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9lbnRyZWUjIy5kQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9lbnRyZWUjIy5kQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgYWdlID0gaW50ZWdlcl90b19pbnQgZW5mYW50LmFnZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnQucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9vZl9qc29vIChlbmZhbnQgOiBlbmZhbnQgSnMudCkgOiBFbmZhbnQudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnQjIy5pZGVudGlmaWFudDtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vIGVuZmFudCMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50IyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50IyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50IyMuYWdlO1xuICAgICAgcHJpc2VfZW5fY2hhcmdlID0gcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gZW5mYW50IyMucHJpc2VFbkNoYXJnZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHJvaXRPdXZlcnRPdXQ6IChlbmZhbnQgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlT3V0OlxuICAgICAgKGVuZmFudCBKcy50LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExT3V0OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuZHJvaXRfb3V2ZXJ0X291dCAoZW5mYW50X29mX2pzb28gaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZU91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQgKGVuZmFudF9vZl9qc29vIGlucHV0KSkpXG4gICAgICB2YWwgYWdlTDUxMjMyT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuYWdlX2w1MTJfM18yX291dFxuICAgICAgdmFsIHJlZ2ltZU91dHJlTWVyTDc1MTFPdXQgPVxuICAgICAgICBKcy5ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dFxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF9vZl9qc29vXG4gICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID1cbiAgICB7XG4gICAgICBkcm9pdF9vdXZlcnRfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2Ryb2l0X291dmVydF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBhZ2VfbDUxMl8zXzJfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5hZ2VMNTEyMzJPdXQ7XG4gICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXQgPVxuICAgICAgICBKcy50b19ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMucmVnaW1lT3V0cmVNZXJMNzUxMU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBhZ2VNaW5pbXVtQWxpbmVhMUw1MjEzT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9vdXRcbiAgICA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4T3V0LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhZ2VNaW5pbXVtQWxpbmVhMUw1MjEzT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9vdXQuYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX291dFxuICAgICAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dF9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0XG4gICAgICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0IEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOE91dC50ID1cbiAgICB7XG4gICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCMjLmFnZU1pbmltdW1BbGluZWExTDUyMTNPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA9XG5vYmplY3QgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl90b19qc29vIChfIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCA9IG9iamVjdCVqcyBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb28gKF8gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50ID0gKClcbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlX291dCA9XG4gIG9iamVjdCBtZXRob2QgbGVQbHVzQWdlT3V0OiBlbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX291dF90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0XG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VPdXQudCkgOiBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxlUGx1c0FnZU91dCA9XG4gICAgICAgIGVuZmFudF90b19qc29vIGVuZmFudF9sZV9wbHVzX2FnZV9vdXQubGVfcGx1c19hZ2Vfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9vdXRfb2ZfanNvb1xuICAgIChlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IDogZW5mYW50X2xlX3BsdXNfYWdlX291dCBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlT3V0LnQgPVxuICAgIHtsZV9wbHVzX2FnZV9vdXQgPSBlbmZhbnRfb2ZfanNvbyBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IyMubGVQbHVzQWdlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9sZV9wbHVzX2FnZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZW5mYW50c0luOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyAoZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF90b19qc29vIHgpIGVuZmFudF9sZV9wbHVzX2FnZV9pbi5lbmZhbnRzX2luXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gICAgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlSW4udCA9XG4gICAge1xuICAgICAgZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbmZhbnRfbGVfcGx1c19hZ2VfaW4jIy5lbmZhbnRzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2VPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQubW9udGFudF92ZXJzZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF92ZXJzZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5tb250YW50VmVyc2VPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRzQUNoYXJnZUluOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgZW5mYW50c0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5lbmZhbnRzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLnBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZW5mYW50c19hX2NoYXJnZV9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZW5mYW50c0FDaGFyZ2VJbjtcbiAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5hdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19vdXQgPVxuICBvYmplY3QgbWV0aG9kIGJydXRIb3JhaXJlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19vdXRfdG9fanNvbyAoc21pY19vdXQgOiBTbWljT3V0LnQpIDogc21pY19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYnJ1dEhvcmFpcmVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgc21pY19vdXQuYnJ1dF9ob3JhaXJlX291dFxuICAgICAgZW5kXG4gIGxldCBzbWljX291dF9vZl9qc29vIChzbWljX291dCA6IHNtaWNfb3V0IEpzLnQpIDogU21pY091dC50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHNtaWNfb3V0IyMuYnJ1dEhvcmFpcmVPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50T3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dFxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudE91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dC5tb250YW50X291dFxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMubW9udGFudE91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dFxuICAgIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaU1vbnRhbnRWZXJzZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQuaV9tb250YW50X3ZlcnNlX291dFxuICAgICAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIDpcbiAgICBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgaV9tb250YW50X3ZlcnNlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5pTW9udGFudFZlcnNlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlEYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpRW5mYW50c0luOiBlbmZhbnRfZW50cmVlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNzb3VyY2VzTWVuYWdlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaURhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGlFbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9lbnRyZWVfdG9fanNvbyB4KSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2VuZmFudHNfaW5cbiAgICAgIHZhbCBpUmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCBpUmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc2lkZW5jZV9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblxuICAgICAgdmFsIGlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgaV9kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaURhdGVDb3VyYW50ZUluO1xuICAgICAgaV9lbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlFbmZhbnRzSW47XG4gICAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaVJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIGlfcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNpZGVuY2VJbjtcbiAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cblxuXG5cbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50KVxuICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0IEpzLnQgPVxuICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb3V0X3RvX2pzb29cblxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudClcbiAgOiBlbmZhbnRfbGVfcGx1c19hZ2Vfb3V0IEpzLnQgPVxuICBlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV9vdXRfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWNfb3V0IEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfb3V0X3RvX2pzb29cblxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG5cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuXG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQgPVxuICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cblxuXG5sZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4IDogKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCAtPiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAgICAgXG4gICAgICBtZXRob2QgZW5mYW50TGVQbHVzQWdlIDogKGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50IC0+IGVuZmFudF9sZV9wbHVzX2FnZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVuZmFudF9sZV9wbHVzX2FnZVxuICAgICAgXG4gICAgICBtZXRob2Qgc21pYyA6IChzbWljX2luIEpzLnQgLT4gc21pY19vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBwcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBhbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICBlbmQpIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxubW9kdWxlIFR5cGVCYWlsbGV1ciA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1clNvY2lhbCBvZiB1bml0XG4gICAgfCBCYWlsbGV1clByaXZlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9iYWlsbGV1ciAoeDogVHlwZUJhaWxsZXVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUJhaWxsZXVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyU29jaWFsIHggLT4gKFwiQmFpbGxldXJTb2NpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQmFpbGxldXJQcml2ZSB4IC0+IChcIkJhaWxsZXVyUHJpdsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVQcmV0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEQzMzFfMzIgb2YgdW5pdFxuICAgIHwgRDMzMV82M182NCBvZiB1bml0XG4gICAgfCBEMzMxXzU5Xzggb2YgdW5pdFxuICAgIHwgRDMzMV83Nl8xIG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9wcmV0ICh4OiBUeXBlUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVQcsOqdFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEMzMxXzMyIHggLT4gKFwiRDMzMV8zMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzYzXzY0IHggLT4gKFwiRDMzMV82M182NFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzU5XzggeCAtPiAoXCJEMzMxXzU5XzhcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV83Nl8xIHggLT4gKFwiRDMzMV83Nl8xXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVGl0dWxhaXJlUHJldCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEZW1hbmRldXIgb2YgdW5pdFxuICAgIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3RpdHVsYWlyZV9wcmV0ICh4OiBUaXR1bGFpcmVQcmV0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVGl0dWxhaXJlUHLDqnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyIHggLT4gKFwiRGVtYW5kZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24geCAtPlxuICAgICAgKFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgb2YgdW5pdFxuICAgIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSAoeDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVUcmF2YXV4TG9nZW1lbnREODMyXzE1XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgeCAtPlxuICAgICAgKFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIHggLT5cbiAgICAgIChcIlRyYXZhdXhTdXJMb2dlbWVudETDqWrDoEFjcXVpc0Q4MzJfMTVfMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXNEZVRyYXZhdXggeCAtPiAoXCJQYXNEZVRyYXZhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSBvZiB1bml0XG4gICAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ICh4OiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlVHJhdmF1eExvZ2VtZW50Ujg0Ml81XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IHggLT4gKFwiT2JqZWN0aWZEw6ljZW5jZUxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSB4IC0+IChcIlByw6l2dURhbnNMaXN0ZVIzMjFfMTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgeCAtPlxuICAgICAgKFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFzRGVUcmF2YXV4IHggLT4gKFwiUGFzRGVUcmF2YXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFtZWxpb3JlUGFyT2NjdXBhbnQgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgT3VpIG9mIHVuaXRcbiAgICB8IE5vbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCAoeDogQW1lbGlvcmVQYXJPY2N1cGFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkFtw6lsaW9yw6lQYXJPY2N1cGFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPdWkgeCAtPiAoXCJPdWlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExpbWl0ZVRyYW5jaGUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIG1vbmV5XG4gICAgfCBJbmZpbmkgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9saW1pdGVfdHJhbmNoZSAoeDogTGltaXRlVHJhbmNoZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkxpbWl0ZVRyYW5jaGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUmV2ZW51IHggLT4gKFwiUmV2ZW51XCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTGltaXRlVHJhbmNoZURlY2ltYWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIGRlY2ltYWxcbiAgICB8IEluZmluaSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwgKHg6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTGltaXRlVHJhbmNoZUTDqWNpbWFsXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFJldmVudSB4IC0+IChcIlJldmVudVwiLCBlbWJlZF9kZWNpbWFsIHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvblJlY3VlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25fcmVjdWUgKHg6IFByZXN0YXRpb25SZWN1ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByZXN0YXRpb25SZcOndWVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IHggLT4gKFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlQ29udHJhdFRyYXZhaWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQ0RJIG9mIHVuaXRcbiAgICB8IEF1dHJlcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfY29udHJhdF90cmF2YWlsICh4OiBUeXBlQ29udHJhdFRyYXZhaWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQ29udHJhdFRyYXZhaWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ0RJIHggLT4gKFwiQ0RJXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlcyB4IC0+IChcIkF1dHJlc1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRPdUF1dHJlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBvZiBkZWNpbWFsXG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3BhcmVudF9vdV9hdXRyZSAoeDogUGFyZW50T3VBdXRyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudE91QXV0cmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHggLT5cbiAgICAgIChcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2Npw6l0w6lzXCIsIGVtYmVkX2RlY2ltYWwgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBvZiBkZWNpbWFsXG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSAoeDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkdhcmRlQWx0ZXJuw6llXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFBhc0RlR2FyZGVBbHRlcm5lZSB4IC0+IChcIlBhc0RlR2FyZGVBbHRlcm7DqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiLCBlbWJlZF9kZWNpbWFsIHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFzY2VuZGFudCBvZiB1bml0XG4gICAgfCBEZXNjZW5kYW50IG9mIHVuaXRcbiAgICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFyZW50ZSAoeDogUGFyZW50ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFzY2VuZGFudCB4IC0+IChcIkFzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEZXNjZW5kYW50IHggLT4gKFwiRGVzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSB4IC0+XG4gICAgICAoXCJDb2xsYXTDqXJhbERldXhpw6htZVRyb2lzacOobWVEZWdyw6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGF0ZURlTmFpc3NhbmNlIG9mIGRhdGVcbiAgICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2Ugb2YgdW5pdFxuICAgIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlXG4gICh4OiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERhdGVEZU5haXNzYW5jZSB4IC0+IChcIkRhdGVEZU5haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHgpXG4gICAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIHggLT5cbiAgICAgIChcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgeCAtPlxuICAgICAgKFwiQXByw6hzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIE5hdGlvbmFsaXRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEZyYW5jYWlzZSBvZiB1bml0XG4gICAgfCBFdHJhbmdlcmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9uYXRpb25hbGl0ZSAoeDogTmF0aW9uYWxpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOYXRpb25hbGl0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRnJhbmNhaXNlIHggLT4gKFwiRnJhbsOnYWlzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHJhbmdlcmUgeCAtPiAoXCLDiXRyYW5nw6hyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBab25lREhhYml0YXRpb24gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgWm9uZTEgb2YgdW5pdFxuICAgIHwgWm9uZTIgb2YgdW5pdFxuICAgIHwgWm9uZTMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiAoeDogWm9uZURIYWJpdGF0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiWm9uZURIYWJpdGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFpvbmUxIHggLT4gKFwiWm9uZTFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTIgeCAtPiAoXCJab25lMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBab25lMyB4IC0+IChcIlpvbmUzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENhdGVnb3JpZUNhbGN1bEFQTCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2NhdGlvbiBvZiB1bml0XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgb2YgdW5pdFxuICAgIHwgTG9nZW1lbnRGb3llciBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wgKHg6IENhdGVnb3JpZUNhbGN1bEFQTC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNhdMOpZ29yaWVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9jYXRpb24geCAtPiAoXCJMb2NhdGlvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgeCAtPiAoXCJBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMb2dlbWVudEZveWVyIHggLT4gKFwiTG9nZW1lbnRGb3llclwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBvZiBtb25leVxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAoeDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIHggLT4gKFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1ciBvZiB1bml0XG4gICAgfCBCZW5lZmljaWFpcmUgb2YgdW5pdFxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2EgKHg6IFZlcnNlbWVudEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnTDgFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBCYWlsbGV1ciB4IC0+IChcIkJhaWxsZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEJlbmVmaWNpYWlyZSB4IC0+IChcIkLDqW7DqWZpY2lhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSB4IC0+IChcIsOJdGFibGlzc2VtZW50SGFiaWxpdMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBvZiBtb25leVxuICAgIHwgTWVuc3VhbGl0ZSBvZiBtb25leVxuICAgIHwgTG95ZXIgb2YgbW9uZXlcbiAgZW5kXG5sZXQgZW1iZWRfZGVwZW5zZV9sb2dlbWVudCAoeDogRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyB4IC0+IChcIlRvdGFsQW5udWVsw4ljaMOpYW5jZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE1lbnN1YWxpdGUgeCAtPiAoXCJNZW5zdWFsaXTDqVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTG95ZXIgeCAtPiAoXCJMb3llclwiLCBlbWJlZF9tb25leSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb25JbXBheWUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgSW1wYXllTG95ZXIgb2YgdW5pdFxuICAgIHwgSW1wYXllUHJldCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUgKHg6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTW9kZU9jY3VwYXRpb25JbXBhecOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEltcGF5ZUxveWVyIHggLT4gKFwiSW1wYXnDqUxveWVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEltcGF5ZVByZXQgeCAtPiAoXCJJbXBhecOpUHLDqnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUGFzRWxpZ2libGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGFzRWxpZ2libGUgeCAtPiAoXCJQYXPDiWxpZ2libGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCB4IC0+XG4gICAgICAoXCJBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25GYW1pbGlhbGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2VsaWJhdGFpcmUgb2YgdW5pdFxuICAgIHwgTWFyaWVzIG9mIGRhdGVcbiAgICB8IFBhY3NlcyBvZiB1bml0XG4gICAgfCBDb25jdWJpbnMgb2YgdW5pdFxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgb2YgdW5pdFxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSAoeDogU2l0dWF0aW9uRmFtaWxpYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uRmFtaWxpYWxlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENlbGliYXRhaXJlIHggLT4gKFwiQ8OpbGliYXRhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcmllcyB4IC0+IChcIk1hcmnDqXNcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgUGFjc2VzIHggLT4gKFwiUGFjc8Opc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb25jdWJpbnMgeCAtPiAoXCJDb25jdWJpbnNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgeCAtPlxuICAgICAgKFwiQ8OpbGliYXRhaXJlU8OpcGFyw6lEZUZhaXRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IHggLT5cbiAgICAgIChcIkNvbmN1YmluYWdlRG9udFPDqXBhcsOpRGVGYWl0XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByaXNlRW5DaGFyZ2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJSw6lzaWRlbmNlQWx0ZXJuw6llQWxsb2NhdGFpcmVVbmlxdWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIHggLT5cbiAgICAgIChcIlLDqXNpZGVuY2VBbHRlcm7DqWVBbGxvY2F0aW9uc1BhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VTb2NpYWxlIG9mIHVuaXRcbiAgICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciAoeDogVHlwZUxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlTG9nZW1lbnRGb3llclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyB4IC0+XG4gICAgICAoXCJMb2dlbWVudFBlcnNvbm5lc8OCZ8OpZXNPdUhhbmRpY2Fww6llc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VTb2NpYWxlIHggLT4gKFwiUsOpc2lkZW5jZVNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgeCAtPlxuICAgICAgKFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubsOpTDM1M18yQXZhbnQxOTk1XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZSBvZiB1bml0XG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVSZWhhYmlsaXRlZSBvZiB1bml0XG4gICAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBvZiB1bml0XG4gICAgfCBBdXRyZXNQZXJzb25uZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoeDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2F0w6lnb3JpZcOJcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlIHggLT4gKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWUgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVSw6loYWJpbGl0w6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IHggLT5cbiAgICAgIChcIlBlcnNvbm5lc8OCZ8OpZXNTZWxvbjNEZUQ4NDJfMTZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmVzUGVyc29ubmVzIHggLT4gKFwiQXV0cmVzUGVyc29ubmVzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBQZXJzb25uZVNldWxlIG9mIHVuaXRcbiAgICB8IENvdXBsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sICh4OiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGVyc29ubmVTZXVsZSB4IC0+IChcIlBlcnNvbm5lU2V1bGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ291cGxlIHggLT4gKFwiQ291cGxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlRW5mYW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCAoeDogUHJpc2VFbkNoYXJnZUVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZVBhcnRhZ2VBbGxvY2F0aW9uc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWXDgExhRmFtaWxsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBdmFudCBvZiB1bml0XG4gICAgfCBQZW5kYW50IG9mIHVuaXRcbiAgICB8IEFwcmVzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgKHg6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdmFudCB4IC0+IChcIkF2YW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlbmRhbnQgeCAtPiAoXCJQZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzIHggLT4gKFwiQXByw6hzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbMOpbWVudFByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IHggLT5cbiAgICAgIChcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IHggLT4gKFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbsOJZHVjYXRpb25FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25SZW50csOpZVNjb2xhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Kb3VybmFsacOocmVQcmVzZW5jZVBhcmVudGFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQZXJzb25uZVNvdXNMb2NhdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb246IGludGVnZXI7XG4gICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiAoeDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBlcnNvbm5lU291c0xvY2F0aW9uXCJdLFxuICBbKFwiYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24pO1xuICAgIChcImNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlBlcnNvbm5lU291c0xvY2F0aW9uLmNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xKV0pXG5cblxubW9kdWxlIFBhdHJpbW9pbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80OiBtb25leTtcbiAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQ6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3BhdHJpbW9pbmUgKHg6IFBhdHJpbW9pbmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlBhdHJpbW9pbmVcIl0sXG4gIFsoXCJwcm9kdWlzYW50X3JldmVudV9ww6lyaW9kZV9yODIyXzNfM19yODIyXzRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpO1xuICAgIChcIm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9ww6lyaW9kZV9yODIyXzNfM19yODIyXzRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KV0pXG5cblxubW9kdWxlIFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXM6IGJvb2w7XG4gICAgcmVzc291cmNlczogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyICh4OiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXJcIl0sXG4gIFsoXCJkdXLDqWVfcsOpc2lkZW5jZV9kdXJhbnRfcMOpcmlvZGVfcl84MjJfM18xX3N1cMOpcmlldXJlX8OgXzZfbW9pc1wiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcyk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIucmVzc291cmNlcyldKVxuXG5cbm1vZHVsZSBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50OiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIFsoXCJhbmNpZW5fbG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBCYWlsbGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9iYWlsbGV1cjogVHlwZUJhaWxsZXVyLnQ7XG4gICAgcmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WOiBib29sO1xuICAgIHJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUk6IGJvb2w7XG4gICAgY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQ6IGJvb2w7XG4gICAgYWNxdWlzaXRpb25fYWlkZXNfZXRhdF9wcmV0X3RpdHJlX0lJX291X2xpdnJlX0lJSTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9iYWlsbGV1ciAoeDogQmFpbGxldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkJhaWxsZXVyXCJdLFxuICBbKFwidHlwZV9iYWlsbGV1clwiLCBlbWJlZF90eXBlX2JhaWxsZXVyXG4gICAgeC5CYWlsbGV1ci50eXBlX2JhaWxsZXVyKTtcbiAgICAoXCJyZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1ZcIiwgZW1iZWRfYm9vbFxuICAgIHguQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WKTtcbiAgICAoXCJyZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUkpO1xuICAgIChcImNvbnN0cnVpdF9hbcOpbGlvcsOpX2NvbmRpdGlvbnNfbDgzMV8xXzRcIiwgZW1iZWRfYm9vbFxuICAgIHguQmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQpO1xuICAgIChcImFjcXVpc2l0aW9uX2FpZGVzX8OpdGF0X3Byw6p0X3RpdHJlX0lJX291X2xpdnJlX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5CYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJKV0pXG5cblxubW9kdWxlIFByZXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfcHJldDogVHlwZVByZXQudDtcbiAgICBkYXRlX3NpZ25hdHVyZTogZGF0ZTtcbiAgICB0aXR1bGFpcmVfcHJldDogVGl0dWxhaXJlUHJldC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXQgKHg6IFByZXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlByw6p0XCJdLFxuICBbKFwidHlwZV9wcsOqdFwiLCBlbWJlZF90eXBlX3ByZXQgeC5QcmV0LnR5cGVfcHJldCk7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVcIiwgZW1iZWRfZGF0ZSB4LlByZXQuZGF0ZV9zaWduYXR1cmUpO1xuICAgIChcInRpdHVsYWlyZV9wcsOqdFwiLCBlbWJlZF90aXR1bGFpcmVfcHJldCB4LlByZXQudGl0dWxhaXJlX3ByZXQpXSlcblxuXG5tb2R1bGUgTmV1Zk91QW5jaWVuID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5ldWYgb2YgdW5pdFxuICAgIHwgQW5jaWVuIG9mIEFtZWxpb3JlUGFyT2NjdXBhbnQudFxuICBlbmRcbmxldCBlbWJlZF9uZXVmX291X2FuY2llbiAoeDogTmV1Zk91QW5jaWVuLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTmV1Zk91QW5jaWVuXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5ldWYgeCAtPiAoXCJOZXVmXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFuY2llbiB4IC0+IChcIkFuY2llblwiLCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgeCkpXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2hhdXQ6IExpbWl0ZVRyYW5jaGUudDsgYmFzOiBtb25leTsgdGF1eDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX3RyYW5jaGVfcmV2ZW51ICh4OiBUcmFuY2hlUmV2ZW51LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFuY2hlUmV2ZW51XCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZSB4LlRyYW5jaGVSZXZlbnUuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX21vbmV5IHguVHJhbmNoZVJldmVudS5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnUudGF1eCldKVxuXG5cbm1vZHVsZSBUcmFuY2hlUmV2ZW51RGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZURlY2ltYWwudDsgYmFzOiBkZWNpbWFsOyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCAoeDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVEw6ljaW1hbFwiXSxcbiAgWyhcImhhdXRcIiwgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpO1xuICAgIChcImJhc1wiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKTtcbiAgICAoXCJ0YXV4XCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KV0pXG5cblxubW9kdWxlIEF1dHJlUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZXNzb3VyY2VzOiBtb25leTtcbiAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZTogYm9vbDtcbiAgICBwYXJlbnRlOiBQYXJlbnRlLnQ7XG4gICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2k6IGJvb2w7XG4gICAgYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1OiBib29sO1xuICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcyk7XG4gICAgKFwiYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0w6lyYWxfZGV1eGnDqG1lX3Ryb2lzacOobWVfZGVncsOpXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpO1xuICAgIChcInBhcmVudMOpXCIsIGVtYmVkX3BhcmVudGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpO1xuICAgIChcImluY2FwYWNpdMOpXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVwiLCBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3PDqWN1XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSk7XG4gICAgKFwidGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfw6Jnw6llXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXSlcblxuXG5tb2R1bGUgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBvZiB1bml0XG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgb2YgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAoeDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlTmFpc3NhbmNlVHJvaXNpw6htZU91RGVybmllclBsdXNFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyB4IC0+IChcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGx1c0RlVHJvaXNFbmZhbnRzIHggLT5cbiAgICAgIChcIlBsdXNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSB4KSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVkZXZhbmNlOiBtb25leTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgKHg6IEluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJyZWRldmFuY2VcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXSlcblxuXG5tb2R1bGUgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBhZ2U6IGludGVnZXI7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcIsOiZ2VcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnRcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnRBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2w7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBhZ2U6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2FfY2hhcmdlICh4OiBFbmZhbnRBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnTDgENoYXJnZVwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICB4LkVuZmFudEFDaGFyZ2UucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCLDomdlXCIsIGVtYmVkX2ludGVnZXIgeC5FbmZhbnRBQ2hhcmdlLmFnZSk7XG4gICAgKFwic2l0dWF0aW9uX2dhcmRlX2FsdGVybsOpZVwiLCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICB4LkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKV0pXG5cblxubW9kdWxlIExvdWVPdVNvdXNMb3VlQURlc1RpZXJzID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vbiBvZiB1bml0XG4gICAgfCBPdWkgb2YgUGVyc29ubmVTb3VzTG9jYXRpb24udFxuICBlbmRcbmxldCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyAoeDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMb3XDqU91U291c0xvdcOpw4BEZXNUaWVyc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24geCkpXG5cblxubW9kdWxlIERlbWFuZGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZTogYm9vbDtcbiAgICBhZ2VfZGVtYW5kZXVyOiBpbnRlZ2VyO1xuICAgIGRhdGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGNvbnRyYXRfZGVfdHJhdmFpbDogVHlwZUNvbnRyYXRUcmF2YWlsLnQ7XG4gICAgbmF0aW9uYWxpdGU6IE5hdGlvbmFsaXRlLnQ7XG4gICAgcGF0cmltb2luZTogUGF0cmltb2luZS50O1xuICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZGVtYW5kZXVyICh4OiBEZW1hbmRldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkRlbWFuZGV1clwiXSxcbiAgWyhcInNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3PDqWN1cml0w6lfc29jaWFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5EZW1hbmRldXIuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSk7XG4gICAgKFwiYWdlX2RlbWFuZGV1clwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5EZW1hbmRldXIuYWdlX2RlbWFuZGV1cik7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRGVtYW5kZXVyLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJjb250cmF0X2RlX3RyYXZhaWxcIiwgZW1iZWRfdHlwZV9jb250cmF0X3RyYXZhaWxcbiAgICB4LkRlbWFuZGV1ci5jb250cmF0X2RlX3RyYXZhaWwpO1xuICAgIChcIm5hdGlvbmFsaXTDqVwiLCBlbWJlZF9uYXRpb25hbGl0ZVxuICAgIHguRGVtYW5kZXVyLm5hdGlvbmFsaXRlKTtcbiAgICAoXCJwYXRyaW1vaW5lXCIsIGVtYmVkX3BhdHJpbW9pbmVcbiAgICB4LkRlbWFuZGV1ci5wYXRyaW1vaW5lKTtcbiAgICAoXCJwZXJzb25uZV9ow6liZXJnw6llX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3PDqWN1cml0w6lfc29jaWFsZVwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKV0pXG5cblxubW9kdWxlIENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IENoYW5nZW1lbnQgb2YgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50XG4gICAgfCBQYXNEZUNoYW5nZW1lbnQgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCAoeDogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDaGFuZ2VtZW50TG9nZW1lbnREODQyXzRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ2hhbmdlbWVudCB4IC0+XG4gICAgICAoXCJDaGFuZ2VtZW50XCIsIGVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IHgpXG4gICAgfCBQYXNEZUNoYW5nZW1lbnQgeCAtPiAoXCJQYXNEZUNoYW5nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JhaWxsZXVyOiBCYWlsbGV1ci50fVxuZW5kXG5sZXQgZW1iZWRfbG9jYXRpb24gKHg6IExvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2NhdGlvblwiXSxcbiAgWyhcImJhaWxsZXVyXCIsIGVtYmVkX2JhaWxsZXVyIHguTG9jYXRpb24uYmFpbGxldXIpXSlcblxuXG5tb2R1bGUgUHJvcHJpZXRhaXJlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtwcmV0OiBQcmV0LnR9XG5lbmRcbmxldCBlbWJlZF9wcm9wcmlldGFpcmUgKHg6IFByb3ByaWV0YWlyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJvcHJpw6l0YWlyZVwiXSwgWyhcInByw6p0XCIsIGVtYmVkX3ByZXQgeC5Qcm9wcmlldGFpcmUucHJldCldKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZTogbW9uZXk7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQ6IG1vbmV5O1xuICAgIGRhdGVfc2lnbmF0dXJlX3ByZXQ6IGRhdGU7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnQ6IGRhdGU7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTU6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudDtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81OiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudDtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmU6IGJvb2w7XG4gICAgY29wcm9wcmlldGU6IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTc6IGJvb2w7XG4gICAgdHlwZV9wcmV0OiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnQ6IE5ldWZPdUFuY2llbi50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX3ByaW5jaXBhbGUpO1xuICAgIChcImNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdFwiLCBlbWJlZF9tb25leVxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0KTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdFwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9zaWduYXR1cmVfcHJldCk7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5kYXRlX2VudHJlZV9sb2dlbWVudCk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSk7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5jb3Byb3ByaWV0ZSk7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcIiwgZW1iZWRfYm9vbFxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KTtcbiAgICAoXCJ0eXBlX3Byw6p0XCIsIGVtYmVkX3R5cGVfcHJldFxuICAgIHguSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfcHJldCk7XG4gICAgKFwiYW5jaWVubmV0w6lfbG9nZW1lbnRcIiwgZW1iZWRfbmV1Zl9vdV9hbmNpZW5cbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5hbmNpZW5uZXRlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIFBlcnNvbm5lQUNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFbmZhbnRBQ2hhcmdlIG9mIEVuZmFudEFDaGFyZ2UudFxuICAgIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2Ugb2YgQXV0cmVQZXJzb25uZUFDaGFyZ2UudFxuICBlbmRcbmxldCBlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSAoeDogUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFbmZhbnRBQ2hhcmdlIHggLT4gKFwiRW5mYW50w4BDaGFyZ2VcIiwgZW1iZWRfZW5mYW50X2FfY2hhcmdlIHgpXG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSB4IC0+XG4gICAgICAoXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIiwgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgeCkpXG5cblxubW9kdWxlIEluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbDogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzOiBib29sO1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlOiBib29sO1xuICAgIGNvbG9jYXRpb246IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnM6IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGU6IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzI6IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQ6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmICh4OiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxveWVyX3ByaW5jaXBhbCk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlKTtcbiAgICAoXCJjb2xvY2F0aW9uXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY29sb2NhdGlvbik7XG4gICAgKFwiw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc1wiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpO1xuICAgIChcInLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGUpO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV91c2VyOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudDogZGF0ZTtcbiAgICBsb2NhdGlvbjogTG9jYXRpb24udDtcbiAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMTogYm9vbDtcbiAgICBjb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvZ2VtZW50X2ZveWVyICh4OiBMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJMb2dlbWVudEZveWVyXCJdLFxuICBbKFwidHlwZVwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcik7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KTtcbiAgICAoXCJsb2NhdGlvblwiLCBlbWJlZF9sb2NhdGlvblxuICAgIHguTG9nZW1lbnRGb3llci5sb2NhdGlvbik7XG4gICAgKFwicmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSk7XG4gICAgKFwiY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkpXSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zQ2FsY3VsQVBMID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEluZm9zTG9jYXRpZiBvZiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnRcbiAgICB8IEluZm9zTG9nZW1lbnRGb3llciBvZiBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2dlbWVudEZveWVyLnRcbiAgICB8IEluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIG9mIEluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50XG4gIGVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgKHg6IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkluZm9ybWF0aW9uc0NhbGN1bEFQTFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJbmZvc0xvY2F0aWYgeCAtPlxuICAgICAgKFwiSW5mb3NMb2NhdGlmXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiB4KVxuICAgIHwgSW5mb3NMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIkluZm9zTG9nZW1lbnRGb3llclwiLCBlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyIHgpXG4gICAgfCBJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSB4IC0+XG4gICAgICAoXCJJbmZvc0FjY2Vzc2lvblByb3ByacOpdMOpXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb24gPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBvZiBMb2dlbWVudEZveWVyLnRcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IFNvdXNMb2NhdGFpcmUgb2YgTG9jYXRpb24udFxuICAgIHwgTG9jYXRpb25BY2Nlc3Npb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uICh4OiBNb2RlT2NjdXBhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk1vZGVPY2N1cGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0YWlyZSB4IC0+IChcIkxvY2F0YWlyZVwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIlLDqXNpZGVudExvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24geCAtPlxuICAgICAgKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgU291c0xvY2F0YWlyZSB4IC0+IChcIlNvdXNMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIHggLT4gKFwiTG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpKVxuXG5cbm1vZHVsZSBMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzaWRlbmNlX3ByaW5jaXBhbGU6IGJvb2w7XG4gICAgZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2Y6IGJvb2w7XG4gICAgbW9kZV9vY2N1cGF0aW9uOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHByb3ByaWV0YWlyZTogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50O1xuICAgIHVzdWZydWl0OiBQYXJlbnRPdUF1dHJlLnQ7XG4gICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjI6IGJvb2w7XG4gICAgc3VyZmFjZV9tX2NhcnJlczogaW50ZWdlcjtcbiAgICBlc3RfYW5jaWVuX2w4MzFfMjogYm9vbDtcbiAgICBzaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzI6IGJvb2w7XG4gICAgem9uZTogWm9uZURIYWJpdGF0aW9uLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnQgKHg6IExvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2dlbWVudFwiXSxcbiAgWyhcInLDqXNpZGVuY2VfcHJpbmNpcGFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZSk7XG4gICAgKFwiZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2ZcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2YpO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbik7XG4gICAgKFwicHJvcHJpw6l0YWlyZVwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnByb3ByaWV0YWlyZSk7XG4gICAgKFwibG91w6lfb3Vfc291c19sb3XDqV/DoF9kZXNfdGllcnNcIiwgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICB4LkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKTtcbiAgICAoXCJ1c3VmcnVpdFwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnVzdWZydWl0KTtcbiAgICAoXCJsb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2Mik7XG4gICAgKFwic3VyZmFjZV9tX2NhcnLDqXNcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiZXN0X2FuY2llbl9sODMxXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2FuY2llbl9sODMxXzIpO1xuICAgIChcInNpdHXDqV9jb21tdW5lX2TDqXPDqXF1aWxpYnJlX2w4MzFfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpO1xuICAgIChcInpvbmVcIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb24geC5Mb2dlbWVudC56b25lKV0pXG5cblxubW9kdWxlIE1lbmFnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJlc3RhdGlvbnNfcmVjdWVzOiBQcmVzdGF0aW9uUmVjdWUudCBhcnJheTtcbiAgICBsb2dlbWVudDogTG9nZW1lbnQudDtcbiAgICBwZXJzb25uZXNfYV9jaGFyZ2U6IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5O1xuICAgIG5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50OiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGU6IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIGNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaTogYm9vbDtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZTogYm9vbDtcbiAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1czpcbiAgICAgIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbWVuYWdlICh4OiBNZW5hZ2UudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIk3DqW5hZ2VcIl0sXG4gIFsoXCJwcmVzdGF0aW9uc19yZcOndWVzXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wcmVzdGF0aW9uX3JlY3VlKVxuICAgIHguTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgKFwibG9nZW1lbnRcIiwgZW1iZWRfbG9nZW1lbnQgeC5NZW5hZ2UubG9nZW1lbnQpO1xuICAgIChcInBlcnNvbm5lc1/DoF9jaGFyZ2VcIiwgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgIHguTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSk7XG4gICAgKFwibm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4Lk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJjb25kaXRpb25fcmF0dGFjaMOpX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpO1xuICAgIChcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5NZW5hZ2Uubm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlKTtcbiAgICAoXCJlbmZhbnRfw6BfbmHDrnRyZV9hcHLDqHNfcXVhdHJpw6htZV9tb2lzX2dyb3NzZXNzZVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4Lk1lbmFnZS5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9vdXQ6IGRhdGU7XG4gICAgZWxpZ2liaWxpdGVfb3V0OiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQ6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQ6IGRlY2ltYWwgYXJyYXk7XG4gICAgY29uZGl0aW9uXzJfcjgyM180X291dDogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X291dFwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfb3V0XCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmRhdGVfY291cmFudGVfb3V0KTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpX291dFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlX291dFwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQpO1xuICAgIChcImNvbmRpdGlvbl8yX3I4MjNfNF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX291dDogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZV9vdXQ6IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dDogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dDogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0ICh4OiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9vdXRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX291dFwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQpO1xuICAgIChcIsOpbGlnaWJpbGl0w6lfb3V0XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0KTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZV9vdXRcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0OiBpbnRlZ2VyO1xuICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0OiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0ICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudF9vdXRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dFwiLFxuICAgIGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dCk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVfb3V0XCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBib29sO1xuICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW46IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfb3V0OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudF9vdXRcIl0sXG4gIFsoXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50X291dFwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50T3V0Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X291dCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9lbW1lbmFnZW1lbnRfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9lbW3DqW5hZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZMOpcGVuc2VzX2p1c3RpZmnDqWVzX3LDqWVsbGVtZW50X2VuZ2Fnw6llc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luKV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge3Jlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfb3V0KV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19kZW1hbmRldXJfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW46IG1vbmV5O1xuICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW46XG4gICAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50IGFycmF5O1xuICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW46IGJvb2w7XG4gICAgcGVyc29ubmVzX2FfY2hhcmdlX2luOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbjogYm9vbDtcbiAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbjogYm9vbDtcbiAgICBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW46IGRhdGU7XG4gICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbjpcbiAgICAgIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwicmVzc291cmNlc19kZW1hbmRldXJfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbik7XG4gICAgKFwicmVzc291cmNlc19jb25qb2ludF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4pO1xuICAgIChcInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW5cIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyKVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4pO1xuICAgIChcImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0w6lfcsOpbXVuw6lyw6llX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImNvbmRpdGlvbl/DomdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3Vww6lyaWV1cl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbik7XG4gICAgKFwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc1/DqXR1ZGVzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbik7XG4gICAgKFwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4pO1xuICAgIChcInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cIixcbiAgICBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X291dDogbW9uZXkgLT4gbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCAoeDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXQ6IG1vbmV5O1xuICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX291dDogbW9uZXk7XG4gICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQ6IG1vbmV5O1xuICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dDogZGVjaW1hbDtcbiAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlX291dDogbW9uZXk7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dDogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZl9vdXRcIl0sXG4gIFsoXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dCk7XG4gICAgKFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQpO1xuICAgIChcInBhcnRpY2lwYXRpb25fbWluaW1hbGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCk7XG4gICAgKFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dCk7XG4gICAgKFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4pO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcImNvbG9jYXRpb25faW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlX291dFwiXSxcbiAgWyhcIm1vbnRhbnRfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiBib29sO1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW46IGRlY2ltYWxcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luICh4OiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZV9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbik7XG4gICAgKFwiY29uZGl0aW9uXzJfZHVfODMyXzI1X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgKHg6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llcl9vdXRcIl0sXG4gIFsoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dFwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQ6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNV9vdXQ6IG1vbmV5O1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0OiBkZWNpbWFsO1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dDogbW9uZXk7XG4gICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQ6IG1vbmV5O1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dDogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0OiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0ICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJfb3V0XCJdLFxuICBbKFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X291dCk7XG4gICAgKFwiY29lZmZpY2llbnRfcl9kODMyXzI1X291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3JfZDgzMl8yNV9vdXQpO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQpO1xuICAgIChcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXQpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogdW5pdCAtPiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lfb3V0XCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXRcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQubl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfb3V0OiBtb25leTtcbiAgICBtZW5zdWFsaXRlX21pbmltYWxlX291dDogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0OiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfb3V0XCJdLFxuICBbKFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5tZW5zdWFsaXRlX2VsaWdpYmxlX291dCk7XG4gICAgKFwibWVuc3VhbGl0w6lfbWluaW1hbGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfbWluaW1hbGVfb3V0KTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXRcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXQpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0KTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgdHlwZV9wcmV0X2luOiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfaW46IE5ldWZPdUFuY2llbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInR5cGVfcHLDqnRfaW5cIiwgZW1iZWRfdHlwZV9wcmV0XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luKTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudF9pblwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dDogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0KTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW46IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW46IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0OiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQ6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpX291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luOiBib29sO1xuICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW46IGRhdGU7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudDtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW46IG1vbmV5O1xuICAgIGNvcHJvcHJpZXRlX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4pO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0X2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dDogZGVjaW1hbDtcbiAgICBlcXVpdmFsZW5jZV9sb3llcl9vdXQ6IG1vbmV5O1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19vdXQ6IG1vbmV5O1xuICAgIGxveWVyX21pbmltYWxfb3V0OiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dDogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llcl9vdXRcIl0sXG4gIFsoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9vdXQpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llcl9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX291dCk7XG4gICAgKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dCk7XG4gICAgKFwibG95ZXJfbWluaW1hbF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmxveWVyX21pbmltYWxfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZWRldmFuY2VfaW46IG1vbmV5O1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50X291dFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0KV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbjogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbildKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX291dmVydHVyZV9kcm9pdF9vdXQ6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZV9vdXRcIl0sXG4gIFsoXCLDomdlX291dmVydHVyZV9kcm9pdF9vdXRcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LmFnZV9vdXZlcnR1cmVfZHJvaXRfb3V0KV0pXG5cblxubW9kdWxlIE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfYXNzdXLDqV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbildKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnRPdXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnRfaW1wYXllX291dDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRfb3V0XCJdLFxuICBbKFwibW9udGFudF9pbXBhecOpX291dFwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50T3V0Lm1vbnRhbnRfaW1wYXllX291dCldKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIGFpZGVfdmVyc2VlX2luOiBWZXJzZW1lbnRBLnQ7XG4gICAgbW9udGFudF9hcGxfaW46IG1vbmV5O1xuICAgIG1vbnRhbnRfY2hhcmdlc19pbjogbW9uZXk7XG4gICAgZGVwZW5zZV9sb2dlbWVudF9pbjogRGVwZW5zZUxvZ2VtZW50LnQ7XG4gICAgbW9udGFudF9kZXR0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwiYWlkZV92ZXJzw6llX2luXCIsIGVtYmVkX3ZlcnNlbWVudF9hXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbik7XG4gICAgKFwibW9udGFudF9hcGxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luKTtcbiAgICAoXCJtb250YW50X2NoYXJnZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbik7XG4gICAgKFwiZMOpcGVuc2VfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGVwZW5zZV9sb2dlbWVudFxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbik7XG4gICAgKFwibW9udGFudF9kZXR0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBlbGlnaWJpbGl0ZV9vdXQ6IGJvb2w7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQ6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0OiBtb25leSAtPiBtb25leTtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dDogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudF9vdXRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpX291dFwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVfb3V0XCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0KV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW46IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImluZm9ybWF0aW9uc19jYWxjdWxfaW5cIiwgZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZU91dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGVfb3V0OiBib29sOyBhaWRlX2ZpbmFsZV9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfb3V0XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQuZWxpZ2liaWxpdGVfb3V0KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LmFpZGVfZmluYWxlX291dCldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbjogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJpbmZvcm1hdGlvbnNfY2FsY3VsX2luXCIsIGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9vdXQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfb3V0XCJdLFxuICBbKFwibW9udGFudF9vdXRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQubW9udGFudF9vdXQpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBTbWljT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmVfb3V0OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX3NtaWNfb3V0ICh4OiBTbWljT3V0LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX291dFwiXSxcbiAgWyhcImJydXRfaG9yYWlyZV9vdXRcIiwgZW1iZWRfbW9uZXkgeC5TbWljT3V0LmJydXRfaG9yYWlyZV9vdXQpXSlcblxuXG5tb2R1bGUgU21pY0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlOyByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50fVxuZW5kXG5sZXQgZW1iZWRfc21pY19pbiAoeDogU21pY0luLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGUgeC5TbWljSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnRfb3V0OiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0OiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMl9vdXQ6IGludGVnZXI7XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ICh4OiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19vdXRcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuZHJvaXRfb3V2ZXJ0X291dCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2Vfb3V0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuY29uZGl0aW9uc19ob3JzX2FnZV9vdXQpO1xuICAgIChcIsOiZ2VfbDUxMl8zXzJfb3V0XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmFnZV9sNTEyXzNfMl9vdXQpO1xuICAgIChcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQucmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbjogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50O1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5cblxubGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGV4b25lcmVfY3NnXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImV4b27DqXLDqV9jc2dcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTM2LTEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogRGUgbGEgY29udHJpYnV0aW9uIHNvY2lhbGUgc3VyIGxlcyByZXZlbnVzIGQnYWN0aXZpdMOpIGV0IHN1ciBsZXMgcmV2ZW51cyBkZSByZW1wbGFjZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDYgOiBDb250cmlidXRpb24gc29jaWFsZSBnw6luw6lyYWxpc8OpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfY3Jkc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJ0YXV4X2NyZHNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0zOTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX1cbiAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTgpICg5KSAoMSkpKSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHBhcmFtXyAqJCB0YXV4X2NyZHNfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU0OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKHRyeSBleG9uZXJlX2NzZ18gd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pIGluXG4gIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi50KSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNlwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yOTAzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYzMlwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfOiBUcmFuY2hlUmV2ZW51LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF90cmFuY2hlX3JldmVudSkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjE3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjE3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg2ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIFt8e1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKX07XG4gICAgICAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDc2MVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQyMzAzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI0XCIpfTtcbiAgICAgICAgICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQ3NjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDhcIil9O1xuICAgICAgICAgICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mjk4NVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKX07XG4gICAgICAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA5NTA1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzI4XCIpfXxdKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODI5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgW3x7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIikpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwNFwiKX07XG4gICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKSk7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMTZcIil9O1xuICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIikpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIik7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY0XCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpO1xuICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpfTtcbiAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKTtcbiAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40OFwiKX18XSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXzogVHJhbmNoZVJldmVudURlY2ltYWwudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjtcbiAgICAgIFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpw6llc1wiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjE4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTA3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX21vbmV5IHRyYW5jaGVfaGF1dF8pIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKSkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMgPVxuICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5iYXMpKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCA9ICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LnRhdXgpfSlcbiAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE1ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgICAgICAoKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGRlY2ltYWwpICh0cmFuY2hlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pIDw9JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0mIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHRyYW5jaGVfaGF1dF8gLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSArJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9tb25leSBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMjA7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgKCgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogZGVjaW1hbCkgKHRyYW5jaGVfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjY18gKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0mICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodHJhbmNoZV9oYXV0XyAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIComICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykgLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJiAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGVjaW1hbF9vZl9tb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSkgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpKVxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykgKyZcbiAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQubW9udGFudF9vdXQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA3Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3MjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5ODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSArJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQubl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQudCA9XG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzExXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMzMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZiAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVPdXQubl9ub21icmVfcGFydHNfZDgzMl8xMV9vdXQgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExX31cblxubGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW46IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV86IGRhdGUgPSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luLk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luIGluXG4gIGxldCBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiOyBcIsOiZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwxNjEtMTctMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYyKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX25haXNzYW5jZV9hc3N1cmVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTJcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoOSkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTNcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMikgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKHllYXJfb2ZfZGF0ZSBkYXRlX25haXNzYW5jZV9hc3N1cmVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTRcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKSArXlxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0X291dCA9IGFnZV9vdXZlcnR1cmVfZHJvaXRffVxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IEltcGF5ZURlcGVuc2VMb2dlbWVudE91dC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGFpZGVfdmVyc2VlXzogVmVyc2VtZW50QS50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfYXBsXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbiBpblxuICBsZXQgbW9udGFudF9jaGFyZ2VzXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4gaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfOiBEZXBlbnNlTG9nZW1lbnQudCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZGV0dGVfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJtb2RlX29jY3VwYXRpb25faW1wYXnDqVwiXVxuICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlXzogRGVwZW5zZUxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcImTDqXBlbnNlX2xvZ2VtZW50X2JydXRlXCJdXG4gICAgKGVtYmVkX2RlcGVuc2VfbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM3ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDUxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI5MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTG95ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250YW50X2xveWVyXyAtJCBtb250YW50X2FwbF8pKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzg3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF9lY2hlYW5jZXNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAodG90YWxfZWNoZWFuY2VzXyAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbnRhbnRfYXBsXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuc3VhbGl0ZV8gLSQgbW9udGFudF9hcGxfKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXykpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwic2V1aWxfaW1wYXnDqV9kw6lwZW5zZV9kZV9sb2dlbWVudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA0ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjY4OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjY4OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfbmV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX25ldF8gKyQgbW9udGFudF9jaGFyZ2VzXykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjUyOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI1MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl9icnV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb3llcl9icnV0XyArJCBtb250YW50X2NoYXJnZXNfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzYyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNjI7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWNoZWFuY2VfcHJldF9uZXR0ZV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpIC8mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX25ldHRlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzM0OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzM0OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGVjaGVhbmNlX3ByZXRfYnJ1dGVfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIikgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlX2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1lbnN1YWxpdGVfYnJ1dGVfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDg7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW1wYXllXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vbnRhbnRfaW1wYXnDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNTM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1MzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMxMDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9udGFudF9kZXR0ZV8gPj0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZGV0dGVfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjQ3OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbnRhbnRfZGV0dGVfID49JCBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNTM7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0ltcGF5ZURlcGVuc2VMb2dlbWVudE91dC5tb250YW50X2ltcGF5ZV9vdXQgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBubyBEU1MvU0QyQi8yMDIwLzMzIGR1IDE4IGbDqXZyaWVyIDIwMjAgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjAgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjEvNjUgZHUgMTkgbWFycyAyMDIxIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIxIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCA9IG1vbnRhbnRffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pY091dC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwM1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAxNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOS0xMzg3IGR1IDE4IGTDqWNlbWJyZSAyMDE5IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5OFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPSAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7IFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pKSkpIGluXG4gIHtTbWljT3V0LmJydXRfaG9yYWlyZV9vdXQgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGZyYWN0aW9uX2w4MzJfM186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJmcmFjdGlvbl9sODMyXzNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk3NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjA2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5tb250YW50X291dCBpblxuICBsZXQgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTkwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDAwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKSAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSEgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMlwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ5NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTI0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQzOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk0MzkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIwIGF1IDFlciBqYW52aWVyIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1NzIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4MzkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMlwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAxNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2MzEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4OTM4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTI0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkyNDYwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3JlZmVyZW5jZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfcsOpZsOpcmVuY2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Nzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIHR5cGVfYWlkZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MzU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzODQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxMzZcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA0NzNcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDIxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODM1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDgyMVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNzQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIwNDRcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjg7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAzNDVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDAzXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzIzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDcxN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4OTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjYxXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEzXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE4MjFcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MzQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MTVcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDYzMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4OTVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDk0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc0M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI0NlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1Nzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTM5MlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQ2MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4NzBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDcyM1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODc7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg3OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODc7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg3OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTgxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAocGxhZm9uZF9sb3llcl9kODIzXzE2XzJfICokIChkZWNpbWFsX29mX3N0cmluZyBcIjQuXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9kw6lncmVzc2l2aXTDqV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01ODA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy40XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gKiQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTczOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU3MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODgwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKGxveWVyX3ByaW5jaXBhbF8gPiQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXyBlbHNlIGxveWVyX3ByaW5jaXBhbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTI2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIChsb3llcl9wcmluY2lwYWxfID4kIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZiAobG95ZXJfcHJpbmNpcGFsXyA+JCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX3ByaW5jaXBhbF8gLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pIC8kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8gLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5OTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoKGxveWVyX2VsaWdpYmxlXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzOVwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKChsb3llcl9lbGlnaWJsZV8gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XykgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpID49JFxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChsb3llcl9lbGlnaWJsZV8gKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01ODk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9sb3llcnNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicmFwcG9ydF9sb3llcnNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyAvJCBsb3llcl9yZWZlcmVuY2VfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyAvJCBsb3llcl9yZWZlcmVuY2VfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkzNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MzY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAxZXIgb2N0b2JyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPEBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPCYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyYXBwb3J0X2xveWVyc18gPj0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPCZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpICsmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFwcG9ydF9sb3llcnNfIC0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIChyYXBwb3J0X2xveWVyc18gPCYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChyYXBwb3J0X2xveWVyc18gPj0mIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhcHBvcnRfbG95ZXJzXyA8JiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gLSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYXBwb3J0X2xveWVyc18gPj0mIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSkgKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhcHBvcnRfbG95ZXJzXyAtJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTUxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICgobW9uZXlfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjAxOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjAxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV8gKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgKHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV8gKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpIC8mXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAocmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfICokIGZyYWN0aW9uX2w4MzJfM18pKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgIChyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8gKiQgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjAyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAzMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMDMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV8gKyYgdGF1eF9sb3llcl9lbGlnaWJsZV9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU4NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTg0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYwMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MDM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjAwMzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV8gKyRcbiAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIC0kXG4gICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfKSAqJFxuICAgICAgICAgICAgICAgICB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoKGxveWVyX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pIC0kXG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXykgPCQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoKGxveWVyX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pIC0kXG4gICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU5NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgKHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTI5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTkyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTI5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTkyOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgoZnJhY3Rpb25fbDgzMl8zXyA+PSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoZnJhY3Rpb25fbDgzMl8zXyA8PSYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgzMzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzMzsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzM7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzM7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfb3V0ID1cbiAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgPVxuICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV9vdXQgPVxuICAgICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXQgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3OTY7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIxNzI2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzcxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NTI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzgyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSkgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU4OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NzQ7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICB7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MTc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIzMjFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU3ODhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTcwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzNjM1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjg2MzdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzExOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA4MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc2MzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA3ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDM2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3OTI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE3MjdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjQzNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDUwNTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc4MDJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDk1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTEwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc2NTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGzDqWdpc2xhdGl2ZXMgZXQgcsOpZ2xlbWVudGFpcmVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ0NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIxMDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU1NTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTQ1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzY5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjgzNTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzA4OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc0MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA1NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDEzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3Njg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE0NjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjQwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ4NjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc2MDJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc0NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzODg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc0MTZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Njg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg0ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKHBhcmFtXyAtJCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2ODsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Njg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMDg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMDQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU1OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDA2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjkxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY2OFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjUxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1MTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODA2OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE0MjA5MVwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzM5MzQwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIsOpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKHJlZGV2YW5jZV8gPj0kIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ0OyBzdGFydF9jb2x1bW49MTk7IGVuZF9saW5lPTY0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTE5OyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDQ7IHN0YXJ0X2NvbHVtbj0xOTsgZW5kX2xpbmU9NjQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMDY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjA2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIC0kIHBhcmFtXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjQ5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTY1NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4Mzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzODsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY1Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTY1NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgzNjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjU2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NjU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODQwOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NjI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMjI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIikgLSZcbiAgICAgICAgICAgICAgICAgICAgICAocmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyAvJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSAtJlxuICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gLSRcbiAgICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9yX2Q4MzJfMjVfICokIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkgLyRcbiAgICAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfICokXG4gICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjI7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjEwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN18pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDw9JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN18pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3XyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY0NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjUzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODM0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzOTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV8gLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChkZWNpbWFsX3JvdW5kXG4gICAgICAgICAgICAgICAoKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfIC0mXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpIComIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjYzOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2OTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg2Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4NjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02Njk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Njk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjY0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjY0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Fycm9uZGlfID49JlxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfYXJyb25kaV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk1ODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9hcnJvbmRpXyA+PSZcbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NjQ7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NzA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjcwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NzA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjcwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY2NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgwMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICgoKGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXyAtJCBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pIDwkXG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgKChlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gLSQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY3MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfb3V0ID1cbiAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0ID1cbiAgICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQubl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfb3V0ID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCA9XG4gICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCB0eXBlX3ByZXRfOiBUeXBlUHJldC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gaW5cbiAgbGV0IGFuY2llbm5ldGVfbG9nZW1lbnRfOiBOZXVmT3VBbmNpZW4udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTc4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTg5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjM7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1OTg7IHN0YXJ0X2NvbHVtbj0xNTsgZW5kX2xpbmU9MjU5ODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTExMzNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzIzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjkwOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MTM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwODVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfdHJhbmNoZV9pbmbDqXJpZXVyZV9kODMyXzE1XzFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MTQ7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfc3Vww6lyaWV1cmVfZDgzMl8xNV8xXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjYxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjE1OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIikgLyYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzMwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzMwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM1NDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC5uX25vbWJyZV9wYXJ0c19kODMyXzExX291dCBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjcyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA8PUBcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoMTApICgxKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTcyXCIpXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfc2lnbmF0dXJlX3ByZXRfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc0NDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY0Njsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjQ2OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQ7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY0OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGF0ZV9jb3VyYW50ZV8gPEBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSkgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY3OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDFlciBvY3RvYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgbMOpZ2lzbGF0aXZlcyBldCByw6lnbGVtZW50YWlyZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA8QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyAtJCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfKSA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChwYXJhbV8gLSQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXykgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTczODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03Mzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTczODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03Mzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfZDgzMl8xOFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY1MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gPD0kXG4gICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfICokXG4gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfKSkgdGhlblxuICAgICAgICAgICAgICAobWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAqJCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XylcbiAgICAgICAgICAgICAgZWxzZSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjE4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQyODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02Njg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMDYwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTU1MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzEwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIwMDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDAwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE0MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3ODcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDkzMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTg5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1ODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDYwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjE4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQyODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3MjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MTgwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDI4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkwMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPiBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NzEwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA3MzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkyNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDg4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYwMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMwODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTk1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNTUwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDAyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTkzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1ODAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPD1AIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MTQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODI3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3ODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxNDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMzEwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDw9QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3NzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcyOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjIwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTMwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM0MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODc3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDQzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg2MTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxODAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3NTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NDMwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMjMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzU5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM2MTVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzcyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3NjhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU3MThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU5NjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTIyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzA0MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA0NzAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NzAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzU3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYyODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTkwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNDI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTEyNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxMzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjE1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY2NzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTIwN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ4MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODk0OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTI0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzN1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY0NDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1NTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTIzM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2NzdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjM5M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODNcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMzMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTE0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAzNDdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU0N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTU4MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1ODJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDkzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUxMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTI5N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxODFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM3NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTYxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDY2NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1MjVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTcwNFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE1ODRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgyOVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3MTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTk3M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNjJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMjNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTk2MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MzdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk0OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTQ2OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY2NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQxOFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4NDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjgxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIxNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzQ5MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzMzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYyMVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc4MTRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjUzNFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3MjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTU2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4NzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg4MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMDdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMwMjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY3NDJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2ODI4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTM4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE1NTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MDEyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NDFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDg4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjEzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NjQ2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTUwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDg1MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDI2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQyOFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEwMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0ODAzMlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjcwMTZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjY5N1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYxNzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODMyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTYwNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY4NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2ODVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjU5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MzgyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzNjhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4ODJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTUwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDQ5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzIyM1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzOTU3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjM2MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNzczXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTgwNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODE3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyNlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4MjZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTExNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM4MlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxMzNcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzQ1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgxMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjgyM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2ODRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxMTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzYxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk2MDdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MjQ2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQwOThcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzgwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA5MDNcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDEwOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTUzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTg0NVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MTk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NDk1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE0OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODIyOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTI4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY5OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDE1M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjczMjZcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxMzFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDU4M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY0NTBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU0NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTM1M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU4ODhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg1NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NDg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTA5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNjgwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU4ODVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyOTBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzUxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5OTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1ODU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzI1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNjU1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzM5OVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDI5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjUxNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5ODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTgxOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzY3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODg2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4MjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc5NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTcyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI0NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNThcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg4MjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3OTlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjEyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTE3NDRcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTU4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU5OTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NjU1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NjVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MDc1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NDgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNjczXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjA5NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY1M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MDIzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTQ0NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzQ2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkwMlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjEwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDM5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYwMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTU2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MjU5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjY5M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNjg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjc5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTA4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjExMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxOTExXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjEzMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjM0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQwMlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTQyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkzMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI5Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjk5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMDgxXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYwN1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2Mjk2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjY5OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTQyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjExNVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5Njc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTgxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxOTQ1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjEzNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjY0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQwNlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTcwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkzNFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzg4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNDcyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2NFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTg5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2NjQzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjc0OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzEwM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMjY0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE2MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQyOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDMyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5ODk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjA3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjYwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE4MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA5N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTQzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQ0N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0ODg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODI5XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk3MVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ5NDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjYyOVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2ODdcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwMTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0Njc4M1wiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY3NjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTAzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzM5NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYxNzlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjUxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIzODZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MjAxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2NTZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDYzXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ5NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MzRcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTg2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzUwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzE1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNikgKDMwKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKSAtJCBwYXJhbV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjEwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAtJCBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQzNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQxNzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTU7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTQ7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTczMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTczMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM1NTc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgIHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC5tb250YW50X291dCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzEyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI2NTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpIC0mXG4gICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIC8kXG4gICAgICAgICAgICAgICAgIChjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXyAqJFxuICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzEyOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcxNjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MjE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjIxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDw9JFxuICAgICAgICAgICAgICAgICAgICAgIChyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykgLSRcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MTY7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19jb3Byb3ByacOpdGFpcmVzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA4OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDg7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMWVyIG9jdG9icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBsw6lnaXNsYXRpdmVzIGV0IHLDqWdsZW1lbnRhaXJlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXyAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjI3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ5Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUwODsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vbmV5X29mX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgICAgICAoKCggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKChkZWNpbWFsX29mX21vbmV5IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXykgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgKyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfbW9uZXkgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXykgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGVjaW1hbF9vZl9tb25leSByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJiB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGRlY2ltYWxfb2ZfbW9uZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKSAqJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pIComXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV8pKSkgLyZcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NDk7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxMzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKGRlY2ltYWxfcm91bmRcbiAgICAgICAgICAgICAgICgoY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV8gLSZcbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSkgKiYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgIC8mIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTM7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjA4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTY5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAobWVuc3VhbGl0ZV9wcmluY2lwYWxlXyA+JFxuICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18pIHRoZW5cbiAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfIGVsc2VcbiAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4NDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Fycm9uZGlfID49JlxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxNDsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIyNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSkgKyQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzM2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE0OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKCgoKG1lbnN1YWxpdGVfZWxpZ2libGVfICskXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXykgLSRcbiAgICAgICAgICAgICAgICAgICBtZW5zdWFsaXRlX21pbmltYWxlXykgKiRcbiAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXykgPCRcbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAoKChtZW5zdWFsaXRlX2VsaWdpYmxlXyArJCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAtJCBtZW5zdWFsaXRlX21pbmltYWxlXykgKiRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTczNjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjUwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSA8JFxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NDE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NDE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfZWxpZ2libGVfb3V0ID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQubWVuc3VhbGl0ZV9taW5pbWFsZV9vdXQgPVxuICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsX291dCA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbjogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT4gYm9vbCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9wcmV0XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX3Byw6p0XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcGV1cGxlbWVudF9sb2dlbWVudF9sODIyXzEwXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpw6l0w6lcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdSBiw6luw6lmaWNpYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjFcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzODsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdFwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzOTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl81X3BhdHJpbW9pbmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzVfcGF0cmltb2luZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNDA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IFByaXNlIGVuIGNvbXB0ZSBkdSBwYXRyaW1vaW5lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMDAwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInVzdWZydWl0X291X3Byb3ByacOpdMOpX2ZhbWlsbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPiBmYWxzZSkgfHxcbiAgICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnVzdWZydWl0KVxuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudF86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudFwiXVxuICAgIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMzNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgKChtYXRjaCAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIilcbiAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpXG4gICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIilcbiAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgKyFcbiAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpICshXG4gICAgICAgICAgICAgIChhcnJheV9sZW5ndGggKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl85X2RlY2VuY2VfbG9nZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjU7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1ODsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1ODsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnLDqXNcIl1cbiAgICAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjE7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0NTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIikpICshXG4gICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KSArIVxuICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aCAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpICohXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjlcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjMwXCIpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVNvdXNMb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMTg7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTg7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxODsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MzQ2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXy5EZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICB7T3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV99KSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVPdXQuYWdlX291dmVydHVyZV9kcm9pdF9vdXQgaW5cbiAgbGV0IHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzM1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNClcbiAgICAgICAgICAgICAgKyRcbiAgICAgICAgICAgICAgKChkZW1hbmRldXJfLkRlbWFuZGV1ci5wYXRyaW1vaW5lKS5QYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzU7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX25hdGlvbmFsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbmF0aW9uYWxpdMOpXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChkZW1hbmRldXJfLkRlbWFuZGV1ci5uYXRpb25hbGl0ZSlcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRnJhbmNhaXNlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBOYXRpb25hbGl0ZS5FdHJhbmdlcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5zYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zw6ljdVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDQpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDxAIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDQxODQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4Mzg0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIyLTMgZHUgMTEvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIyXFxcIlwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwMDE0NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE5OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE5OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSA8JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnVzdWZydWl0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSA8JlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzIzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2NDsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0hIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA+PSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI4XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zdXJmYWNlX21fY2FycmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCI3MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zdXJmYWNlX21fY2FycmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbmltYWxlX3NhbnNfc2V1aWxfbV9jYXJyZXNfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNDM7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg1OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjY7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2ODsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1cl8gPj0kIHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OTsgc3RhcnRfY29sdW1uPTMzOyBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1cl8gPiQgc2V1aWxfbDgyMl81X3BhdHJpbW9pbmVfKVxuICAgICAgICAgICAgICB0aGVuIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyXyBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQ7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzhfIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc18gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wzNTFfOF8xX3NlY3VfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDomdlX2wzNTFfOF8xX3PDqWN1XCJdXG4gICAgKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM0MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwzNTEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNSA6IFRhdXggZXQgbW9udGFudCBkZSBsYSBwZW5zaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0LCBsaXF1aWRhdGlvbiBldCBjYWxjdWwgZGVzIHBlbnNpb25zIGRlIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgViA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlIC0gQXNzdXJhbmNlIHZldXZhZ2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJSUkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBhc3N1cmFuY2VzIHNvY2lhbGVzIGV0IMOgIGRpdmVyc2VzIGNhdMOpZ29yaWVzIGRlIHBlcnNvbm5lcyByYXR0YWNow6llcyBhdSByw6lnaW1lIGfDqW7DqXJhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFnZV9sMTYxXzE3XzJfc2VjdV8gK14gKGR1cmF0aW9uX29mX251bWJlcnMgKDUpICgwKSAoMCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzQyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0NzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbmF0aW9uYWxpdGVfICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9sb2dlbWVudF8pKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzQ3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQZXJzb25uZUFDaGFyZ2UudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE4OTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBhcmFtX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUGFyZW50ZS5Bc2NlbmRhbnQgKCkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS4yNVwiKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArQCBhZ2VfbDM1MV84XzFfc2VjdV8pIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UudGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg2NSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD1AIGRhdGVfY291cmFudGVfKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK0AgYWdlX2wxNjFfMTdfMl9zZWN1XykgPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zNTE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGFyYW1fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICokIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdIGNvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwYXJhbV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFnZSkgPD0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJwZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzODsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMzE7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zNDk7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzYzOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgY29lZmZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmXylcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgIChhcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0OTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNjE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM0ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfIDwmXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfIDwmXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODE7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmRhdGVfY291cmFudGVfb3V0ID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0ID1cbiAgICAgICBjb25kaXRpb25fMl9yODIzXzRffVxuXG5sZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbjogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfZGVtYW5kZXVyXzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbiBpblxuICBsZXQgcmVzc291cmNlc19jb25qb2ludF86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19jb25qb2ludF9pbiBpblxuICBsZXQgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luIGluXG4gIGxldCBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gaW5cbiAgbGV0IHBlcnNvbm5lc19hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luIGluXG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzXzogYm9vbCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luIGluXG4gIGxldCBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfOiBkYXRlID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luIGluXG4gIGxldCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXzogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19zZXVpbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTI0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyMjsgc3RhcnRfY29sdW1uPTQ2OyBlbmRfbGluZT01MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSBmYWxzZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTI0OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgYXBwbGljYWJsZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1ODkwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgYXBwbGljYWJsZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUzMjsgc3RhcnRfY29sdW1uPTUxOyBlbmRfbGluZT01MzI7IGVuZF9jb2x1bW49NTc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSBmYWxzZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI5OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGFjY186IG1vbmV5KSAocGVyc29ubmVfOiBfKSAtPlxuICAgICAgICAgICAgICAgICBhY2NfICskXG4gICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKSlcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzEwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKSA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIDw9IVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKSA9IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgoYXJyYXlfbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIDw9IVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUzMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzQ7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT01MzQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAge0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzhfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzhcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5PdWlBdmVjTG95ZXJPdUNoYXJnZXMgbG95ZXJfb3VfY2hhcmdlc18gLT5cbiAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzhfXG4gICAgICAgICAgICB8IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUyNzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUzNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzNzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzNzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1NDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAzIDogTW9udGFudCBmb3JmYWl0YWlyZSBkZSByZXNzb3VyY2VzIGFwcGxpY2FibGUgYXV4IMOpdHVkaWFudHNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAocmVzc291cmNlc19kZW1hbmRldXJfICskIHJlc3NvdXJjZXNfY29uam9pbnRfKSArJFxuICAgICAgICAgICAgICByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Mzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV8gJiZcbiAgICAgICAgICAgICAgICAgKGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfICYmXG4gICAgICAgICAgICAgICAgICAgICgocmVzc291cmNlc19jb25qb2ludF8gKyQgcmVzc291cmNlc19jb25qb2ludF8pID49JFxuICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSB0aGVuXG4gICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN18gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwZXJzb25uZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcykpXG4gICAgICAgICAgICAgICAgICAgICAgIHRydWUgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbjogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiMjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5yw6lzaWRlbmNlXCJdXG4gICAgICAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj03O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICB7U21pY0luLmRhdGVfY291cmFudGVfaW4gPSBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBTbWljSW4ucmVzaWRlbmNlX2luID0gc21pY19kb3RfcmVzaWRlbmNlX30pKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWNPdXQuYnJ1dF9ob3JhaXJlX291dCBpblxuICBsZXQgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInLDqWdpbWVfb3V0cmVfbWVyX2w3NTFfMVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChcbiAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzUxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgocmVzaWRlbmNlXyA9IChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXNpZGVuY2VfID0gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlc2lkZW5jZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzaWRlbmNlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKCkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sNTEyXzNfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyOyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjc1NS0wLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAoc21pY19kb3RfYnJ1dF9ob3JhaXJlXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoc21pY19kb3RfYnJ1dF9ob3JhaXJlXyAqJCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTg1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXykpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHBhcmFtXy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9JCBwbGFmb25kX2w1MTJfM18yXykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEgYWdlX2w1MTJfM18yXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT00MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuZHJvaXRfb3V2ZXJ0X291dCA9IGRyb2l0X291dmVydF87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0ID1cbiAgICAgICBjb25kaXRpb25zX2hvcnNfYWdlXztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQuYWdlX2w1MTJfM18yX291dCA9IGFnZV9sNTEyXzNfMl87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb3llcl9wcmluY2lwYWxcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI3ODsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxveWVyX3ByaW5jaXBhbF8gKiRcbiAgICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikgLyYgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbG95ZXJfcHJpbmNpcGFsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMDsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTYwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgyMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODMxOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2NjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi7DomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM0OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODM1OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Njc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04MDk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgzODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gdHlwZV9haWRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Njk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY5OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuY29sb2NhdGlvblwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODA5OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NDA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNvbG9jYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTgwOTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODQyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVffSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxMzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDY7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG95ZXJfcHJpbmNpcGFsXyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gcGFyYW1fKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgxMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgxMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMzg7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzM4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobG95ZXJfcHJpbmNpcGFsXyA+PSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbCkpXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChsb3llcl9wcmluY2lwYWxfIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODQ2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl86IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk2MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI3ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2TDqXBlbnNlX25ldHRlX2Q4NDJfMTdcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTYyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk2MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mzc5OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njg7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njg7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODk1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjI2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2ODsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyT3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICB7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODU7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb2RlX29jY3VwYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4OTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTkxOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnpvbmVcIl1cbiAgICAgIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05OTU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM2OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05OTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4NzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlZGV2YW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODYyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NjI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyNjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgZWxzZVxuICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgKyRcbiAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpICokXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjU7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMDc7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMDc7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQxNFwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMTAwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM0Mjsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM0MzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDY0MFwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDczXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjA7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyNDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMyNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzAxMlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTc4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5MTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTExOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKChwYXJhbV8gLSQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XykgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTc4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Mzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTk3MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODkxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT05NzM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODY1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUwMjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAoZXF1aXZhbGVuY2VfbG95ZXJfICskIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIC0kXG4gICAgICAgICAgICAgICAgICAgcGFyYW1fKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJsb3llcl9taW5pbWFsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTAzOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUwMzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDM0OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkgPCQgbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN18pXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NzY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgoZXF1aXZhbGVuY2VfbG95ZXJfICskIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIC0kXG4gICAgICAgICAgICAgICBsb3llcl9taW5pbWFsXykgKiQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3NjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkyNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5MjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk0NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpID4kIHJlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgdGhlbiByZWRldmFuY2VfIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODA7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk1OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgLSQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpICskICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpID49JFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAoKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgLSRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSkgKyQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTgyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkgPCRcbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk4MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05ODI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0ID1cbiAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuZXF1aXZhbGVuY2VfbG95ZXJfb3V0ID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19vdXQgPVxuICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc187XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmxveWVyX21pbmltYWxfb3V0ID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF86IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gaW5cbiAgbGV0IGNvcHJvcHJpZXRlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTU2OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Nzk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODgyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIHByZW1pZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSw6hnbGVtZW50IChDRSkgbsKwMjg2Ni85OCBkdSBjb25zZWlsIGR1IDMxIGTDqWNlbWJyZSAxOTk4IGNvbmNlcm5hbnQgbGVzIHRhdXggZGUgY29udmVyc2lvbiBlbnRyZSBsJ2V1cm8gZXQgbGVzIG1vbm5haWVzIGRlcyDDiXRhdHMgbWVtYnJlcyBhZG9wdGFudCBsJ2V1cm9cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSAvJiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTY2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjQzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjM2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODg5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDUwMzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTA1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC5uX25vbWJyZV9wYXJ0c19kODMyXzExX291dCBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk0MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQubW9udGFudF9vdXQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxOTg7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAmJiBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKSArJFxuICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXIgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWYgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID0gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSArJFxuICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlciBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODcyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTEzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XykgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAocGFyYW1fIC0kIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwMjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTAyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzEyNDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTEzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk4MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwNjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxODcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NjAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTcwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTYwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDc4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDAwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTEwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqJCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMTY7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ2MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NTYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDM1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTYwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzNDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg3MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICokIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI2MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI5MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODIwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODk1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE5OTAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTY5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM1MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3MTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqJCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDM3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDMwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjg4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIyMzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICokIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQwMDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDYyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0MDBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5OTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODYyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA5NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MDAwXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NTdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjYyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDdcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTczXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ5MTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNykgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzOTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxODEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyMDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MTYwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcxMTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Mzg4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3MzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYzNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzUwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTExOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIzMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ3MTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDcpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE5NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODM2MVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNDFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgxNVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMDFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MDcyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI3NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0OTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEzMFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNDVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTgzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNTFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NzhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjU5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzYyODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjkxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjM2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzMTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAxNDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMDY1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1NDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDg2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU5NzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg1MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMwMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTA2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA0MjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNjgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk1NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyMTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY3MzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NzM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYyMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzNDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI1MlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MjAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTU5MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NDJcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODY3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjU1NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Nzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzc3OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNzVcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI0NjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjk4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3NThcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc2MzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk2NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzU3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5NTE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDYwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE3MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2MDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzM5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA4ODhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ0MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIyODlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk3N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYzMTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwMTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODA4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE0OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODY4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTk1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEwNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzA3NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTFcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjEzMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzczNzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTMzOFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0Njg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTk0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk5M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzNjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTQ0NVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg1Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODUzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM1MDVcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzg5XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE3NTFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjMwXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg5ODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwOTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTIyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIzODFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzNTE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MDMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5ODI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTA3MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0ODRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3ODc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNjk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwYXJhbV8gPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbV8gPEAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5MlwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyODkyXCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyOVwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTI4XCIpICskXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OFwiKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Nzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5ODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA8QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTE0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyNjU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzgwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDcyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ3MjlcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODk1XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDA4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5MjZcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzMyXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTYzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEwOTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyOTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzIxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODEyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5NjFcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Nzc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAzMzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9jb3VyYW50ZV8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyYW1fID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1fIDxAIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMzgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzgyMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTgwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0MTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc1MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTM2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzgwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkxMDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTMyNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MTUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjY4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSArJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIikgKiRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRlX2NvdXJhbnRlXyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtXyA+PUAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM2XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMzNzhcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzcxXCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzOTJcIikgKyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTg4XCIpICokXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4MTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4MTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc1Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2MjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICgoKGRhdGVfc2lnbmF0dXJlX3ByZXRfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICgoZGF0ZV9zaWduYXR1cmVfcHJldF8gPj1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyAqJCBjb2VmZmljaWVudF9kODQyXzEyXykpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3NzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3NzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKChkYXRlX3NpZ25hdHVyZV9wcmV0XyA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSAoZnVuIChfOiBfKSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Nzsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2OTc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgIChjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF8gKyQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAtJCBwYXJhbV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3ODsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTc4OyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTc4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgcGFyYW1fKSkpKSkpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMjI7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBwYXJhbV8pKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg3ODsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19zZXVpbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3OTU7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzg1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3ODU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXyA8PSRcbiAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV8pIHRoZW5cbiAgICAgICAgICAgICAgKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgKChzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlXyArJFxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTk5XCIpKSAqJFxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkpICokXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY1MDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgPCQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2MzI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ5OTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ5ODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0Lm1vbnRhbnRfb3V0IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXJcbiAgICAgICAgICAgICAge0xvZ2VtZW50Rm95ZXIudHlwZV91c2VyID1cbiAgICAgICAgICAgICAgICAgKFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKCkpO1xuICAgICAgICAgICAgICAgICBMb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudCA9XG4gICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSk7XG4gICAgICAgICAgICAgICAgIExvZ2VtZW50Rm95ZXIubG9jYXRpb24gPVxuICAgICAgICAgICAgICAgICAgIHtMb2NhdGlvbi5iYWlsbGV1ciA9XG4gICAgICAgICAgICAgICAgICAgICAge0JhaWxsZXVyLnR5cGVfYmFpbGxldXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfViA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9JSSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWV9fTtcbiAgICAgICAgICAgICAgICAgTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICBMb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkgPSBmYWxzZX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzMTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzM7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MzM7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTM1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM2OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkzOTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM3OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkyOTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDU4OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ2NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsX291dCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwic2V1aWxfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MzE7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MzQ7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKCgobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiB0cnVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfc2lnbmF0dXJlX3ByZXRfID49QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXyAqJFxuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTFfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODgwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Nzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ3OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgIGlmIChtZW5zdWFsaXRlX3ByaW5jaXBhbGVfID4kIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfIGVsc2UgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODczOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDk0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ2ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzA4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSA8JCBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlXyAtJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg4NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0Mzk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICgobWVuc3VhbGl0ZV9lbGlnaWJsZV8gKyQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgLSRcbiAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKSAqJCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Mjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTI3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPCRcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTQ2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU0NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAoKChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKCgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9tb25leSkgcGFyYW1fKSkpKSkpKSkpKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSkpKSkpKSkgPj0kXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoKG1vbmV5X3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICgoKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIC0kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSAtJFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKSArJCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwNDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTY5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpIDwkXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9jYWxjdWxfYXBsXzogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzYyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzYyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTY7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIwNDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfICskIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBcIjQ5OTlcIikpICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzYzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kubWVuc3VhbGl0w6lfcHJpbmNpcGFsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTM3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICBcIjBcIilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NzY7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4MjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ5NDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnR5cGVfdHJhdmF1eF9sb2dlbWVudFwiXVxuICAgICAgKGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU0MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9zaWduYXR1cmVfcHLDqnRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTQ4OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmRhdGVfc2lnbmF0dXJlX3ByZXQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5sb2NhbF9oYWJpdMOpX3ByZW1pw6hyZV9mb2lzX2LDqW7DqWZpY2lhaXJlXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NTM7IGVuZF9jb2x1bW49NzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfZW50csOpZV9sb2dlbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1NTk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY29wcm9wcmlldGVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmNvcHJvcHJpw6l0w6lcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTY0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuY29wcm9wcmlldGUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU2OTsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDg2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV9wcmV0XzogVHlwZVByZXQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS50eXBlX3Byw6p0XCJdIChlbWJlZF90eXBlX3ByZXQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY3OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY3OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTc0OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IChUeXBlUHJldC5EMzMxXzMyICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZVByZXQuRDMzMV8zMiAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9hbmNpZW5uZXRlX2xvZ2VtZW50XzogTmV1Zk91QW5jaWVuLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuYW5jaWVubmV0w6lfbG9nZW1lbnRcIl0gKGVtYmVkX25ldWZfb3VfYW5jaWVuKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Nzsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU4MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAoTmV1Zk91QW5jaWVuLk5ldWYgKCkpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChOZXVmT3VBbmNpZW4uTmV1ZiAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLmFuY2llbm5ldGVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MDE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Njc7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03Njc7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODk7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqVwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9tZW5zdWFsaXRlX3ByaW5jaXBhbGVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfc2lnbmF0dXJlX3ByZXRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9lbnRyZWVfbG9nZW1lbnRfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9jb3Byb3ByaWV0ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3NpdHVhdGlvbl9yODIyXzExXzEzXzE3XztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3R5cGVfcHJldF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYW5jaWVubmV0ZV9sb2dlbWVudF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X21lbnN1YWxpdGVfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC5tZW5zdWFsaXRlX2VsaWdpYmxlX291dCBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0Lm1lbnN1YWxpdGVfbWluaW1hbGVfb3V0IGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0IGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyLm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbW9kZV9vY2N1cGF0aW9uXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjMyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9nZW1lbnRfZm95ZXIucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDc0OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjMzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4MDsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9nZW1lbnRfZm95ZXIuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02MzY7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjY7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjM3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTYzNzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2Njsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU4NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM4OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvcikpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyT3V0LmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb3llcl9wcmluY2lwYWxcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ3MzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLmLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTA0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2MDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ4NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcImxvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDc4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9jYXRpZi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0OTA7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnpvbmVcIl1cbiAgICAgIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT03NjU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0ODQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTEwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG9nZW1lbnRfZXN0X2NoYW1icmUpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xNTIzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Njc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTY3OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTMwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHR5cGVfYWlkZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU2OTsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfY29sb2NhdGlvbl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNvbG9jYXRpb25cIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NzY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTE2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYuY29sb2NhdGlvbilcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzA7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTc2NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUzMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4gPVxuICAgICAgIGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPSBsb2NhdGlmX2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF90eXBlX2FpZGVfO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9jb2xvY2F0aW9uXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX30pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQucGFydGljaXBhdGlvbl9taW5pbWFsZV9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3RhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmT3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0IGluXG4gIGxldCBsb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAgICAgbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF8pXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc3MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NzE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzcxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzcwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc3MDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIGxvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc3MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NzA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSBlbHNlIHRydWUpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Njk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDcxOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gdHJ1ZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIGVsc2UgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2NzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Njc7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgZWxzZSB0cnVlKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDYxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYzOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRPdXQudCA9XG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE0ODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMjc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMzI7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKCgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogaW50ZWdlcikgKHBlcnNvbm5lX2FfY2hhcmdlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSBlbHNlIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXykgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSArIVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgID49ISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDgzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00OTA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00OTA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc091dC5tb250YW50X291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzExOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDg5OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTMxMjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEzOyBzdGFydF9jb2x1bW49MTc7IGVuZF9saW5lPTMxMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgIChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FwbC5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbCkgKHJhaXNlXG4gICAgICBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb25kaXRpb25fMl9yODIzXzRfb3V0IGluXG4gIGxldCBjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fcMOpcmlvZGVfZMOpbcOpbmFnZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEzNjsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE0NDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9jb3VyYW50ZV8gPD1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpcnN0X2RheV9vZl9tb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX25haXNzYW5jZV8gK0BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK0AgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00ODQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzOTQ7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi40XCIpKSArJFxuICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICgoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKSAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18pIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSA+IVxuICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XyAqJFxuICAgICAgICAgICAgICAgICAgICAoKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKSAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY2NfICshIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKSAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpIC0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkgKiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00ODc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9yYW5nX2VuZmFudF8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfIC1AXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pIDw9XlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM184XzJfKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ4NTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE3NDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAoZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzXyA8PSQgcGxhZm9uZF9kODIzXzIyXylcbiAgICAgICAgICAgICAgdGhlbiBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2VcbiAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50T3V0Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X291dCA9XG4gICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X31cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzFfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IFByZXQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwODg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCAocGFyYW1fLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaCAocGFyYW1fLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwYXJhbV8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoIChwYXJhbV8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHBhcmFtXy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pIChmdW4gKF86IF8pIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocGFyYW1fOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl9sb2dlbWVudF9wcsOqdFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PUBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQyOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj1AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49QCAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MzM7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM5MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDU7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTM5NTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTE3OyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29uZGl0aW9uXzJfcjgyM180X291dCBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5hY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1YpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogXykgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTU7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLmNvbnN0cnVpdF9hbWVsaW9yZV9jb25kaXRpb25zX2w4MzFfMV80KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfVilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpLkJhaWxsZXVyLnJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfSUkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5jb25zdHJ1aXRfYW1lbGlvcmVfY29uZGl0aW9uc19sODMxXzFfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX1YpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIudHlwZV9iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cikuQmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKS5CYWlsbGV1ci5yZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc1ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzYzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk5OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM5ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk4OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM5NzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0XyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzk3OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0zOTc7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF86IGJvb2wgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4gaW5cbiAgbGV0IGR1cmVlX2w4NDFfMV8zXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiZHVyw6llX2w4NDFfMV8zXCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjQxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDUpICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzNTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZXN0YXRpb25fY291cmFudGVfOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJlc3RhdGlvbl9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MzU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT00MzU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ4OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgIHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC5kcm9pdF9vdXZlcnRfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LmNvbmRpdGlvbnNfaG9yc19hZ2Vfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc091dC5hZ2VfbDUxMl8zXzJfb3V0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEzOyBzdGFydF9jb2x1bW49MTc7IGVuZF9saW5lPTMxMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mjg7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4Mjg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZmFsc2UpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM2OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mjk7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4Mjk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTQzNjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5kYXRlX2NvdXJhbnRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQuY29uZGl0aW9uXzJfcjgyM180X291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9zb2NpYWxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50X3NvY2lhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTM2OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIucGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbG9nZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MjY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDA2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM4OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0NDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2OTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0NDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXVuZXNfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2Rpc3Bvc2l0aW9uc19jb21tdW5lc1wiXVxuICAgIChlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ0MDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXykgdGhlblxuICAgICAgICAgICAgICAoRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTk1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5hc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc5OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjY18gKyFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBpbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIGVsc2UgYWNjXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIGRhdGVfbWFyaWFnZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfY291cmFudGVfIDw9QFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9tYXJpYWdlXyArQFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJlZV9sODQxXzFfM18pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MjY7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7RW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpfSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjXyArISAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXykgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKSAocHJlc3RhdGlvbl86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjY18gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZXN0YXRpb25fID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVzdGF0aW9uXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJlc3RhdGlvbl8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVzdGF0aW9uXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbDg0MV8yXCJdXG4gICAgKGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQxOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5AIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKChlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXVuZXNfID1cbiAgICAgICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpIHx8XG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXyB0aGVuXG4gICAgICAgICAgICAgICAgIChFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3NvY2lhbGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQxOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDQyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDYyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGNvbmRpdGlvbl9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgKEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSBlbHNlXG4gICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2w4NDFfMl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00NDI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF9vdXQgPVxuICAgICBlbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODcxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIChtb25leV9yb3VuZFxuICAgICAgICAgICAgICAgKChyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfICskIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBcIjQ5OTlcIikpICokIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKSAqJFxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDEwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMTA7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODU4OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NTk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2ODE7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MTM7IGVuZF9jb2x1bW49NTc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmRhdGVfc2lnbmF0dXJlX3Byw6p0XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2OTI7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9zaWduYXR1cmVfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLnR5cGVfdHJhdmF1eF9sb2dlbWVudFwiXVxuICAgICAgKGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY4NjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2xvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2OTc7IGVuZF9jb2x1bW49NzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2RhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJhY2Nlc3Npb25fcHJvcHJpw6l0w6kuZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MDM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMSkgKDEpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpLmNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTcxODsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTEFjY2Vzc2lvblByb3ByaWV0ZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY29wcm9wcmlldGVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqS5jb3Byb3ByacOpdMOpXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMjsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzA4OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUuY29wcm9wcmlldGUpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImFjY2Vzc2lvbl9wcm9wcmnDqXTDqVwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWNjZXNzaW9uX3Byb3ByacOpdMOpXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbWVuc3VhbGl0ZV9wcmluY2lwYWxlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9zaXR1YXRpb25fcjgyMl8xMV8xM18xN187XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX3NpZ25hdHVyZV9wcmV0XztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfdHlwZV90cmF2YXV4X2xvZ2VtZW50XztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICBhY2Nlc3Npb25fcHJvcHJpZXRlX2RvdF9kYXRlX2VudHJlZV9sb2dlbWVudF87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X2NvcHJvcHJpZXRlX30pKSBpblxuICBsZXQgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE3MjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llci5yZWRldmFuY2UpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk0ODsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llci5tb2RlX29jY3VwYXRpb25cIl1cbiAgICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjE7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBtb2RlX29jY3VwYXRpb25fKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NDk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MDg7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTUwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE0OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NTE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTUyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9nZW1lbnRfZm95ZXIuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk1MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjE7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyMjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTU0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl86IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcImxvZ2VtZW50X2ZveWVyLmNhdMOpZ29yaWVfw6lxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcIl1cbiAgICAgIChlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMTsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzI5OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXNcbiAgICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9nZW1lbnRGb3llciBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXNcbiAgICAgICAgICAgICAgICAgICAoKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk1NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luID0gbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZffSkpIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyT3V0LmVxdWl2YWxlbmNlX2xveWVyX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc186IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfb3V0IGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9kb3RfbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC5sb3llcl9taW5pbWFsX291dCBpblxuICBsZXQgbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubG95ZXJfcHJpbmNpcGFsXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjMzOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYubG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjA3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzkxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5MTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwibG9jYXRpZi5iw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzkyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5NDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYyNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi56b25lXCJdIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03OTc7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY0NDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJsb2NhdGlmLsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU3OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTY1NzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc5OTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY2NDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiB0eXBlX2FpZGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MDE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9jb2xvY2F0aW9uXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNvbG9jYXRpb25cIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmNvbG9jYXRpb24pXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODAyOyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDIwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjY1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGUpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODAzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxvY2F0aWYubG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDIwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjcwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIGluZm9zXyAtPlxuICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9jYXRpZi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGxvY2F0aWZfZG90X2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XzogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XCJdXG4gICAgICAoZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwMjA7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY3NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80KVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50ICgpKVxuICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgIChDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKCkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwNzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04MDc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJsb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIl0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IGxvY2F0aWZfZG90X3pvbmVfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3R5cGVfYWlkZV87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfY29sb2NhdGlvbl87XG4gICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgIGxvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICBsb2NhdGlmX2RvdF9sb2dlbWVudF9tZXVibGVfZDg0Ml8yXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgbG9jYXRpZl9kb3RfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRffSkpIGluXG4gIGxldCBsb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZPdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgaW5cbiAgbGV0IGxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwYXJhbV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjY7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIGxvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2lvbl9wcm9wcmlldGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgXyAtPiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtXykpKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDI2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAyNjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAyNTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDAzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgYWNjZXNzaW9uX3Byb3ByaWV0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIGxvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDI1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvY2F0aWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSBlbHNlIHRydWUpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA1OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gdHJ1ZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggaW5mb3JtYXRpb25zX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zTG9jYXRpZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0xvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEluZm9ybWF0aW9uc0NhbGN1bEFQTC5JbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIGVsc2UgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwMTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBfIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBpbmZvcm1hdGlvbnNfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mb3JtYXRpb25zQ2FsY3VsQVBMLkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkgZWxzZSB0cnVlKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk3OyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NzsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbjogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDIzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzk7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTAxOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjU7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5iw6luw6lmaWNpZV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc5OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDY2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IF8pIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfaW5mb3JtYXRpb25zX2NhbGN1bF86IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuaW5mb3JtYXRpb25zX2NhbGN1bFwiXVxuICAgICAgKGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwNzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA3OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDI3OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICB7RWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfO1xuICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsX30pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5lbGlnaWJpbGl0ZV9hdmVjX2NvbmRpdGlvbl9sb2dlbWVudF9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX291dCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzg2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTM4NjsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzY7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDc2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5OTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Mzg3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM4ODsgc3RhcnRfY29sdW1uPTE3OyBlbmRfbGluZT0zODg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQpXG4gICAge0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tZW5hZ2VfO1xuICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVffSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZGF0ZV9jb3VyYW50ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5tb2RlX29jY3VwYXRpb25cIl0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjA7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAwNjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuaW5mb3JtYXRpb25zX2NhbGN1bFwiXVxuICAgICAgKGVtYmVkX2luZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MztcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NTsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTE2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTE2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMTI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTEyOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpfF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBmYWxzZSkgKGZ1biAoXzogXykgLT4gcmFpc2UgRW1wdHlFcnJvcikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDA3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMDc7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEyNDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDA4OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDExOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg1OyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzU7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEzOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC56b25lKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODU7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDg1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKSlcbiAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDE1OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50KVxuICAgIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmluZm9ybWF0aW9uc19jYWxjdWxfaW4gPVxuICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfO1xuICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF96b25lXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5tb2RlX29jY3VwYXRpb25cIl1cbiAgICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTE4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzUxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmluZm9ybWF0aW9uc19jYWxjdWxcIl1cbiAgICAgIChlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTExNDsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTEwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTExMDsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZmFsc2UpIChmdW4gKF86IF8pIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzUzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1MzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTIyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDgyOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMjY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1NzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMzE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1ODsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTM3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnpvbmUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzU5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc1OTsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0MTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc2MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50KVxuICAgIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHlwZV9haWRlXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXztcbiAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfem9uZV87XG4gICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDkxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA5MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlXyB8fFxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICB8IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBhcmFtXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgKG5vdCBlbGlnaWJpbGl0ZV8pIHRoZW4gcGFyYW1fIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAobm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICgoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV8pKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtXykpKSkpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA4OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT5cbiAgICAgICAgICAgICBpZiAobm90IGVsaWdpYmlsaXRlXykgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfICYmXG4gICAgICAgICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKCgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgPiQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKVxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwODk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0ID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVffVxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbjogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KSA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgbWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV86IE1lbmFnZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcIm3DqW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZVwiXSAoZW1iZWRfbWVuYWdlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjAyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMDI7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPlxuICAgICAgICAgICAge01lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMgPSAobWVuYWdlXy5NZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5sb2dlbWVudCA9IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgKGFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uubm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpO1xuICAgICAgICAgICAgICAgTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKX0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE2NjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MDsgZW5kX2NvbHVtbj0xMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjY7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcwOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MDsgZW5kX2NvbHVtbj0xMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5pbmZvcm1hdGlvbnNfY2FsY3VsXCJdIChlbWJlZF9pbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcwOyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBpbmZvcm1hdGlvbnNfY2FsY3VsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjg7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzA7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcwOyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MDsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExODU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE4NTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA3NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlXCI7XG4gICAgICBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGVcIjtcbiAgICAgIFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luID0gY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID0gY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX30pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmVsaWdpYmlsaXRlX291dCBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzE7IHN0YXJ0X2NvbHVtbj0zOyBlbmRfbGluZT0xMTcxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNjY7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE4OTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDY3OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9pbmZvcm1hdGlvbnNfY2FsY3VsXzogSW5mb3JtYXRpb25zQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5pbmZvcm1hdGlvbnNfY2FsY3VsXCJdXG4gICAgICAoZW1iZWRfaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTkxOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gaW5mb3JtYXRpb25zX2NhbGN1bF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDY4OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3MTsgc3RhcnRfY29sdW1uPTM7IGVuZF9saW5lPTExNzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE5MzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUucmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTcxOyBzdGFydF9jb2x1bW49MzsgZW5kX2xpbmU9MTE3MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExOTY7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwNzQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50T3V0LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWVcIjsgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQpXG4gICAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2luZm9ybWF0aW9uc19jYWxjdWxfO1xuICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX30pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuZWxpZ2liaWxpdGVfb3V0IGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dCBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXQgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcIsOpbGlnaWJpbGl0w6lcIl0gKGVtYmVkX2Jvb2wpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTE3MzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTExNzM7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNjc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiBfKSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIwMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+XG4gICAgICAgICAgICBjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY3OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImFpZGVfZmluYWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMTc0OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogXykgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ29uc2VpbCBkJ8OJdGF0LCA1w6htZSAtIDTDqG1lIGNoYW1icmVzIHLDqXVuaWVzLCAyMS8wNy8yMDE3LCAzOTg1NjNcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IF8pIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgIChjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfICskXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAoKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSA9XG4gICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAoKGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfIC0kXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgICAgICokXG4gICAgICAgICAgICAgICAgICAgICAoKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGRlY2ltYWwpIChjb2VmZl86IF8pIC0+IGFjY18gKyYgY29lZmZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAvJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2ZfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFycmF5X2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKSkpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTE3NDsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LmVsaWdpYmlsaXRlX291dCA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQuYWlkZV9maW5hbGVfb3V0ID0gYWlkZV9maW5hbGVffVxuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEFpZGVzX2xvZ2VtZW50XG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHR5cGVfYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICAgIC0gXCJCYWlsbGV1clByaXZlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9iYWlsbGV1cl90b19qc29vIDogVHlwZUJhaWxsZXVyLnQgLT4gdHlwZV9iYWlsbGV1ciBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBCYWlsbGV1clNvY2lhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJhaWxsZXVyU29jaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQmFpbGxldXJQcml2ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJhaWxsZXVyUHJpdmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfYmFpbGxldXJfb2ZfanNvbyAodHlwZV9iYWlsbGV1ciA6IHR5cGVfYmFpbGxldXIgSnMudClcbiAgOiBUeXBlQmFpbGxldXIudCA9XG4gIG1hdGNoIHR5cGVfYmFpbGxldXIjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJCYWlsbGV1clNvY2lhbFwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCAoKVxuICB8IFwiQmFpbGxldXJQcml2ZVwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQmFpbGxldXIudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRDMzMV8zMlwiXG4gICAgICAgIC0gXCJEMzMxXzYzXzY0XCJcbiAgICAgICAgLSBcIkQzMzFfNTlfOFwiXG4gICAgICAgIC0gXCJEMzMxXzc2XzFcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3ByZXRfdG9fanNvbyA6IFR5cGVQcmV0LnQgLT4gdHlwZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEQzMzFfMzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzMyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV82M182NCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNjNfNjRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzU5XzggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzU5XzhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzc2XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzc2XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3ByZXRfb2ZfanNvbyAodHlwZV9wcmV0IDogdHlwZV9wcmV0IEpzLnQpIDogVHlwZVByZXQudCA9XG4gIG1hdGNoIHR5cGVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkQzMzFfMzJcIiAtPiBUeXBlUHJldC5EMzMxXzMyICgpXG4gIHwgXCJEMzMxXzYzXzY0XCIgLT4gVHlwZVByZXQuRDMzMV82M182NCAoKVxuICB8IFwiRDMzMV81OV84XCIgLT4gVHlwZVByZXQuRDMzMV81OV84ICgpXG4gIHwgXCJEMzMxXzc2XzFcIiAtPiBUeXBlUHJldC5EMzMxXzc2XzEgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZVByZXQuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVQcmV0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHRpdHVsYWlyZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyXCJcbiAgICAgICAgLSBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF90b19qc29vIDogVGl0dWxhaXJlUHJldC50IC0+IHRpdHVsYWlyZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF9vZl9qc29vICh0aXR1bGFpcmVfcHJldCA6IHRpdHVsYWlyZV9wcmV0IEpzLnQpXG4gIDogVGl0dWxhaXJlUHJldC50ID1cbiAgbWF0Y2ggdGl0dWxhaXJlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJcIiAtPiBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciAoKVxuICB8IFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiIC0+XG4gICAgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUaXR1bGFpcmVQcmV0LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICAgIC0gXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xICgpXG4gIHwgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICAgIC0gXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgICAtIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgKClcbiAgfCBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSAoKVxuICB8IFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aVwiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvb1xuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCAtPiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvb1xuICAoYW1lbGlvcmVfcGFyX29jY3VwYW50IDogYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnQpXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50ID1cbiAgbWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT3VpXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgKClcbiAgfCBcIk5vblwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdBbWVsaW9yZVBhck9jY3VwYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gOiBMaW1pdGVUcmFuY2hlLnQgLT4gbGltaXRlX3RyYW5jaGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIChsaW1pdGVfdHJhbmNoZSA6IGxpbWl0ZV90cmFuY2hlIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZS50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZSMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZS5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb29cbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50IC0+IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvb1xuICAobGltaXRlX3RyYW5jaGVfZGVjaW1hbCA6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlRGVjaW1hbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uX3JlY3VlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIDogUHJlc3RhdGlvblJlY3VlLnQgLT4gcHJlc3RhdGlvbl9yZWN1ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIChwcmVzdGF0aW9uX3JlY3VlIDogcHJlc3RhdGlvbl9yZWN1ZSBKcy50KVxuICA6IFByZXN0YXRpb25SZWN1ZS50ID1cbiAgbWF0Y2ggcHJlc3RhdGlvbl9yZWN1ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKClcbiAgfCBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiIC0+IFByZXN0YXRpb25SZWN1ZS5Db21wbGVtZW50RmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uSmV1bmVFbmZhbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlICgpXG4gIHwgXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJlc3RhdGlvblJlY3VlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfY29udHJhdF90cmF2YWlsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQ0RJXCJcbiAgICAgICAgLSBcIkF1dHJlc1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfY29udHJhdF90cmF2YWlsX3RvX2pzb29cbiAgOiBUeXBlQ29udHJhdFRyYXZhaWwudCAtPiB0eXBlX2NvbnRyYXRfdHJhdmFpbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBDREkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDRElcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfY29udHJhdF90cmF2YWlsX29mX2pzb29cbiAgKHR5cGVfY29udHJhdF90cmF2YWlsIDogdHlwZV9jb250cmF0X3RyYXZhaWwgSnMudCkgOiBUeXBlQ29udHJhdFRyYXZhaWwudCA9XG4gIG1hdGNoIHR5cGVfY29udHJhdF90cmF2YWlsIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ0RJXCIgLT4gVHlwZUNvbnRyYXRUcmF2YWlsLkNESSAoKVxuICB8IFwiQXV0cmVzXCIgLT4gVHlwZUNvbnRyYXRUcmF2YWlsLkF1dHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUNvbnRyYXRUcmF2YWlsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudF9vdV9hdXRyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV90b19qc29vIDogUGFyZW50T3VBdXRyZS50IC0+IHBhcmVudF9vdV9hdXRyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIChwYXJlbnRfb3VfYXV0cmUgOiBwYXJlbnRfb3VfYXV0cmUgSnMudClcbiAgOiBQYXJlbnRPdUF1dHJlLnQgPVxuICBtYXRjaCBwYXJlbnRfb3VfYXV0cmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIiAtPlxuICBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgcGFyZW50X291X2F1dHJlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVwiIC0+IFBhcmVudE91QXV0cmUuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudE91QXV0cmUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCAtPiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRGVHYXJkZUFsdGVybmVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA6IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50KVxuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiIC0+IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgLT5cbiAgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFzY2VuZGFudFwiXG4gICAgICAgIC0gXCJEZXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50ZV90b19qc29vIDogUGFyZW50ZS50IC0+IHBhcmVudGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRGVzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRlX29mX2pzb28gKHBhcmVudGUgOiBwYXJlbnRlIEpzLnQpIDogUGFyZW50ZS50ID1cbiAgbWF0Y2ggcGFyZW50ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFzY2VuZGFudFwiIC0+IFBhcmVudGUuQXNjZW5kYW50ICgpXG4gIHwgXCJEZXNjZW5kYW50XCIgLT4gUGFyZW50ZS5EZXNjZW5kYW50ICgpXG4gIHwgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiIC0+XG4gICAgUGFyZW50ZS5Db2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICAgIC0gXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgICAgLSBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCAtPiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEYXRlRGVOYWlzc2FuY2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV9vZl9qc29vXG4gIChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAgIDogZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudClcbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50ID1cbiAgbWF0Y2ggZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEYXRlRGVOYWlzc2FuY2VcIiAtPlxuICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLnBheWxvYWQpKVxuICB8IFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbmF0aW9uYWxpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJGcmFuY2Fpc2VcIlxuICAgICAgICAtIFwiRXRyYW5nZXJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfdG9fanNvbyA6IE5hdGlvbmFsaXRlLnQgLT4gbmF0aW9uYWxpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRnJhbmNhaXNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRnJhbmNhaXNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRyYW5nZXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRyYW5nZXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBuYXRpb25hbGl0ZV9vZl9qc29vIChuYXRpb25hbGl0ZSA6IG5hdGlvbmFsaXRlIEpzLnQpIDogTmF0aW9uYWxpdGUudCA9XG4gIG1hdGNoIG5hdGlvbmFsaXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRnJhbmNhaXNlXCIgLT4gTmF0aW9uYWxpdGUuRnJhbmNhaXNlICgpXG4gIHwgXCJFdHJhbmdlcmVcIiAtPiBOYXRpb25hbGl0ZS5FdHJhbmdlcmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ05hdGlvbmFsaXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHpvbmVfZF9oYWJpdGF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiWm9uZTFcIlxuICAgICAgICAtIFwiWm9uZTJcIlxuICAgICAgICAtIFwiWm9uZTNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIDogWm9uZURIYWJpdGF0aW9uLnQgLT4gem9uZV9kX2hhYml0YXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgWm9uZTEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vICh6b25lX2RfaGFiaXRhdGlvbiA6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQpXG4gIDogWm9uZURIYWJpdGF0aW9uLnQgPVxuICBtYXRjaCB6b25lX2RfaGFiaXRhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlpvbmUxXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUxICgpXG4gIHwgXCJab25lMlwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMiAoKVxuICB8IFwiWm9uZTNcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1pvbmVESGFiaXRhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTG9jYXRpb25cIlxuICAgICAgICAtIFwiQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgICAgLSBcIkxvZ2VtZW50Rm95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX3RvX2pzb29cbiAgOiBDYXRlZ29yaWVDYWxjdWxBUEwudCAtPiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvY2F0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRpb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBY2Nlc3Npb25Qcm9wcmlldGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMb2dlbWVudEZveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gIChjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIDogY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50KVxuICA6IENhdGVnb3JpZUNhbGN1bEFQTC50ID1cbiAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0aW9uXCIgLT4gQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uICgpXG4gIHwgXCJBY2Nlc3Npb25Qcm9wcmlldGVcIiAtPiBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlICgpXG4gIHwgXCJMb2dlbWVudEZveWVyXCIgLT4gQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvb1xuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCAtPiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gIChwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgOiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQpXG4gIDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID1cbiAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiIC0+XG4gIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5wYXlsb2FkKSlcbiAgfCBcIk5vblwiIC0+IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJcIlxuICAgICAgICAtIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgICAgLSBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHZlcnNlbWVudF9hX3RvX2pzb28gOiBWZXJzZW1lbnRBLnQgLT4gdmVyc2VtZW50X2EgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEJlbmVmaWNpYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2Ffb2ZfanNvbyAodmVyc2VtZW50X2EgOiB2ZXJzZW1lbnRfYSBKcy50KSA6IFZlcnNlbWVudEEudCA9XG4gIG1hdGNoIHZlcnNlbWVudF9hIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJcIiAtPiBWZXJzZW1lbnRBLkJhaWxsZXVyICgpXG4gIHwgXCJCZW5lZmljaWFpcmVcIiAtPiBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSAoKVxuICB8IFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgLT4gVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEEudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgICAgLSBcIk1lbnN1YWxpdGVcIlxuICAgICAgICAtIFwiTG95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gOiBEZXBlbnNlTG9nZW1lbnQudCAtPiBkZXBlbnNlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBNZW5zdWFsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWVuc3VhbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IExveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyAoZGVwZW5zZV9sb2dlbWVudCA6IGRlcGVuc2VfbG9nZW1lbnQgSnMudClcbiAgOiBEZXBlbnNlTG9nZW1lbnQudCA9XG4gIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJNZW5zdWFsaXRlXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTG95ZXJcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGVwZW5zZUxvZ2VtZW50LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJJbXBheWVMb3llclwiXG4gICAgICAgIC0gXCJJbXBheWVQcmV0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCAtPiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEltcGF5ZUxveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBJbXBheWVQcmV0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllUHJldFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vXG4gIChtb2RlX29jY3VwYXRpb25faW1wYXllIDogbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50KVxuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPVxuICBtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiSW1wYXllTG95ZXJcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKVxuICB8IFwiSW1wYXllUHJldFwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uSW1wYXllLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQYXNFbGlnaWJsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuICA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgLT4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQYXNFbGlnaWJsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0VsaWdpYmxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudClcbiAgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbWF0Y2ggZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0VsaWdpYmxlXCIgLT4gRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCAtPiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA6IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBtYXRjaCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlXCJcbiAgICAgICAgLSBcIk1hcmllc1wiXG4gICAgICAgIC0gXCJQYWNzZXNcIlxuICAgICAgICAtIFwiQ29uY3ViaW5zXCJcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCJcbiAgICAgICAgLSBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZS50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2VsaWJhdGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcmllcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcmllc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhY3NlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhY3Nlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmlucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1Ymluc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2ZhbWlsaWFsZSA6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCkgOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJDZWxpYmF0YWlyZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSAoKVxuICB8IFwiTWFyaWVzXCIgLT5cbiAgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyAoZGF0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5wYXlsb2FkKSlcbiAgfCBcIlBhY3Nlc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgKClcbiAgfCBcIkNvbmN1Ymluc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgKClcbiAgfCBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgKClcbiAgfCBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiIC0+XG4gICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV90b19qc29vIDogUHJpc2VFbkNoYXJnZS50IC0+IHByaXNlX2VuX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gKHByaXNlX2VuX2NoYXJnZSA6IHByaXNlX2VuX2NoYXJnZSBKcy50KVxuICA6IFByaXNlRW5DaGFyZ2UudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NoYXJnZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiIC0+IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpXG4gIHwgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgKClcbiAgfCBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5SZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByaXNlRW5DaGFyZ2UudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgICAtIFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgOiBUeXBlTG9nZW1lbnRGb3llci50IC0+IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZVNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAodHlwZV9sb2dlbWVudF9mb3llciA6IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOiBUeXBlTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyAoKVxuICB8IFwiUmVzaWRlbmNlU29jaWFsZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKClcbiAgfCBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSAoKVxuICB8IFwiQXV0cmVcIiAtPiBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUxvZ2VtZW50Rm95ZXIudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFdHVkaWFudExvZ2VFbkNoYW1icmVcIlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWVcIlxuICAgICAgICAtIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgICAtIFwiQXV0cmVzUGVyc29ubmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50IC0+IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVzUGVyc29ubmVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVzUGVyc29ubmVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gIChjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgIDogY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudClcbiAgOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gIG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmUgKClcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZVJlaGFiaWxpdGVlXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlUmVoYWJpbGl0ZWUgKClcbiAgfCBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgKClcbiAgfCBcIkF1dHJlc1BlcnNvbm5lc1wiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGVyc29ubmVTZXVsZVwiXG4gICAgICAgIC0gXCJDb3VwbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGVyc29ubmVTZXVsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb3VwbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb3VwbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIDogc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGVyc29ubmVTZXVsZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpXG4gIHwgXCJDb3VwbGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29sbGVjdGl2aXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiR3VhZGVsb3VwZVwiXG4gICAgICAgIC0gXCJHdXlhbmVcIlxuICAgICAgICAtIFwiTWFydGluaXF1ZVwiXG4gICAgICAgIC0gXCJMYVJldW5pb25cIlxuICAgICAgICAtIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgICAgLSBcIlNhaW50TWFydGluXCJcbiAgICAgICAgLSBcIk1ldHJvcG9sZVwiXG4gICAgICAgIC0gXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgICAtIFwiTWF5b3R0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV90b19qc29vIDogQ29sbGVjdGl2aXRlLnQgLT4gY29sbGVjdGl2aXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEd1YWRlbG91cGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdWFkZWxvdXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR3V5YW5lIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3V5YW5lXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFydGluaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcnRpbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMYVJldW5pb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMYVJldW5pb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludEJhcnRoZWxlbXkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludE1hcnRpbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50TWFydGluXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWV0cm9wb2xlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWV0cm9wb2xlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWF5b3R0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1heW90dGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV9vZl9qc29vIChjb2xsZWN0aXZpdGUgOiBjb2xsZWN0aXZpdGUgSnMudClcbiAgOiBDb2xsZWN0aXZpdGUudCA9XG4gIG1hdGNoIGNvbGxlY3Rpdml0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkd1YWRlbG91cGVcIiAtPiBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKVxuICB8IFwiR3V5YW5lXCIgLT4gQ29sbGVjdGl2aXRlLkd1eWFuZSAoKVxuICB8IFwiTWFydGluaXF1ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpXG4gIHwgXCJMYVJldW5pb25cIiAtPiBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpXG4gIHwgXCJTYWludEJhcnRoZWxlbXlcIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpXG4gIHwgXCJTYWludE1hcnRpblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKVxuICB8IFwiTWV0cm9wb2xlXCIgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKVxuICB8IFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiAoKVxuICB8IFwiTWF5b3R0ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdDb2xsZWN0aXZpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50IC0+IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAocHJpc2VfZW5fY2hhcmdlX2VuZmFudCA6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZUVuZmFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZVBlcnNvbm5lU291c0xvY2F0aW9uOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25mb3JtZUFydGljbGVMNDQyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28gKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICA6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcGVyc29ubmVfc291c19sb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhZ2VQZXJzb25uZVNvdXNMb2NhdGlvbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24uYWdlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICAgIHZhbCBjb25mb3JtZUFydGljbGVMNDQyMSA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMVxuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb29cbiAgICAocGVyc29ubmVfc291c19sb2NhdGlvbiA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCkgOlxuICAgIFBlcnNvbm5lU291c0xvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGFnZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnQgcGVyc29ubmVfc291c19sb2NhdGlvbiMjLmFnZVBlcnNvbm5lU291c0xvY2F0aW9uO1xuICAgICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEgPVxuICAgICAgICBKcy50b19ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5jb25mb3JtZUFydGljbGVMNDQyMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwYXRyaW1vaW5lID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX3RvX2pzb28gKHBhdHJpbW9pbmUgOiBQYXRyaW1vaW5lLnQpIDogcGF0cmltb2luZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIHZhbCBuZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzRcbiAgICAgIGVuZFxuICBsZXQgcGF0cmltb2luZV9vZl9qc29vIChwYXRyaW1vaW5lIDogcGF0cmltb2luZSBKcy50KSA6IFBhdHJpbW9pbmUudCA9XG4gICAge1xuICAgICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLnByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ7XG4gICAgICBuZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcGF0cmltb2luZSMjLm5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJfdG9fanNvb1xuICAgIChwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICA6IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpXG4gICAgOiBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pcyA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pc1xuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLnJlc3NvdXJjZXNcbiAgICAgIGVuZFxuICBsZXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb29cbiAgICAocGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgICA6IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50KSA6XG4gICAgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCA9XG4gICAge1xuICAgICAgZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgICAgICAgICMjLmR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXM7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciMjLnJlc3NvdXJjZXNcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYW5jaWVuTG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IDogSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICAgIDogaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYW5jaWVuTG95ZXJQcmluY2lwYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgIChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KSA6XG4gICAgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID1cbiAgICB7XG4gICAgICBhbmNpZW5fbG95ZXJfcHJpbmNpcGFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVuTG95ZXJQcmluY2lwYWw7XG4gICAgICBhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMuYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUJhaWxsZXVyOiB0eXBlX2JhaWxsZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNwZWN0ZUNvbnZlbnRpb25UaXRyZVY6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3BlY3RlQ29udmVudGlvblRpdHJlSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnN0cnVpdEFtZWxpb3JlQ29uZGl0aW9uc0w4MzExNDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWNxdWlzaXRpb25BaWRlc0V0YXRQcmV0VGl0cmVJSU91TGl2cmVJSUk6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhaWxsZXVyX3RvX2pzb28gKGJhaWxsZXVyIDogQmFpbGxldXIudCkgOiBiYWlsbGV1ciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlQmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX3RvX2pzb28gYmFpbGxldXIudHlwZV9iYWlsbGV1clxuICAgICAgdmFsIHJlc3BlY3RlQ29udmVudGlvblRpdHJlViA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9WXG4gICAgICB2YWwgcmVzcGVjdGVDb252ZW50aW9uVGl0cmVJSSA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIucmVzcGVjdGVfY29udmVudGlvbl90aXRyZV9JSVxuICAgICAgdmFsIGNvbnN0cnVpdEFtZWxpb3JlQ29uZGl0aW9uc0w4MzExNCA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIuY29uc3RydWl0X2FtZWxpb3JlX2NvbmRpdGlvbnNfbDgzMV8xXzRcbiAgICAgIHZhbCBhY3F1aXNpdGlvbkFpZGVzRXRhdFByZXRUaXRyZUlJT3VMaXZyZUlJSSA9XG4gICAgICAgIEpzLmJvb2wgYmFpbGxldXIuYWNxdWlzaXRpb25fYWlkZXNfZXRhdF9wcmV0X3RpdHJlX0lJX291X2xpdnJlX0lJSVxuICAgICAgZW5kXG4gIGxldCBiYWlsbGV1cl9vZl9qc29vIChiYWlsbGV1ciA6IGJhaWxsZXVyIEpzLnQpIDogQmFpbGxldXIudCA9XG4gICAge1xuICAgICAgdHlwZV9iYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfb2ZfanNvbyBiYWlsbGV1ciMjLnR5cGVCYWlsbGV1cjtcbiAgICAgIHJlc3BlY3RlX2NvbnZlbnRpb25fdGl0cmVfViA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYmFpbGxldXIjIy5yZXNwZWN0ZUNvbnZlbnRpb25UaXRyZVY7XG4gICAgICByZXNwZWN0ZV9jb252ZW50aW9uX3RpdHJlX0lJID1cbiAgICAgICAgSnMudG9fYm9vbCBiYWlsbGV1ciMjLnJlc3BlY3RlQ29udmVudGlvblRpdHJlSUk7XG4gICAgICBjb25zdHJ1aXRfYW1lbGlvcmVfY29uZGl0aW9uc19sODMxXzFfNCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYmFpbGxldXIjIy5jb25zdHJ1aXRBbWVsaW9yZUNvbmRpdGlvbnNMODMxMTQ7XG4gICAgICBhY3F1aXNpdGlvbl9haWRlc19ldGF0X3ByZXRfdGl0cmVfSUlfb3VfbGl2cmVfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbCBiYWlsbGV1ciMjLmFjcXVpc2l0aW9uQWlkZXNFdGF0UHJldFRpdHJlSUlPdUxpdnJlSUlJXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmV0X3RvX2pzb28gKHByZXQgOiBQcmV0LnQpIDogcHJldCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlUHJldCA9IHR5cGVfcHJldF90b19qc29vIHByZXQudHlwZV9wcmV0XG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZSA9IGRhdGVfdG9fanNvbyBwcmV0LmRhdGVfc2lnbmF0dXJlXG4gICAgICB2YWwgdGl0dWxhaXJlUHJldCA9IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gcHJldC50aXR1bGFpcmVfcHJldFxuICAgICAgZW5kXG4gIGxldCBwcmV0X29mX2pzb28gKHByZXQgOiBwcmV0IEpzLnQpIDogUHJldC50ID1cbiAgICB7XG4gICAgICB0eXBlX3ByZXQgPSB0eXBlX3ByZXRfb2ZfanNvbyBwcmV0IyMudHlwZVByZXQ7XG4gICAgICBkYXRlX3NpZ25hdHVyZSA9IGRhdGVfb2ZfanNvbyBwcmV0IyMuZGF0ZVNpZ25hdHVyZTtcbiAgICAgIHRpdHVsYWlyZV9wcmV0ID0gdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyBwcmV0IyMudGl0dWxhaXJlUHJldFxuICAgIH1cblxuY2xhc3MgdHlwZSBuZXVmX291X2FuY2llbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5ldWZcIlxuICAgICAgICAtIFwiQW5jaWVuXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyA6IE5ldWZPdUFuY2llbi50IC0+IG5ldWZfb3VfYW5jaWVuIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5ldWYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOZXVmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQW5jaWVuIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQW5jaWVuXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5ldWZfb3VfYW5jaWVuX29mX2pzb28gKG5ldWZfb3VfYW5jaWVuIDogbmV1Zl9vdV9hbmNpZW4gSnMudClcbiAgOiBOZXVmT3VBbmNpZW4udCA9XG4gIG1hdGNoIG5ldWZfb3VfYW5jaWVuIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTmV1ZlwiIC0+IE5ldWZPdUFuY2llbi5OZXVmICgpXG4gIHwgXCJBbmNpZW5cIiAtPlxuICBOZXVmT3VBbmNpZW4uQW5jaWVuIChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuZXVmX291X2FuY2llbiMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmV1Zk91QW5jaWVuLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHRyYW5jaGVfcmV2ZW51ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X3RvX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogVHJhbmNoZVJldmVudS50KVxuICAgIDogdHJhbmNoZV9yZXZlbnUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gdHJhbmNoZV9yZXZlbnUuaGF1dFxuICAgICAgdmFsIGJhcyA9IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCB0cmFuY2hlX3JldmVudS5iYXNcbiAgICAgIHZhbCB0YXV4ID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnUudGF1eFxuICAgICAgZW5kXG4gIGxldCB0cmFuY2hlX3JldmVudV9vZl9qc29vICh0cmFuY2hlX3JldmVudSA6IHRyYW5jaGVfcmV2ZW51IEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51LnQgPVxuICAgIHtcbiAgICAgIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIHRyYW5jaGVfcmV2ZW51IyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFuY2hlX3JldmVudSMjLmJhcztcbiAgICAgIHRhdXggPSBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudSMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBoYXV0OiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyAodHJhbmNoZV9yZXZlbnVfZGVjaW1hbFxuICAgIDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28gdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5oYXV0XG4gICAgICB2YWwgYmFzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5iYXNcbiAgICAgIHZhbCB0YXV4ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvb1xuICAgICh0cmFuY2hlX3JldmVudV9kZWNpbWFsIDogdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCBKcy50KSA6XG4gICAgVHJhbmNoZVJldmVudURlY2ltYWwudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5iYXM7XG4gICAgICB0YXV4ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcmVudGU6IHBhcmVudGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgOiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50KSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnJlc3NvdXJjZXNcbiAgICAgIHZhbCBhc2NlbmRhbnREZXNjZW5kYW50Q29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlXG4gICAgICB2YWwgcGFyZW50ZSA9IHBhcmVudGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5wYXJlbnRlXG4gICAgICB2YWwgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1ID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3VcbiAgICAgIHZhbCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS50aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlXG4gICAgICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgOiBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSBKcy50KSA6XG4gICAgQXV0cmVQZXJzb25uZUFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5kYXRlTmFpc3NhbmNlO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnJlc3NvdXJjZXM7XG4gICAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZVxuICAgICAgICAgICMjLmFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTtcbiAgICAgIHBhcmVudGUgPSBwYXJlbnRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXJlbnRlO1xuICAgICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5pbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2k7XG4gICAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMuYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U7XG4gICAgICB0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlID1cbiAgICAgICAgSnMudG9fYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgICAgLSBcIlBsdXNEZVRyb2lzRW5mYW50c1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X3RvX2pzb29cbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50IC0+IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE1vaW5zRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGx1c0RlVHJvaXNFbmZhbnRzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAoZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICA6IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnQpXG4gIDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCA9XG4gIG1hdGNoIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCIgLT5cbiAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzICgpXG4gIHwgXCJQbHVzRGVUcm9pc0VuZmFudHNcIiAtPlxuICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVkZXZhbmNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY6XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llclxuICAgIDogSW5mb3JtYXRpb25zQ2FsY3VsQVBMTG9nZW1lbnRGb3llci50KVxuICAgIDogaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZWRldmFuY2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcbiAgICAgIHZhbCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2ID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XG4gICAgICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIEluZm9ybWF0aW9uc0NhbGN1bEFQTExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgcmVkZXZhbmNlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9nZW1lbnRfZm95ZXIjIy5yZWRldmFuY2U7XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGFnZSA9IGludGVnZXJfdG9faW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFnZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuaWRlbnRpZmlhbnQ7XG4gICAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5hZ2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnByaXNlRW5DaGFyZ2U7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgICAgICMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25HYXJkZUFsdGVybmVlOlxuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9hX2NoYXJnZV90b19qc29vIChlbmZhbnRfYV9jaGFyZ2UgOiBFbmZhbnRBQ2hhcmdlLnQpXG4gICAgOiBlbmZhbnRfYV9jaGFyZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfYV9jaGFyZ2UuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfYV9jaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2FfY2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50X2FfY2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9hX2NoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgb2JsaWdhdGlvblNjb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYWdlID0gaW50ZWdlcl90b19pbnQgZW5mYW50X2FfY2hhcmdlLmFnZVxuICAgICAgdmFsIHNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUgPVxuICAgICAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9hX2NoYXJnZV9vZl9qc29vIChlbmZhbnRfYV9jaGFyZ2UgOiBlbmZhbnRfYV9jaGFyZ2UgSnMudCkgOlxuICAgIEVuZmFudEFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfYV9jaGFyZ2UjIy5pZGVudGlmaWFudDtcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5iZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50O1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2FfY2hhcmdlIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGRhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudF9hX2NoYXJnZSMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5vYmxpZ2F0aW9uU2NvbGFpcmU7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYWdlID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2FfY2hhcmdlIyMuYWdlO1xuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5zaXR1YXRpb25HYXJkZUFsdGVybmVlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTm9uXCJcbiAgICAgICAgLSBcIk91aVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb29cbiAgOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50IC0+IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfb2ZfanNvb1xuICAobG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgOiBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50KVxuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgPVxuICBtYXRjaCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk5vblwiIC0+IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiAoKVxuICB8IFwiT3VpXCIgLT5cbiAgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGRlbWFuZGV1ciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlRGVtYW5kZXVyOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnRyYXREZVRyYXZhaWw6IHR5cGVfY29udHJhdF90cmF2YWlsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIHZhbCBhZ2VEZW1hbmRldXIgPSBpbnRlZ2VyX3RvX2ludCBkZW1hbmRldXIuYWdlX2RlbWFuZGV1clxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZGVtYW5kZXVyLmRhdGVfbmFpc3NhbmNlXG4gICAgICB2YWwgY29udHJhdERlVHJhdmFpbCA9XG4gICAgICAgIHR5cGVfY29udHJhdF90cmF2YWlsX3RvX2pzb28gZGVtYW5kZXVyLmNvbnRyYXRfZGVfdHJhdmFpbFxuICAgICAgdmFsIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfdG9fanNvbyBkZW1hbmRldXIubmF0aW9uYWxpdGVcbiAgICAgIHZhbCBwYXRyaW1vaW5lID0gcGF0cmltb2luZV90b19qc29vIGRlbWFuZGV1ci5wYXRyaW1vaW5lXG4gICAgICB2YWwgcGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIGVuZFxuICBsZXQgZGVtYW5kZXVyX29mX2pzb28gKGRlbWFuZGV1ciA6IGRlbWFuZGV1ciBKcy50KSA6IERlbWFuZGV1ci50ID1cbiAgICB7XG4gICAgICBzYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlID1cbiAgICAgICAgSnMudG9fYm9vbCBkZW1hbmRldXIjIy5zYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlO1xuICAgICAgYWdlX2RlbWFuZGV1ciA9IGludGVnZXJfb2ZfaW50IGRlbWFuZGV1ciMjLmFnZURlbWFuZGV1cjtcbiAgICAgIGRhdGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGRlbWFuZGV1ciMjLmRhdGVOYWlzc2FuY2U7XG4gICAgICBjb250cmF0X2RlX3RyYXZhaWwgPVxuICAgICAgICB0eXBlX2NvbnRyYXRfdHJhdmFpbF9vZl9qc29vIGRlbWFuZGV1ciMjLmNvbnRyYXREZVRyYXZhaWw7XG4gICAgICBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX29mX2pzb28gZGVtYW5kZXVyIyMubmF0aW9uYWxpdGU7XG4gICAgICBwYXRyaW1vaW5lID0gcGF0cmltb2luZV9vZl9qc29vIGRlbWFuZGV1ciMjLnBhdHJpbW9pbmU7XG4gICAgICBwZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGRlbWFuZGV1ciMjLnBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDaGFuZ2VtZW50XCJcbiAgICAgICAgLSBcIlBhc0RlQ2hhbmdlbWVudFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50IC0+IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENoYW5nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlQ2hhbmdlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAoY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KVxuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNoYW5nZW1lbnRcIiAtPlxuICBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMucGF5bG9hZCkpXG4gIHwgXCJQYXNEZUNoYW5nZW1lbnRcIiAtPiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID1cbiAgb2JqZWN0IG1ldGhvZCBiYWlsbGV1cjogYmFpbGxldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9jYXRpb25fdG9fanNvbyAobG9jYXRpb24gOiBMb2NhdGlvbi50KSA6IGxvY2F0aW9uIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJhaWxsZXVyID0gYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge2JhaWxsZXVyID0gYmFpbGxldXJfb2ZfanNvbyBsb2NhdGlvbiMjLmJhaWxsZXVyXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByb3ByaWV0YWlyZSA9XG4gIG9iamVjdCBtZXRob2QgcHJldDogcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfdG9fanNvbyAocHJvcHJpZXRhaXJlIDogUHJvcHJpZXRhaXJlLnQpXG4gICAgOiBwcm9wcmlldGFpcmUgSnMudCA9IG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBwcmV0ID0gcHJldF90b19qc29vIHByb3ByaWV0YWlyZS5wcmV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfb2ZfanNvbyAocHJvcHJpZXRhaXJlIDogcHJvcHJpZXRhaXJlIEpzLnQpIDpcbiAgICBQcm9wcmlldGFpcmUudCA9IHtwcmV0ID0gcHJldF9vZl9qc29vIHByb3ByaWV0YWlyZSMjLnByZXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTc6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVQcmV0OiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudDogbmV1Zl9vdV9hbmNpZW4gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBJbmZvcm1hdGlvbnNDYWxjdWxBUExBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlUHJpbmNpcGFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9wcmluY2lwYWxlXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldFxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5kYXRlX3NpZ25hdHVyZV9wcmV0XG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5kYXRlX2VudHJlZV9sb2dlbWVudFxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNSA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlID1cbiAgICAgICAgSnMuYm9vbCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXG4gICAgICB2YWwgY29wcm9wcmlldGUgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jb3Byb3ByaWV0ZVxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTcgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xN1xuICAgICAgdmFsIHR5cGVQcmV0ID1cbiAgICAgICAgdHlwZV9wcmV0X3RvX2pzb28gaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlLnR5cGVfcHJldFxuICAgICAgdmFsIGFuY2llbm5ldGVMb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlLmFuY2llbm5ldGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgSW5mb3JtYXRpb25zQ2FsY3VsQVBMQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZTtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldDtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXQgPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5kYXRlU2lnbmF0dXJlUHJldDtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50ID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlIyMuZGF0ZUVudHJlZUxvZ2VtZW50O1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV9vZl9qc29vXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMudHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNTtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50Ujg0MjU7XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmU7XG4gICAgICBjb3Byb3ByaWV0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5jb3Byb3ByaWV0ZTtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLnNpdHVhdGlvblI4MjIxMTEzMTc7XG4gICAgICB0eXBlX3ByZXQgPVxuICAgICAgICB0eXBlX3ByZXRfb2ZfanNvb1xuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLnR5cGVQcmV0O1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5hbmNpZW5uZXRlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFbmZhbnRBQ2hhcmdlXCJcbiAgICAgICAgLSBcIkF1dHJlUGVyc29ubmVBQ2hhcmdlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyA6IFBlcnNvbm5lQUNoYXJnZS50IC0+IHBlcnNvbm5lX2FfY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEVuZmFudEFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFbmZhbnRBQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZW5mYW50X2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlUGVyc29ubmVBQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyAocGVyc29ubmVfYV9jaGFyZ2UgOiBwZXJzb25uZV9hX2NoYXJnZSBKcy50KVxuICA6IFBlcnNvbm5lQUNoYXJnZS50ID1cbiAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFbmZhbnRBQ2hhcmdlXCIgLT5cbiAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgKGVuZmFudF9hX2NoYXJnZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHBlcnNvbm5lX2FfY2hhcmdlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGVyc29ubmVBQ2hhcmdlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRFc3RDaGFtYnJlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2xvY2F0aW9uOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZl90b19qc29vXG4gICAgKGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiA6IEluZm9ybWF0aW9uc0NhbGN1bEFQTExvY2F0aWYudClcbiAgICA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYubG95ZXJfcHJpbmNpcGFsXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlcyA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlXG4gICAgICB2YWwgY29sb2NhdGlvbiA9IEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmNvbG9jYXRpb25cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLmJvb2wgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZVxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjIgPVxuICAgICAgICBKcy5ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgIDogaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmIEpzLnQpIDpcbiAgICBJbmZvcm1hdGlvbnNDYWxjdWxBUExMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYjIy5sb3llclByaW5jaXBhbDtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmUgPVxuICAgICAgICBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmxvZ2VtZW50RXN0Q2hhbWJyZTtcbiAgICAgIGNvbG9jYXRpb24gPSBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZcbiAgICAgICAgICAjIy5hZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVycztcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZTtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzIgPVxuICAgICAgICBKcy50b19ib29sIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfbG9jYXRpZiMjLmxvZ2VtZW50TWV1YmxlRDg0MjI7XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWYjIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNFxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlVXNlcjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYXRpb246IGxvY2F0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfdG9fanNvbyAobG9nZW1lbnRfZm95ZXIgOiBMb2dlbWVudEZveWVyLnQpXG4gICAgOiBsb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlVXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBsb2dlbWVudF9mb3llci50eXBlX3VzZXJcbiAgICAgIHZhbCBkYXRlQ29udmVudGlvbm5lbWVudCA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBsb2dlbWVudF9mb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnRcbiAgICAgIHZhbCBsb2NhdGlvbiA9IGxvY2F0aW9uX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIubG9jYXRpb25cbiAgICAgIHZhbCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcbiAgICAgIHZhbCBjb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSVxuICAgICAgZW5kXG4gIGxldCBsb2dlbWVudF9mb3llcl9vZl9qc29vIChsb2dlbWVudF9mb3llciA6IGxvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBMb2dlbWVudEZveWVyLnQgPVxuICAgIHtcbiAgICAgIHR5cGVfdXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyBsb2dlbWVudF9mb3llciMjLnR5cGVVc2VyO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50ID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGxvZ2VtZW50X2ZveWVyIyMuZGF0ZUNvbnZlbnRpb25uZW1lbnQ7XG4gICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy5sb2NhdGlvbjtcbiAgICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLnJlbXBsaXRDb25kaXRpb25zUjgzMjIxO1xuICAgICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSVxuICAgIH1cblxuY2xhc3MgdHlwZSBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiSW5mb3NMb2NhdGlmXCJcbiAgICAgICAgLSBcIkluZm9zTG9nZW1lbnRGb3llclwiXG4gICAgICAgIC0gXCJJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfdG9fanNvb1xuICA6IEluZm9ybWF0aW9uc0NhbGN1bEFQTC50IC0+IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgSW5mb3NMb2NhdGlmIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5mb3NMb2NhdGlmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9sb2NhdGlmX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZvc0xvZ2VtZW50Rm95ZXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZvc0xvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZvc0FjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZm9zQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAoaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCA6IGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBJbmZvcm1hdGlvbnNDYWxjdWxBUEwudCA9XG4gIG1hdGNoIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJJbmZvc0xvY2F0aWZcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2NhdGlmIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvY2F0aWZfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIyMucGF5bG9hZCkpXG4gIHwgXCJJbmZvc0xvZ2VtZW50Rm95ZXJcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NMb2dlbWVudEZveWVyIChpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX2xvZ2VtZW50X2ZveWVyX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGVcIiAtPlxuICBJbmZvcm1hdGlvbnNDYWxjdWxBUEwuSW5mb3NBY2Nlc3Npb25Qcm9wcmlldGUgKGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0luZm9ybWF0aW9uc0NhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RBbmNpZW5MODMxMjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmU6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvZ2VtZW50X3RvX2pzb28gKGxvZ2VtZW50IDogTG9nZW1lbnQudCkgOiBsb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNpZGVuY2VQcmluY2lwYWxlID0gSnMuYm9vbCBsb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZVxuICAgICAgdmFsIGVzdEVocGFkT3VNYWlzb25BdXRvbm9taWVMMzEzMTJBc2YgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50LmVzdF9laHBhZF9vdV9tYWlzb25fYXV0b25vbWllX2wzMTNfMTJfYXNmXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb24gPSBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBsb2dlbWVudC5tb2RlX29jY3VwYXRpb25cbiAgICAgIHZhbCBwcm9wcmlldGFpcmUgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC5wcm9wcmlldGFpcmVcbiAgICAgIHZhbCBsb3VlT3VTb3VzTG91ZUFEZXNUaWVycyA9XG4gICAgICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb28gbG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICAgIHZhbCB1c3VmcnVpdCA9IHBhcmVudF9vdV9hdXRyZV90b19qc29vIGxvZ2VtZW50LnVzdWZydWl0XG4gICAgICB2YWwgbG9nZW1lbnREZWNlbnRMODk0NjIgPSBKcy5ib29sIGxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyXG4gICAgICB2YWwgc3VyZmFjZU1DYXJyZXMgPSBpbnRlZ2VyX3RvX2ludCBsb2dlbWVudC5zdXJmYWNlX21fY2FycmVzXG4gICAgICB2YWwgZXN0QW5jaWVuTDgzMTIgPSBKcy5ib29sIGxvZ2VtZW50LmVzdF9hbmNpZW5fbDgzMV8yXG4gICAgICB2YWwgc2l0dWVDb21tdW5lRGVzZXF1aWxpYnJlTDgzMTIgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50LnNpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMlxuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICBlc3RfYW5jaWVuX2w4MzFfMiA9IEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RBbmNpZW5MODMxMjtcbiAgICAgIHNpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5zaXR1ZUNvbW11bmVEZXNlcXVpbGlicmVMODMxMjtcbiAgICAgIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGxvZ2VtZW50IyMuem9uZVxuICAgIH1cblxuY2xhc3MgdHlwZSBtZW5hZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcHJlc3RhdGlvbnNSZWN1ZXM6XG4gICAgICBwcmVzdGF0aW9uX3JlY3VlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50OiBsb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVzQUNoYXJnZTpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZUF1dHJlc09jY3VwYW50c0xvZ2VtZW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGU6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZUVuZmFudHNBTmFpdHJlQXByZXNUcm9pc2llbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXM6XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2VcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXMgPVxuICAgICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF90b19qc29vIG1lbmFnZS5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1c1xuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBtZW5hZ2UjIy5ub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTtcbiAgICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICBKcy50b19ib29sIG1lbmFnZSMjLmVuZmFudEFOYWl0cmVBcHJlc1F1YXRyaWVtZU1vaXNHcm9zc2Vzc2U7XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyA9XG4gICAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBtZW5hZ2UjIy5kYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVPdXQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yUjgyMzRPdXQ6XG4gICAgICAocGVyc29ubmVfYV9jaGFyZ2UgSnMudCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZU91dCA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQuZGF0ZV9jb3VyYW50ZV9vdXRcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0LmVsaWdpYmlsaXRlX291dFxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0XG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0T3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQuY29uZGl0aW9uXzJfcjgyM180X291dCAocGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX291dCA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCMjLmRhdGVDb3VyYW50ZU91dDtcbiAgICAgIGVsaWdpYmlsaXRlX291dCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQjIy5lbGlnaWJpbGl0ZU91dDtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQ7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzRfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl8yX3I4MjNfNF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRTdXJmYWNlSW46XG4gICAgICAodW5pdCwgIGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luICggaW5wdXQpKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gKCBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVPdXQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlT3V0ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQuZGF0ZV9jb3VyYW50ZV9vdXRcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dC5lbGlnaWJpbGl0ZV9vdXRcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGVPdXQgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV9vdXRcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0ID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX291dCA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQjIy5kYXRlQ291cmFudGVPdXQ7XG4gICAgICBlbGlnaWJpbGl0ZV9vdXQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCMjLmVsaWdpYmlsaXRlT3V0O1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tZW5hZ2VJbjtcbiAgICAgIGRlbWFuZGV1cl9pbiA9XG4gICAgICAgIGRlbWFuZGV1cl9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQ6XG4gICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGVPdXQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X291dF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudE91dC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQgPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQuZWxpZ2liaWxpdGVfYXZlY19jb25kaXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlT3V0ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlX291dFxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVPdXQgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlX2F2ZWNfY29uZGl0aW9uX2xvZ2VtZW50X291dCA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuZWxpZ2liaWxpdGVBdmVjQ29uZGl0aW9uTG9nZW1lbnRPdXQ7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZU91dDtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb25zQ2FsY3VsSW46XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgaW5mb3JtYXRpb25zQ2FsY3VsSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudE91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRPdXQudClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudFByaW1lRGVtZW5hZ2VtZW50T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0XG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X291dCMjLm1vbnRhbnRQcmltZURlbWVuYWdlbWVudE91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUVtbWVuYWdlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlRW1tZW5hZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRhdGVfZW1tZW5hZ2VtZW50X2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUVtbWVuYWdlbWVudEluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGVwZW5zZXNKdXN0aWZpZWVzUmVlbGxlbWVudEVuZ2FnZWVzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfb3V0XG4gICAgICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dFxuICAgICAgICAgICMjLnJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNEZW1hbmRldXJJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzQ29uam9pbnRJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZXNWaXZhbnRIYWJpdHVlbGxlbWVudEZveWVySW46XG4gICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uam9pbnRFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZXNBQ2hhcmdlSW46XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluOlxuICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udClcbiAgICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzc291cmNlc0RlbWFuZGV1ckluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19kZW1hbmRldXJfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzQ29uam9pbnRJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfY29uam9pbnRfaW5cbiAgICAgIHZhbCBwZXJzb25uZXNWaXZhbnRIYWJpdHVlbGxlbWVudEZveWVySW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW5cbiAgICAgIHZhbCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIHBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyB4KSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnBlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluID1cbiAgICAgICAgSnMuYm9vbCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luID1cbiAgICAgICAgSnMuYm9vbCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luXG4gICAgICB2YWwgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pblxuICAgICAgdmFsIHBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbiA9XG4gICAgICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvbyByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cbiAgICAgIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfZGVtYW5kZXVyX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzRGVtYW5kZXVySW47XG4gICAgICByZXNzb3VyY2VzX2NvbmpvaW50X2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzQ29uam9pbnRJbjtcbiAgICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjtcbiAgICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluO1xuICAgICAgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuY29uam9pbnRFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluO1xuICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW47XG4gICAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjtcbiAgICAgIGRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluO1xuICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbiA9XG4gICAgICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5wYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50T3V0OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRcbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudE91dC50KVxuICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgbW9udGFudE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dC5tb250YW50X291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0XG4gICAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTZPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjJPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNk91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0Lm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2X291dFxuICAgICAgdmFsIHBsYWZvbmRMb3llckQ4MjMxNjJPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dC5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXRcbiAgICAgIHZhbCBwYXJ0aWNpcGF0aW9uTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dC5wYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dFxuICAgICAgdmFsIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0XG4gICAgICB2YWwgcGFydGljaXBhdGlvblBlcnNvbm5lbGxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXQucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZk91dC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTZPdXQ7XG4gICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLnBsYWZvbmRMb3llckQ4MjMxNjJPdXQ7XG4gICAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICAgICAgIyMucGFydGljaXBhdGlvbk1pbmltYWxlT3V0O1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICAgICAgIyMudGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlT3V0O1xuICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgICAgICAgICMjLnBhcnRpY2lwYXRpb25QZXJzb25uZWxsZU91dDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXRcbiAgICAgICAgICAjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnpvbmVfaW5cbiAgICAgIHZhbCBsb2dlbWVudEVzdENoYW1icmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4udHlwZV9haWRlX2luXG4gICAgICB2YWwgY29sb2NhdGlvbkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uY29sb2NhdGlvbl9pblxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0LnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dC5tb250YW50X291dFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dFxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX291dCMjLm1vbnRhbnRPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0IG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dFxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJPdXQudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dC5uX25vbWJyZV9wYXJ0c19kODMyXzI1X291dFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llck91dC50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X291dCA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dCMjLm5Ob21icmVQYXJ0c0Q4MzIyNU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UkQ4MzIyNU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGVPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjVTZXVpbE91dDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9vdXRcbiAgICAgIHZhbCBjb2VmZmljaWVudFJEODMyMjVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuY29lZmZpY2llbnRfcl9kODMyXzI1X291dFxuICAgICAgdmFsIG5Ob21icmVQYXJ0c0Q4MzIyNU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfb3V0XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0LmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX291dFxuICAgICAgdmFsIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXRcbiAgICAgIHZhbCBlcXVpdmFsZW5jZUxveWVyTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0XG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1U2V1aWxPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXRcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llck91dC50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1X291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgICAgICMjLmNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjVPdXQ7XG4gICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2llbnRSRDgzMjI1T3V0O1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9vdXQgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMubk5vbWJyZVBhcnRzRDgzMjI1T3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0O1xuICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXRcbiAgICAgICAgICAjIy5wbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlT3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICAgICAgIyMuZXF1aXZhbGVuY2VMb3llck1pbmltYWxlT3V0O1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX291dFxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNVNldWlsT3V0O1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogKHVuaXQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlZGV2YW5jZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gKCBpbnB1dCkpKVxuICAgICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luICggaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fMl9kdV84MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIxMU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZU91dC50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMTFPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0Lm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0XG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IyMubk5vbWJyZVBhcnRzRDgzMjExT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVFbGlnaWJsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlTWluaW1hbGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwU2V1aWxPdXQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVPdXQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZUVsaWdpYmxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQubWVuc3VhbGl0ZV9lbGlnaWJsZV9vdXRcbiAgICAgIHZhbCBtZW5zdWFsaXRlTWluaW1hbGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5tZW5zdWFsaXRlX21pbmltYWxlX291dFxuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMFNldWlsT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0LmFpZGVfZmluYWxlX2Zvcm11bGVfb3V0XG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVNb250YW50TWluaW1hbE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICAgICAgICAjIy5tZW5zdWFsaXRlRWxpZ2libGVPdXQ7XG4gICAgICBtZW5zdWFsaXRlX21pbmltYWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlT3V0O1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfb3V0ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwU2V1aWxPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0XG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGVPdXQ7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEluOlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVTaWduYXR1cmVQcmV0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlUHJldEluOiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudEluOiBuZXVmX291X2FuY2llbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW5cbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY29wcm9wcmlldGVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxN0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgdHlwZVByZXRJbiA9XG4gICAgICAgIHR5cGVfcHJldF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3ByZXRfaW5cbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnRJbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmFuY2llbm5ldGVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuY29wcm9wcmlldGVJbjtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuem9uZUluO1xuICAgICAgdHlwZV9wcmV0X2luID1cbiAgICAgICAgdHlwZV9wcmV0X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlUHJldEluO1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5hbmNpZW5uZXRlTG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU91dDpcbiAgICAgIChKcy5udW1iZXIgSnMudCwgIEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0XG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50T3V0LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRPdXQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uc0NhbGN1bEluOlxuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBpbmZvcm1hdGlvbnNDYWxjdWxJbiA9XG4gICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmluZm9ybWF0aW9uc19jYWxjdWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZk91dC50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dF9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0XG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmT3V0LnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb3V0IyMuYWlkZUZpbmFsZUZvcm11bGVPdXQ7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNEluOlxuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG95ZXJfcHJpbmNpcGFsX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi56b25lX2luXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIGNvbG9jYXRpb25JbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjJJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luXG4gICAgICB2YWwgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCA9XG4gICAge1xuICAgICAgbG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb3llclByaW5jaXBhbEluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy56b25lSW47XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG9nZW1lbnRFc3RDaGFtYnJlSW47XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy50eXBlQWlkZUluO1xuICAgICAgY29sb2NhdGlvbl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVJbjtcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50TWV1YmxlRDg0MjJJbjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlT3V0LnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBpbnB1dCAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQudHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRcbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZU91dC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX291dFxuICAgICAgICAgICMjLmFpZGVGaW5hbGVGb3JtdWxlT3V0O1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTdJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luXG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEluID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW5cbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY2hhcmdlc01lbnN1ZWxsZXNQcmV0SW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pblxuICAgICAgdmFsIGNvcHJvcHJpZXRlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY29wcm9wcmlldGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmNvcHJvcHJpZXRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlTW9udGFudE1pbmltYWxPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llck91dC50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dC5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2Vfb3V0XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llck91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQuZXF1aXZhbGVuY2VfbG95ZXJfb3V0XG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc091dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX291dFxuICAgICAgdmFsIGxveWVyTWluaW1hbE91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQubG95ZXJfbWluaW1hbF9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQuYWlkZV9maW5hbGVfZm9ybXVsZV9vdXRcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZU1vbnRhbnRNaW5pbWFsT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgaW5wdXQpKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0X29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0XG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJPdXQudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX291dCA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb3V0IyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlT3V0O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCMjLmVxdWl2YWxlbmNlTG95ZXJPdXQ7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNPdXQ7XG4gICAgICBsb3llcl9taW5pbWFsX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQjIy5sb3llck1pbmltYWxPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbjpcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5yZWRldmFuY2VfaW5cbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICByZWRldmFuY2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLmNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGVPdXQ6XG4gICAgICAoSnMubnVtYmVyIEpzLnQsICBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb28gKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50T3V0LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlT3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X291dC50cmFpdGVtZW50X2FpZGVfZmluYWxlX291dCAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciBpbnB1dCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQjIy5haWRlRmluYWxlRm9ybXVsZU91dDtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNDYWxjdWxJbjpcbiAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fdG9fanNvbyAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGluZm9ybWF0aW9uc0NhbGN1bEluID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmluZm9ybWF0aW9uc19jYWxjdWxfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9pbiA9XG4gICAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zQ2FsY3VsSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMudHlwZUFpZGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdE91dDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0X3RvX2pzb28gKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0XG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZU91dC50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0T3V0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dC5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0X291dFxuICAgICAgZW5kXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dF9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb3V0IDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgSnMudCkgOlxuICAgIE91dmVydHVyZURyb2l0c1JldHJhaXRlT3V0LnQgPVxuICAgIHtcbiAgICAgIGFnZV9vdXZlcnR1cmVfZHJvaXRfb3V0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCMjLmFnZU91dmVydHVyZURyb2l0T3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVOYWlzc2FuY2VBc3N1cmVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUFzc3VyZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luXG4gICAgICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fb2ZfanNvb1xuICAgIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KSA6XG4gICAgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiMjLmRhdGVOYWlzc2FuY2VBc3N1cmVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWVPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXRfdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb3V0XG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRPdXQudCkgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQubW9udGFudF9pbXBheWVfb3V0XG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50T3V0LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfaW1wYXllX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vdXQjIy5tb250YW50SW1wYXllT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZVZlcnNlZUluOiB2ZXJzZW1lbnRfYSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudEFwbEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRDaGFyZ2VzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVwZW5zZUxvZ2VtZW50SW46IGRlcGVuc2VfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnREZXR0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICA6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGFpZGVWZXJzZWVJbiA9XG4gICAgICAgIHZlcnNlbWVudF9hX3RvX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uYWlkZV92ZXJzZWVfaW5cbiAgICAgIHZhbCBtb250YW50QXBsSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9hcGxfaW5cbiAgICAgIHZhbCBtb250YW50Q2hhcmdlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfY2hhcmdlc19pblxuICAgICAgdmFsIGRlcGVuc2VMb2dlbWVudEluID1cbiAgICAgICAgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmRlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBtb250YW50RGV0dGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2RldHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgYWlkZV92ZXJzZWVfaW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuYWlkZVZlcnNlZUluO1xuICAgICAgbW9udGFudF9hcGxfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50QXBsSW47XG4gICAgICBtb250YW50X2NoYXJnZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50Q2hhcmdlc0luO1xuICAgICAgZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuZGVwZW5zZUxvZ2VtZW50SW47XG4gICAgICBtb250YW50X2RldHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudERldHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGVPdXQ6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0OlxuICAgICAgKEpzLm51bWJlciBKcy50LCAgSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlT3V0OlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXRfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRPdXQudClcbiAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVsaWdpYmlsaXRlT3V0ID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dC5lbGlnaWJpbGl0ZV9vdXRcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dC5haWRlX2ZpbmFsZV9mb3JtdWxlX291dFxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfb3V0IChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIGlucHV0KSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dCA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dFxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudE91dC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZV9vdXQgPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0IyMuZWxpZ2liaWxpdGVPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlX291dCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCMjLmFpZGVGaW5hbGVGb3JtdWxlT3V0O1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZV9vdXQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfb3V0ID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb3V0XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uc0NhbGN1bEluOlxuICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9IG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGluZm9ybWF0aW9uc0NhbGN1bEluID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uaW5mb3JtYXRpb25zX2NhbGN1bF9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPSBtZW5hZ2Vfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLmluZm9ybWF0aW9uc0NhbGN1bEluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZU91dDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZU91dDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0X3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRcbiAgICA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlT3V0LnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZU91dCA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQuZWxpZ2liaWxpdGVfb3V0XG4gICAgICB2YWwgYWlkZUZpbmFsZU91dCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dC5haWRlX2ZpbmFsZV9vdXRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dFxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX291dCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVPdXQudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGVfb3V0ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0IyMuZWxpZ2liaWxpdGVPdXQ7XG4gICAgICBhaWRlX2ZpbmFsZV9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQjIy5haWRlRmluYWxlT3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5mb3JtYXRpb25zQ2FsY3VsSW46XG4gICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgaW5mb3JtYXRpb25zQ2FsY3VsSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5pbmZvcm1hdGlvbnNfY2FsY3VsX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGluZm9ybWF0aW9uc19jYWxjdWxfaW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMuaW5mb3JtYXRpb25zQ2FsY3VsSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRPdXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0XG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50T3V0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0Lm1vbnRhbnRfb3V0XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0X29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9vdXQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQjIy5tb250YW50T3V0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19vdXQgPVxuICBvYmplY3QgbWV0aG9kIGJydXRIb3JhaXJlT3V0OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19vdXRfdG9fanNvbyAoc21pY19vdXQgOiBTbWljT3V0LnQpIDogc21pY19vdXQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYnJ1dEhvcmFpcmVPdXQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgc21pY19vdXQuYnJ1dF9ob3JhaXJlX291dFxuICAgICAgZW5kXG4gIGxldCBzbWljX291dF9vZl9qc29vIChzbWljX291dCA6IHNtaWNfb3V0IEpzLnQpIDogU21pY091dC50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmVfb3V0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHNtaWNfb3V0IyMuYnJ1dEhvcmFpcmVPdXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0T3V0OlxuICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQsICBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZU91dDpcbiAgICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50LCAgYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyT3V0OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExT3V0OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRcbiAgICA6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzT3V0LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydE91dCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIGlucHV0IC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXQuZHJvaXRfb3V2ZXJ0X291dCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlT3V0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gaW5wdXQgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dC5jb25kaXRpb25zX2hvcnNfYWdlX291dCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyBpbnB1dCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMk91dCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0LmFnZV9sNTEyXzNfMl9vdXRcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExT3V0ID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dC5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9vdXRcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vdXRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dFxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNPdXQudCA9XG4gICAge1xuICAgICAgZHJvaXRfb3V2ZXJ0X291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnRfb3V0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb25kaXRpb25zX2hvcnNfYWdlX291dCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25zX2hvcnNfYWdlX291dCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yX291dCA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMuYWdlTDUxMjMyT3V0O1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfb3V0ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IyMucmVnaW1lT3V0cmVNZXJMNzUxMU91dFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudClcbiAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCA9XG4gIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX291dF90b19qc29vXG5cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X3RvX2pzb29cblxuXG5sZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudClcbiAgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dCBKcy50ID1cbiAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luX29mX2pzb29cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICB8PiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX291dF90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pblxuICB8PiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXQgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vdXRfdG9fanNvb1xuXG5cbmxldCBzbWljIChzbWljX2luIDogc21pY19pbiBKcy50KVxuICA6IHNtaWNfb3V0IEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuXG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX291dF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX291dCBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X291dCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXQgSnMudCA9XG4gIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vdXRfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFpZGVzTG9nZW1lbnRMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA6IChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyIDogKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBvdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA6IChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGltcGF5ZURlcGVuc2VMb2dlbWVudCA6IChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50IC0+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgc21pY1xuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrXG4gICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCByZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmIDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50IDogKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vdXQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50IDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X291dCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUgOiAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiBKcy50IC0+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfb3V0IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICBcbiAgICBlbmQpIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZW5jaCBsYXcgbGlicmFyeSwgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3JcbiAgIGNvbXB1dGluZyBGcmVuY2ggdGF4ZXMgYW5kIGJlbmVmaXRzIGRlcml2ZWQgZnJvbSBDYXRhbGEgcHJvZ3JhbXMuIENvcHlyaWdodFxuICAgKEMpIDIwMjEgSW5yaWEsIGNvbnRyaWJ1dG9yOiBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZVxuICAgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBMYXdfc291cmNlXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5tb2R1bGUgQUYgPSBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5tb2R1bGUgQUZfd2ViID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViXG5tb2R1bGUgQUwgPSBBaWRlc19sb2dlbWVudFxubW9kdWxlIEFMX3dlYiA9IEFpZGVzX2xvZ2VtZW50X2FwaV93ZWJcblxubGV0IF8gPVxuICBKcy5leHBvcnRfYWxsXG4gICAgKG9iamVjdCVqc1xuICAgICAgIHZhbCBldmVudHNNYW5hZ2VyID0gZXZlbnRfbWFuYWdlclxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcbiAgICAgICAgICAgOiAoQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+IGZsb2F0KSBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAgICAgICAgICB8PiBBRl93ZWIuaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuaU1vbnRhbnRWZXJzZU91dCkpXG5cbiAgICAgICBtZXRob2QgY29tcHV0ZUFpZGVzQXVMb2dlbWVudFxuICAgICAgICAgICA6IChBTF93ZWIuY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPiBmbG9hdClcbiAgICAgICAgICAgICBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPlxuICAgICAgICAgICAgIGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuYWlkZUZpbmFsZU91dCkpXG4gICAgZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0=
\ No newline at end of file
+(function(a){typeof
+globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurable:true,get:b}),_T_));function
+b(){var
+b=this||self;b.globalThis=b;delete
+a.prototype._T_}}(Object));(function(aO){"use strict";var
+bOF=aO,bOI=typeof
+module==="object"&&module.exports||aO,io=1066,IJ="38527",II=424,s8=1650,i6=857,cG="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",nL="logement_foyer",ek=319,tE=1110,EO="Article L521-1",AV=794,kt="Paragraphe 2 : Ouverture du droit et liquidation.",AU=43200.,ox=365180284,AT="Changement",Mw="26714",i5=635,AS="EMFILE",IH="locatif.date_courante",pN=163,pM="SaintMartin",IG="1015",pL=891,ey="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AQ=4865,AR=4458,cQ="Article 1",IF="559500",fS="aide_finale_formule",dl=122,IE="35630",EN=992015837,ss="Article 31",e1="50",ID=2915,be="Unexpected '",IC=299,hn=181,IB="EACCES",AP=3862,EL=305,EM=862,s7="Article 19",cH=128,j1="Avant",EK="43000",s6="identifiant",pK="Oui",AN=2387,AO=459,s5="Article D832-26",mL=573,gU=146,mK=">",gA=575,EJ=941,i3=153,i4=731,Mv=1027,IA="EINPROGRESS",gT=1053,pJ="Article 17",aJ="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",ff="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",nK="baseMensuelleAllocationsFamiliales",Iz=933,Mu="logement_foyer.mode_occupation",AM="35762",pI=739,t="Calcul du montant de l'allocation logement",EI=358,ec=2011,r5=2023,EH=3331,Mt=462,h8="Article L841-1",EG=1183,ow=583,s4="ServicesSociauxAllocationVerseeALaFamille",AJ="186000",AK=796,AL="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AH=999,AI="16.25",AF="0.0315",AG=4379,fK="traitement_aide_finale_diminu\xc3\xa9",Ms=989,Iy=1118,Mr="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",mJ=720,Ix="40758",EF=5025,pH="e",hm=313,iJ=896,Mq=692,h7="Autre",AE="locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s",im=395,Iw=798,AD=1150,EE="Article L822-2",eb=392,ED=4178,gz="smic",ov=980,AC="39445",Iv=1071,dn="Article D842-6",Iu=1628,AB=-43,It="Neuf",Mp="EROFS",gp=485,Mn="Article 27",Mo="inf",EC="calculetteAidesAuLogementGardeAlternee",Is="EPIPE",mI=394,EB="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",Mm="41392",kb=111,AA=929,EA="Location",ah=709,Iq=4862,Ir="240400",Az="ENOLCK",tD="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",Ez="33500",ks="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",ao="Article D823-9",i2=393,ag="traitement_aide_finale_minoration_forfaitaire",Ay="ERANGE",Ip="AM",r4="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",Ml="infinity",Mk=4072,h6="2.5",Aw="locatif.loyer_principal",Ax=1114,eB="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",s3=278,Au=3194,Av="90100",Ey=2598,fb=318,ex="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Ex=2615,At="\\t",Mj=4008,Ew=955,Mi=1011,aT="examples/aides_logement/code_construction_legislatif.catala_fr",ej=391,s2=330,Ev=1542,aS="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",Mh=1537,kK=112,s1=831,iI="1000",Io=1131,mH=563,Et=2252,Eu=701,dX="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",Es="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",i1=599,As=1146,In=1638,Mg=3621,Ar="Couple",mG="SaintPierreEtMiquelon",Mf="ESOCKTNOSUPPORT",cF="PrestationsFamiliales",Er="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",iH=110,Me=464,Im=1103,Md="214700",Aq=352,go=615,ei="Calcul\xc3\x89quivalenceLoyerMinimale",Ap=1488,Mc="42926",Mb="Autres",r3=-32,mF=889,Il="39016",iG=632,s0=847,pG="AllocationLogementFamiliale",Ma=3718,ew=1023,L$="interfaceAllocationsFamiliales",Ao=1616,il=1076,mE="AllocationLogementSociale",ev=323,r2=1862,An=1487,Am="plafond_l512_3_2",bt=117,sZ="Chapitre II : Des contributions pour le remboursement de la dette sociale.",a5="examples/allocations_familiales/decrets_divers.catala_fr",ka="compl\xc3\xa9ment_d\xc3\xa9gressif",ou=348,r1="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",Eq="accession_propri\xc3\xa9t\xc3\xa9.copropri\xc3\xa9t\xc3\xa9",L9="240200",L_="Assert_failure",tC="Section 1 : Secteur locatif ordinaire",L8="568400",Al=3955,L7=496,tB="0.32",Ik="40961",kJ="Non",Ak="ENOTCONN",Ij=1664,kI="Article R824-2",Ii=1128,L6=1e14,Aj="D331_76_1",nJ="Article R521-3",Ai=3400,Ep=935,bS=2022,Eo="Fatal error: exception %s\n",L5="34865",Em=865,En=1623,sY="261800",El=1429,os=740,ot=349,or=725,mD="Article 2",kH=146097,dC=256,mC=558,Ah="Article L521-3",Ek="Article R822-1",mB=874,Ag="45064",Ei=4983,gy=614,Ej="taux_francs_vers_euros",cp="Archives l\xc3\xa9gislatives et r\xc3\xa9glementaires",Af="ENOSPC",fR="abattement_d\xc3\xa9pense_nette_minimale_d832_10",Eh=699,L4="mensualit\xc3\xa9_\xc3\xa9ligible",oq="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",i0=440,pF="ENOENT",L3=1395,Eg=3265,Ad="0.0006",Ae=315,r0="EnfantLePlus\xc3\x82g\xc3\xa9",Ih=259,Ac=751,L1=437,L2="EOVERFLOW",nI=885,b3="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",Ig=1012,If="228000",tA="ENOTEMPTY",Ee="Article 13",Ef="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",L0=4719,Ed="35947",Ie="D331_59_8",LZ="Loyer",Id=162,pE=564,Eb=3583,Ec=1496,Ib=1724,Ic="brut_horaire",nH=647,Ea="x",Ia=1187,Ab="Sous-section 1 : Aides personnelles au logement",j$=335,LY="calculAidePersonnaliseeLogementAccessionPropriete",gn=547,j0="Article D755-5",a3=588,LX=4166,LW="Article D842-4",LV=791,sr="%d",LU=4218,D$="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",iF=637,fQ=1900,mA=285,H$="buffer.ml",gx=708,d="Prologue : aides au logement",z="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",Aa=1624,D_=1559,LT=4785,D8="39590",D9="accession_propri\xc3\xa9t\xc3\xa9.date_signature_pr\xc3\xaat",H_="ENOBUFS",D7=3557,op=527,nG=113,z$=1478,hl=2008,H9="0.0179",mz=1089,gw=1051,D6=908,j_=1173,z_=3446,pD=681,z9=3838,H7="245700",H8=1474,B="Prologue",LS=760,pC=451,my="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",D5="Metropole",cA=100,c8=1021,kG="prise_en_compte_personne_\xc3\xa0_charge",z7=4243,z8=702,ak="3",bd="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",z6=230,H6=1614,LR=413,pB="169.",eU=0.5,z5=790,c$="Article D521-1",iZ=622,nF=399,z4=3879,pA=965,nE="Article D842-11",ea="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",bc=107,H5=381,pz=571,z3=345,oo="Article D842-12",rZ=937,nD="prestations_familiales",LQ=690,kF="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",H4="26440",LP=2646,gm=590,mx=649,H3=4505,LO="201700",kE="Unix.Unix_error",H2=1139,D4="calculAidePersonnaliseeLogement",mv=4278,mw=1088,gI=347,z2="Stack_overflow",bH=767,fB="condition_2_r823_4",bF="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aW="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",LN=1008,mu=585,H1="/static/",H0=3628,on=253,z0=368,z1=894,D3="Not_found",zZ=235,rY="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",HZ="1085",LM=1490,zY="41268",D2="calcul_apl_logement_foyer.date_courante",bp="examples/allocations_familiales/epilogue.catala_fr",tz=695,D1=1607,nC="Mayotte",cm=848054398,LL="smic.date_courante",HY=4022,HX=2247,nB="1224",D0="calcul_apl_locatif",LK="accession_propri\xc3\xa9t\xc3\xa9.situation_r822_11_13_17",cl="calcul_plafond_mensualit\xc3\xa9_d832_10_3",jZ=979,h5=1049,rX="rmdir",DZ=696,nA=1069,LJ=32752,sq="19100",HW="33623",LI="ELOOP",HV="37478",gS="calcul_nombre_parts",nz=280,sp="Article R842-5",ty="Article 23",h4=1026,ny=149,al="montant",eA="Article L521-2",b0="examples/allocations_familiales/../smic/smic.catala_fr",zW="calculAllocationLogementLocatif",zX="false",HU="37906",py="Invalid integer: ",HT="PasDeChangement",bN="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",ik=875,bo=106,LH=346,mt=186,d8=0x80,so="Fatal error: exception ",iE=663,gR="Chapitre 1er : Dispositions relatives aux prestations",sX="\xc3\xa2ge",px="\xc3\xa9ligibilit\xc3\xa9_commune",sn="0.0234",DY="43378",HS=3538,DX=1926,LF="25978",LG=3208,om="src/calendar_builder.ml",pw=493,LE="Section 2 : R\xc3\xa8gles de non-cumul",HR=4895,LD="_",nx=833,HQ="eligibilitePrimeDeDemenagement",sW="compare: functional value",cw="0.",gH=444,zU="40928",zV="19300",h3=529348384,LC=1564,kD=721,jY=978,zT="197700",zS="Invalid_argument",ij=656,DW="EndCall([ ",kr=823,nw="0.9",sm="prise_en_charge",LB="Article R822-22",HP="calcul_aide_personnalis\xc3\xa9e_logement",LA=1191,zR=249,DU="34301",DV="577500",zQ="%ni",zP=949,gv=324,DT=1465,bV=86400.,ar=2020,Lz="PersonneSeule",DS="ENOMEM",DR=-45,kC=559,HO="0.0238",Lx="Article 9",Ly="225100",HN=1610,Lw="AutresPersonnes",gQ="6",zO="EPROTONOSUPPORT",ol=602,HL="173600",HM=858,p="0",aV="Section 3 : Logements-foyers",zN="ENETRESET",zM=3149,Lv="EINVAL",Lu="EDOM",c="examples/aides_logement/prologue.catala_fr",sV="Article L161-17-2",Lt="EFBIG",DQ=2410,Ls="eligibiliteAidesPersonnelleLogement",zL=4198,bl=248,zK="PlusDeTroisEnfants",fa=341,pv=651,HK=1510,iY=2007,tx="208200",zI="Zone1",zJ="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",HH="Locataire",HI="37457",HJ=301,Lr="562800",HG="535744",zH="235800",DP="resetLog",X="AllocationsFamiliales",HF="\xc3\xa2ge_l512_3_2",Lq=3268,zG="situation_familiale_calcul_apl",rW="GardeAlterneeAllocataireUnique",HE=1880,pu=1025,zF=2782,DO="haut",HD=1644,HC=1476,sU=1107,kq=1024,Lp=1143,zD="204761",zE="3.1",nv=726,Lo=802,e$=133,Ln="35780",zC="calculAidePersonnaliseeLogementFoyer",iD=636,pt=567,ms=982,Lm=184,zB=2613,sT=366,fJ=0xffffff,Ll="34829",cg=1082,mq=524,mr="locatif",nu="Titre III: Titre III : Dispositions communes relatives au financement",DM="36378",as="Calculette globale",DN="EISCONN",HB=2567,Lk="::z",zA=1670,HA=1416,ok=1091,iX=435,kp=671,kB="Article R824-1",dj=1994,zz=465,dB=2010,bQ="Prologue : prestations familiales",zy=1531,sl=2147483647,DL=4513,Li="774",Lj=208,DK=689,zx=", characters ",DI=4924,DJ=757,Lh=0x7F,Hy=4289,Hz="180100",gP="BaseMensuelleAllocationsFamiliales",DH="819",sS="4999",Hx="prestations_familiales.r\xc3\xa9sidence",bs="Chapitre IV : Calcul des allocations de logement en secteur accession",Hw="AllocationJournali\xc3\xa8rePresenceParentale",DG="ESHUTDOWN",Hv=".0",Lg="36733",zw=1665,rV="AllocationFamilialesAvril2008",eT=328,DF=693,DD=855,DE="AllocationRentreeScolaire",zv="mensualit\xc3\xa9_minimale",kA="2.",zu=691,Hu=2589,zt="Concubins",gG=578,co="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",zs=4901,DC=4911,Lf=224,zq=816,zr="SaintBarth\xc3\xa9lemy",rU=357,am="Partie l\xc3\xa9gislative",gl=2003,bw="examples/allocations_familiales/securite_sociale_D.catala_fr",Hs=4107,ko="Article R823-4",Ht="32956",DB=1504,Hr="294500",DA=1612,sR="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",d$="RessourcesAidesPersonnelleLogement",Hq=2868,iC=140,gO="Montant des plafonds de ressources",bx="Annexe",gu="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",Le="3524",Dz=2362,Hp="Article D832-27",ps=723,Dy=1101,sQ=3763,jX="500",Ho="Zone3",Ld="locatif.type_aide",mp=187,pr=770,zp="40144",nt=581,eh=2015,fE="prise_en_compte",Dx=3985,zo=838,fI=613,sk="223900",hr=718,zn="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",pq=138,ns=1998,w="Livre VIII : Aides personnelles au logement",Hn="225500",mo=905,kn="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",Dv="38892",Dw="accession_propri\xc3\xa9t\xc3\xa9.mensualit\xc3\xa9_principale",sP="nan",Hm="calculNombrePartLogementFoyer",gF=646,kz="Impay\xc3\xa9D\xc3\xa9penseLogement",Lc=1403,jW=712,bv="Calculette avec garde altern\xc3\xa9e",Hl="ECHILD",Lb=0xdfff,zm=2148,eS="/",iB="4.3",Hk="ETOOMANYREFS",jV=756,oj=1017,Hj=951,Du=1179,pp="ENOTDIR",zl="ETIMEDOUT",tw=1073741823,Dt="135000",Ds="0.0068",Hi="\\r",zk="34600",nr=560,Dr=154,La="calcul_allocation_logement",po=513,zi="coefficient_prise_en_charge",cv=1085,zj=206,Dq="src/time_Zone.ml",Hh=4045,j9="Article D161-2-1-9",Dp=674,zh="EWOULDBLOCK",nq="Guyane",np="PasDeTravaux",Do=4697,gt=311,km=883,iA=255,zg=4439,K$=3250,K_="Revenu",dk="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",bU="droit_ouvert_majoration",D="Partie r\xc3\xa9glementaire",Dn=2268,Dm="Sous-section 4 : Prise en compte du patrimoine",j="D\xc3\xa9clarations des champs d'application",Hg="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Hf="End_of_file",K9="calcul_apl_logement_foyer.condition_2_du_832_25",fA="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",He="calculAllocationLogementFoyer",fH="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",pn="Article 24",sO="Failure",K8="267871",iW=662,zf=1480,oi=771,K7=4892,mn=218,Hd="167800",tv=247,a6="CalculetteAidesAuLogement",iz=664,Dl="ENETDOWN",jU=684,iy=715,sN="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",Hc=0xdc00,ze="389618",Hb=1494,pm="3.",K6=4844,Dk=3225,Ha=1473,zd="185800",K5="0.0201",iV=880,K4="Sys_error",pl=130,no=275,gE="Article D521-2",zc=1630,fD=60.,tu="nombre_personnes_\xc3\xa0_charge_prises_en_compte",gk="Sous-section 4 : Assurance vieillesse",Dj="Printexc.handle_uncaught_exception",eR="Article D832-24",sj="30500",pk=618,e_=1079,zb=1580,mm="int_of_string",G_="194810",G$=3822,za="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",Di="Article 37",V="examples/aides_logement/arrete_2019-09-27.catala_fr",y$="39340",y_=":z",G9="name",pj=103,y9=1122,nn=966,G8=4795,aP="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",G7="DateDeNaissance",Dh=792,G6=1622,bT="traitement_aide_finale_redevance",Dg=132,Dd="1.4",De=698,Df=803,G5=" ])",rT="31797",G4="19484",y8=354,gj=432,gi=325,dA="Article 7",Dc="ENODEV",K3="%Li",G3=864,G2=3610,y6=4120,y7=2771,Db=1014,oh=591,rS="r\xc3\xa9muneration_mensuelle",G1=1936,og=960,d7="Article 14",G0="34570",sM="date_de_naissance",pi=1090,Da=795,of="base_mensuelle_allocations_familiales",K2="MoinsDeTroisEnfants",dc=344,oe="_z",iT=2000,iU=1951,K1="locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers",od=762,GZ=860,ph=738,K0=593,nm=136,db="Titre IV : Allocations de logement",y5=5034,nl=959,e0=137,ez="InterfaceAllocationsFamiliales",GY="retrieveRawEvents",C$=3437,y4=985,y3=1681,C_=4078,jT="Pendant",y2="%a",GX=32044,fG=", ",fz="5422",dE=2018,C9="17012",nk="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",y1="AllocationJournalierePresenceParentale",yZ=3921,y0=4891,nj=579,ky=710,b9="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",C8="' kind for the enumeration 'ElementPrestationsFamiliales.t'",ml=682,bE="Prestations familiales",GW=467,KZ="src/date.ml",C5="Enfant\xc3\x80Charge",C6="calculette",C7="GardeAltern\xc3\xa9eAllocataireUnique",e9="Article D823-16",C4="172500",yY=410,C3=1109,KX=754,KY="EADDRINUSE",KW="n_nombre_parts_d832_25",yX="ENOSYS",tt="Apres",yW="locatif.zone",mk=1929,yV=4156,hh=359,bO="examples/aides_logement/../prestations_familiales/prologue.catala_fr",kx=887,KV=408,yU=258,C2="179800",fP=" ",yT=361,N="Secteur locatif",C1="Undefined_recursive_module",KU=1619,O="output",pg=1074,mj="accession_propri\xc3\xa9t\xc3\xa9",yS=1194,GV=1193,mi=884,KT="base_mensuelle_allocations_familiales.date_courante",sL="199900",yR=752,yQ=1424,c0=-976970511,yO="' kind for the enumeration 'SituationObligationScolaire.t'",yP="%.16g",C0="220100",KS=189,jS="droit_ouvert_forfaitaire",mh=620,sK="%i",rR="0.01",CZ="262985",GU="409505",pf=670,yN="LogementFoyer",GT="33026",CY="139700",ni="PrestationAccueilJeuneEnfant",ii=629,CX="Article L822-4",ts=856,GS="41252",yM=1618,ih=640,CV="0.1",CW="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",mg="5399",pe=337,e8=123,nh=650,CU=3169,oc=570,KR="accession_propri\xc3\xa9t\xc3\xa9.local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire",mf="0.0173",R="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",GR=806,GQ=159,yL="LocationAccession",ng=1067,CT="CDI",e7=577,rQ="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",KQ="41338",di=0xff,me="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",si=-12,ob="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",md=458,oa=704,yK="Article 15",GP=3284,fF="0.75",kl="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",KP="22355",n$=3654863,CS="140800",cV=436,tr="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yJ=455,CR=1997,GO="163000",KO=991,jR="0.5",KN="Article R842-14",yI="fd ",GN=3904,GM=1120,KM=2829,CQ=1233,GL=1116,yH="194200",GK="41751",mc=871,CP=409,GJ="181800",yG="41316",a4="traitement_aide_finale_contributions_sociales_arrondi",yF=993,GI="cat\xc3\xa9gorie_calcul_apl",iS=338,cc="Prise en compte des ressources pour les aides personnelles au logement",GH="757",rP=827,CO=4479,kw="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",yE=2032,pd=442,KL="%B",gh=2001,rO="Compl\xc3\xa9mentFamilial",yD=4122,ix=633,KK="smic.r\xc3\xa9sidence",h2=489,aE="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",j8=1018,CN="Article D832-18",dV=108,GG=1984,h1=-2147483648,x="1",fe=2002,yC=1708,GF="Chapitre II : Dispositions applicables aux ressources",yB=522,CM=606,GE=1657,yA="Article R822-7",CL="42605",GD=4307,yx="VendeurQuandDemandeurAContratLocationAccession",yy="Article R755-0-2",yz="EAGAIN",CK="calculNombrePartsAccessionPropriete",sJ=406,yw=4947,sh=": Not a directory",KJ="allocationFamilialesAvril2008",yv="b",KI="Article D521-3",GC=4265,CJ="accession_propri\xc3\xa9t\xc3\xa9.nombre_personnes_\xc3\xa0_charge",aA="CalculAidePersonnalis\xc3\xa9eLogement",yt="D331_63_64",yu="EDESTADDRREQ",d_=2012,CI=287,CH="Out_of_memory",n_=86400,KH="42469",ys=4897,pc=530,an="4",C="examples/aides_logement/code_construction_reglementaire.catala_fr",tq="index out of bounds",nf=601,kv=668,pa=903,pb="_bigarr02",sI=1006,yr="31264",gD=881,KG=0xffffffff,KF="LaR\xc3\xa9union",mb="Article L822-5",eQ=0xffff,KE="accession_propri\xc3\xa9t\xc3\xa9.type_travaux_logement",ig=2009,Gz=3836,GA=3262,GB="EBUSY",yq="ENETUNREACH",n9=417088404,Gy=222,KD="%.17g",rN=400,n8="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",dU="100.",dh=3600,CG="1.25",ne=143,KC=2282,gg=1050,yp="44729",KB=3124,fd="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",hg=963043957,eZ=126,T="5",iw=142,o$=741,iR="AllocationSoutienFamilial",yo=840,CF="SousLocataire",Gx=4527,Gw="34713",n7=416,ad="Section 1 : Calcul, liquidation et versement des aides",ku=124,hf="Article L512-3",Gv="0.98",KA=3417,tp=1626,Gu="633129",Kz=2578,dH=150,to=427,yn="41440",nd=899,dD="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",e6=135,dT="Sous-section 2 : Calcul de l'aide en secteur locatif",Ky=1112,ma=252,CE="enfant_le_plus_\xc3\xa2g\xc3\xa9",H="examples/allocations_familiales/prologue.catala_fr",Kx="EPROTOTYPE",_="CalculAidePersonnalis\xc3\xa9eLogementFoyer",Gt="PriseEnCharge",e5=".",ym="EINTR",iQ=147,CD=0xf0,hq=634,Kw=4006,yl="eligibilitePrestationsFamiliales",cY="12.",CC=744,Gs=694,n6="Guadeloupe",yk=276,nc="230500",hp=116,yi=1482,yj="enfantLePlusAge",eY=576,Gr="EALREADY",nb=365,n5=627,h0=813,CB=1007,Kv=294,bD="traitement_aide_finale_montant_minimal",yh="impossible case",em="examples/allocations_familiales/securite_sociale_R.catala_fr",yg=1095,gs="R\xc3\xa8gles diverses",iP=968,CA=-1080,Gq=500,tn=291,Ku="EAFNOSUPPORT",Kt="18185",Cz=969837588,ie=872,Gp="PM",yf="SaintBarthelemy",iv=638,Ks="ENFILE",Go=3673,Kp=-1023,Kq=2717,Kr=3801,Ko=859,ye="ressources_m\xc3\xa9nage_avec_arrondi",Cy=4241,n4=763,Km="ouvertureDroitsRetraite",Kn="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",Cx="204700",sg="Article L755-12",yd="TravauxPourAcquisitionD832_15_1",Cw="Ancien",sf="lib/read.mll",hk="1229",yc=1530,Kk="Article premier",Kl=939,yb=501,a8="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",kk=1582,el=1048,gf='"',Kj="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",bJ=1022,l$="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",az="CalculAllocationLogement",Ki="3539",tm="<",ya=931,Gl="208500",Gm="prestations_familiales.date_courante",Gn=0x800,Cv="EPERM",Kh=869,hZ=617,hY=182,l_=398,na=331,iO=327,o_="\xc3\xa9ligibilit\xc3\xa9",x_=3943,x$=0.012,Gj=3958,Gk="233000",c_=719,Gi="calculAidePersonnaliseeLogementLocatif",b_="Article 33",rM=156,Cu="InfosLogementFoyer",Kg="M\xc3\xa9tropole",x9=842,Ct="40696",Kf="ressources_m\xc3\xa9nage_arrondies_seuil",l9=204,se="Article D815-1",id="conditions_hors_\xc3\xa2ge",x8=997,m$=727,aR="traitement_aide_finale_abattement",sd=534,bi="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",x7=726928360,l8=562,Gh="221100",x6="([^/]+)",sH=165,e4=1171,Cs="Article 39",Gg=700,tl=0xf,bM=809,x5="798",Cr="BailleurSocial",Gf="logement_foyer.nombre_personnes_\xc3\xa0_charge",jQ="montant_initial_m\xc3\xa9tropole_majoration",eX=125,Gd=2796,Ge=490,Cq=658,sG=818,Cp=1092,Gc="Division_by_zero",o9=736,rL="Article L832-3",x4=3352,Co=430,x3=708012133,Ke="SituationObligationScolaire",aY=877,ge=589,Cn="AutrePersonne\xc3\x80Charge",o8=879,Kd="44440",hX=532,Gb=1200,Kc="AllocationJeuneEnfant",o7=566,d6=2014,Cm="22262",Ga=552,Ck="Article D842-17",Cl=380,l7=118,iN=973,F$="EADDRNOTAVAIL",Ka=697,Kb="Article L751-1",o6=119,cX=104,kj="montant_avec_garde_altern\xc3\xa9e_majoration",J$="70",x1="calculette_sans_garde_altern\xc3\xa9e",x2="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",m_=321,x0=1975,F_="version_avril_2008",xZ="38361",m8=127686388,m9=714,F9="locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9",gd=2013,Ci="ouverture_droits_retraite",Cj=102,jP=340,J_=1486,l6=722,l5="100000.",xY="18261",m7=652,Ch="logement_foyer.ressources_m\xc3\xa9nage_arrondies",eg=101,o5="calcul_nombre_parts.situation_familiale_calcul_apl",Cg="body",n3=642,dQ="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",xX="Unexpected '%s' kind for the enumeration 'Collectivite.t'",hj=1e7,tk="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Cf=1633,ki=254,J9="calcul_apl_logement_foyer.zone",Ce="accession_propri\xc3\xa9t\xc3\xa9.zone",J8="6.",xW="1003",Cc="ECONNABORTED",Cd="EFAULT",he="Article L841-2",J7=" : flags Open_text and Open_binary are not compatible",xU=1516,jO=902,xV="EDEADLK",Cb="' kind for the enumeration 'PriseEnCharge.t'",J6="EIO",kh="Article D832-15",gC="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",F8="43248",hi=1992,d9="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",xT="\\\\",fO=584,v="Code de la construction et de l'habitation",F6=1489,F7="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",J5="Article 38",F5=188,J4=1045,Ca="0.04",J3=160,F4="0.0226",xS="192500",J2="230700",sc=926,B$="0.0463",F3="217600",xR=4708,sF="GardeAlterneePartageAllocations",J1=519,B_="EHOSTDOWN",sE="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",o3=528,o4="0.55",xQ=474,o2=109,dG="droit_ouvert",I="Champs d'applications",xP=1105,B8=4569,B9=952,B7="ENOTSOCK",o1=669,tj=995,gr=326,xO="locatif.nombre_personnes_\xc3\xa0_charge",af="ContributionsSocialesAidesPersonnelleLogement",ic="Article D832-10",J0=2614,bP="Interface du programme",sD=-97,n2=976,cn="examples/aides_logement/archives.catala_fr",JZ=469,B6=953,o0=666,iM=1461,xN=1713,rJ="Article D823-20",rK="ServicesSociauxAllocationVerseeAuxServicesSociaux",fC="d\xc3\xa9pense_nette_minimale_d832_27",m6=195,F2="218700",eP="1.",oZ=443,F0=3599,F1=1015,JY=1492,B5="EOPNOTSUPP",FZ="DecisionTaken(_)",xM="20",B4=4225,FY=1574,xL="45200",cT="d\xc3\xa9pense_nette_minimale",JX=2440588,B3=954,n1=728,JW="calcul_apl_logement_foyer.mode_occupation",rI="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",JV=1202,FX=4503,JU="ECONNRESET",kg="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",ti=1189,xK="ESPIPE",FW=4210,JT=4338,sC=388,th="Article D823-17",B2="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",FV=1553,oY=546,m5=596,B1="E2BIG",oW=2440587.5,oX="AllocationLogement",FT="5186",FU="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",xJ="accession_propri\xc3\xa9t\xc3\xa9.date_courante",B0="calcul_apl_logement_foyer.situation_familiale_calcul_apl",FS=155,xI="142303",hW=316,FQ="37778",FR=4828,xH=296,JS=2378,oV=565,oU=569,JR=799,hd="Article D832-11",FP="LaReunion",JQ=4871,sB=971,aZ="Montant du salaire minimum de croissance",JP="AgrandirOuRendreHabitableD331_63",FO=386,xF="0.3",xG="true",bk="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",BZ=2672,Q="Titre II : Dispositions communes aux aides personnelles au logement",tg=426,FN=3834,sb=214,JN="25116",JO=1177,rH="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",m4=1068,sA="1500",FM=" is too large for shifting.",JM="237200",l4="Map.bal",BX="5208",BY="0.08",kf="242800",xD=2690,xE="@[",av="Titre III : Aide personnalis\xc3\xa9e au logement",JK=1485,JL="Apr\xc3\xa8s",FL=1185,ai="Code de la s\xc3\xa9curit\xc3\xa9 sociale",BV="42892",BW=4468,JJ=4498,BU=3549,FK=3308,BT=4394,n0="ml_z_overflow",xC="1.8",j7="contributions_sociales.date_courante",sa=807,r$=268,nZ=653,FJ=3808,xB="calcul_apl_logement_foyer.redevance",l3=582,xA=4899,BS=-752863768,FI=4650,r_="Article D832-17",m3=904,tf="202500",gN=705,b1=765,BR="allocationsFamiliales",JG="Article 10",JH=1181,JI="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",j6=167,FH="582700",JF="4986",l2=888,m2=433,aj="CalculAidePersonnalis\xc3\xa9eLogementLocatif",JE=3491,sz=197,m1=531,cS="abattement_d\xc3\xa9pense_nette_minimale",hV=811,BQ="Sys_blocked_io",rG="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",cy="Articles valables du 1er octobre 2020 au 1er octobre 2021",FG=450,xz="0.0588",m0="Chapitre 2 : Champ d'application.",ho="Chapitre 2 : Champ d'application",xy="EXDEV",BP=3939,BO=3281,oT=457,ef=0xFF,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",c7="Article D842-15",cR=892,oS=1010,bu=246,ib=441,rF="37900",xx="%u",ke="Article L831-1",aK="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",gB="calcul_\xc3\xa9quivalence_loyer_minimale",FF="logement_foyer.zone",JD="type_pr\xc3\xaat",FD=3216,FE="EHOSTUNREACH",xw=1718,JC=405,cf="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",xv="19402",JB=4010,ab="2",cu=127,xu="Article 30",FC="@{",xt=4039,b7="Montant de la base mensuelle des allocations familiales",nY=886,FB=" : flags Open_rdonly and Open_wronly are not compatible",xr=1620,xs="0.232",te="OuvertureDroitsRetraite",BN=1703,Fz="Zone2",FA="43505",oR="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cU="-",BM=950,gc=803994948,BL=3652,mZ=336,l1=603,xp="n_nombre_parts_d832_11",xq=216,Fy=" : file already exists",gb=397,xo=2291,hc="EffectiveEtPermanente",BK=1548,JA=987,xn=1499,Jy="calculAllocationLogementAccessionPropriete",Jz="41481",BJ=2041,hU="0.0045",fy="Date d'ouverture des droits \xc3\xa0 la retraite",xl=866,xm=1099,BI="retrieveEvents",Jx="accession_propri\xc3\xa9t\xc3\xa9.date_entr\xc3\xa9e_logement",Fx="ENOEXEC",BH="2699",iu=644,nX=625,xk="prestationsFamiliales",Fw="Infini",xj="\\b",nW="Article 43",l0="Martinique",BG=2903,mY=404,aM="Titre IV : Allocations de Logement",dS="Article D832-25",Fv="EPFNOSUPPORT",lZ=487,xi=12520,BF="ENOTTY",xh="ENXIO",Jv=-46,Jw="Collectivit\xc3\xa9",Js=2806,Jt="42228",Ju=401,aQ="Chapitre 1er : Allocations familiales",nV=981,cz="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",xg="AllocationEducationEnfantHandicape",it=2016,BE="AllocationRentr\xc3\xa9eScolaire",Fu=1408,oQ=963,dp=1000,S="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",ac="",BD="^",td=737456202,oP="Sous-section 2 : Principes de neutralisation et d'abattement",gM=3600.,Jr=4829,lY="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",Jq=86400000,hT=0x3f,BC="' kind for the enumeration 'Collectivite.t'",tc="184000",xf=334,Fs="251500",Ft=758,gq="Article 16",Jp="Article D842-9",Fr="Match_failure",Jo=4499,Jn=759,xe="Bailleur",nU=716,ax=2021,xd=3848,mX="0.085",j5="CalculNombrePartLogementFoyer",fN="d\xc3\xa9pense_nette_minimale_d832_10",dF=0x00,BB="35130",jN="montant_initial_majoration",fc="+",xc=2174,Bz=4501,BA="ESRCH",kd=339,tb="Section 3 : Conditions relatives au logement",Bx=4206,By="1057",da=587,Jm=179,xb=3555,Fq=425,Jl="%li",Bw="234600",is="Smic",mW=342,Bu=4632,Bv=1608,Jk="39051",oO=3354,Fp="20900",oN="calcul_apl_logement_foyer",ta="208600",Jj=1484,Fo=373,Bt=1595,Jh=829,Ji=4465,xa=1569,rE=267,ce=431,oM=2299161,Jg="impayeDepenseLogement",Fn=801,oL=962,rD=753,Je="calcul_nombre_parts.condition_2_du_832_25",Jf="logement_foyer.redevance",Fm=0xe0,Fl="z",Bs="20100",nT=873,Fj=1126,Fk="%",Jc=4959,Jd=1523,lX=882,Bq="D331_32",eW="contributions_sociales",Br="ENAMETOOLONG",oK=2400000.5,mV=580,Bp=1138,Jb=1136,mU=526,bC=1020,dP=250,Bo="EMSGSIZE",G="Secteur logement-foyer",Fi="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",sy=1196,rC="Article L831-2",Bn="ECONNREFUSED",L="Allocations familiales",iL=707,Ja=3898,w$=1621,mT=1034,I$=1080,Bm="locatif.ressources_m\xc3\xa9nage_arrondies",Fh="0.027",w8=3350,w9="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",w_="allocations_familiales",r9=1255,e3=1170,fM=351,Bl=1686,b8="examples/allocations_familiales/securite_sociale_L.catala_fr",Fg=4494,oJ="Article 8",mS="Article R521-1",eV=0x8000,Ff=245,bI=2019,s$="jsError",dR=964,bG="Chapitre Ier : Champ d'application",I_="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",Bk="43074",Fe="6.55957",lW="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",c9=969,Fd="eligibiliteAidePersonnaliseeLogement",oI=1174,I9=4144,Fc="InfosLocatif",e2=320,ia=129,j4=486,lV=958,dz=766,Fb="\n",fL="abattement_d\xc3\xa9pense_nette_minimale_d832_27",w7=497,aI="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",rB="3.7",Fa=4236,h$=537,gL=483,$="Tous secteurs",Bj=3170,c6=1033,dO="calcul_plafond_mensualit\xc3\xa9_d842_6_base",mR=-48,iK=2005,I8=1692,rA="9",h_=423,E$="EBADF",Bi="1025",cx="camlinternalFormat.ml",h9=312,oH=549,sx=1729,E_="EMLINK",I7=943,oG=148,w5=2310,w6=1675,Bg=4033,Bh="132000",oF=730,rz="Article R822-25",E8="0.0185",E9="924600",oE=713,dm=2017,E7=1124,I6="date_naissance",oD=343,gK=317,lU="Article R822-2",U="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",ir=878,eE="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",w4=1141,r8="obligation_scolaire",sw="EEXIST",sv=846,Bf=32082,nS=733,ee=121,oC=961,I5="prestations_familiales.prestation_courante",j3=1999,Be="\\n",I4="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",eC=544,nR=120,hb="16",Bd="Article D832-14",r7=512,mQ=724,Bc=3660,E6=0x7ff0,E5="eligibiliteAllocationLogement",I3=861,E4="montant_forfaitaire_charges",j2=177,bn="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",Bb="Ascendant",E3="0x",I2=3853,lT="0.005",o="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",ga=484,w3=797,nQ="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",E2="locatif.situation_familiale_calcul_apl",oB=645,I1="40888",w2="0.208",E1="bas",E0="210900",I0="219900",w0="r\xc3\xa9gime_outre_mer_l751_1",w1="Invalid function call ([ ",a7="traitement_aide_finale",ed=105,wZ="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",nP="Article R512-2",Ba="31664",EZ=1135,wY=820,EY="44693",ry="2710",nO="0.45",IZ=1914,cW=429,A_="Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'",A$="str.ml",s_=158,P="input",wW=4903,wX="39839",A9="\xc3\xa9ligibilit\xc3\xa9_logement",su="0.2",lS="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",EX=4346,cd=390,IY=498,f$="examples/aides_logement/autres_sources.catala_fr",A8=2627,mP=283,IX="Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",wV="calculAllocationLogement",EW=3554,IW=4004,st="mkdir",ha="Article L822-3",wU="logement_foyer.situation_familiale_calcul_apl",aa="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",A7=1013,EV=825,oA=": No such file or directory",rx=266,iq=655,gJ="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",hs="Titre 5 : D\xc3\xa9partements d'outre-mer",wT=948,f_="src/printer.ml",EU="766",cP="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",wS="locatif.colocation",A6="calculetteAidesAuLogement",r6="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",cZ=151,ET=1137,IU="Descendant",IV=2334,b2="\xc3\x89ligibilit\xc3\xa9AllocationLogement",bh="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",mN=600,mO=626,IT="\xc3\xa9ligibilit\xc3\xa9_apl",rw="Demandeur",A5=1097,ES="taux",wR=1587,cb="CalculAllocationLogementLocatif",A4="BeginCall([ ",wQ=868,ER=0xFE,IS="ENOPROTOOPT",dW=329,wP=3988,A3=3840,kc="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",A2="GardeAltern\xc3\xa9ePartageAllocations",bq="\xc3\x89pilogue",A1="943900",Y="CalculAllocationLogementFoyer",A0="bmaf",lR=1166,IQ="calculEquivalenceLoyerMinimale",IR=867,wO=472,AZ="contributionsSocialesAidesPersonnelleLogement",nN=2006,ip="0.95",IP="ressourcesAidesPersonnelleLogement",rv=363,wM="Pervasives.do_at_exit",wN="utf8",AY="222300",EQ=863,ru="ComplementFamilial",IO="225000",AX="locatif.logement_est_chambre",lQ=529,wL=4546,IN=1697,wJ="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",wK="EISDIR",IM="0.0283",IL=854,EP="logement_foyer.date_courante",s9="0.16",wI=4158,bb="Article 18",AW="36815",nM=643,IK="accession_propri\xc3\xa9t\xc3\xa9.situation_familiale_calcul_apl",oz=134,mM=1167,oy=387,eD="Section 2 : Conditions relatives aux ressources",aF="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function
+bNN(d,b,e,c,f){if(c<=b)for(var
+a=1;a<=f;a++)e[c+a]=d[b+a];else
+for(var
+a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function
+bNO(b,d,c,e){for(var
+a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?p1(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else
+if(b.t==2&&f==b.c.length){b.c+=d.t==4?p1(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pP(b);var
+g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var
+a=0;a=0;a--)h[f+a]=g[e+a];else{var
+i=Math.min(c,g.length-e);for(var
+a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function
+ht(a){if(a.t==2)a.c+=i$(a.l-a.c.length,"\0");else
+a.c=p1(a.c,0,a.c.length);a.t=0}function
+MI(a,b){if(a===b)return 1;a.t&6&&ht(a);b.t&6&&ht(b);return a.c==b.c?1:0}function
+bOv(b,a){throw[0,b,a]}function
+M6(a){if(a.length<24){for(var
+b=0;bcu)return false;return true}else
+return!/[^\x00-\x7f]/.test(a)}function
+tV(e){for(var
+j=ac,c=ac,g,f,h,a,b=0,i=e.length;br7){c.substr(0,1);j+=c;c=ac;j+=e.slice(b,d)}else
+c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else
+if(a>eQ)c+=String.fromCharCode(0xd7c0+(a>>10),Hc+(a&0x3FF));else
+c+=String.fromCharCode(a);if(c.length>kq){c.substr(0,1);j+=c;c=ac}}return j+c}function
+fg(c,a,b){this.t=c;this.c=a;this.l=b}fg.prototype.toString=function(){switch(this.t){case
+9:return this.c;default:ht(this);case
+0:if(M6(this.c)){this.t=9;return this.c}this.t=8;case
+8:return this.c}};fg.prototype.toUtf16=function(){var
+a=this.toString();if(this.t==9)return a;return tV(a)};fg.prototype.slice=function(){var
+a=this.t==4?this.c.slice():this.c;return new
+fg(this.t,a,this.l)};function
+MJ(a){return new
+fg(0,a,a.length)}function
+a(a){return MJ(a)}function
+tT(c,b){bOv(c,a(b))}var
+bW=[0];function
+b4(a){tT(bW.Invalid_argument,a)}function
+MG(){b4(tq)}function
+kM(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case
+0:return a.c.charCodeAt(b);case
+4:return a.c[b]}}function
+gX(b,a){if(a>>>0>=b.l)MG();return kM(b,a)}function
+b$(a,c,b){b&=di;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pP(a)}a.c[c]=b;return 0}function
+c1(b,a,c){if(a>>>0>=b.l)MG();return b$(b,a,c)}function
+en(c,a){if(c.fun)return en(c.fun,a);if(typeof
+c!=="function")return c;var
+b=c.length|0;if(b===0)return c.apply(null,a);var
+e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else
+if(d<0)return en(c.apply(null,a.slice(0,b)),a.slice(b));else
+return function(){var
+e=arguments.length==0?1:arguments.length,d=new
+Array(a.length+e);for(var
+b=0;b>>0>=a.length-1)kL();return a}function
+pO(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function
+dq(a){a.t&6&&ht(a);return a.c}var
+bOK=Math.log2&&Math.log2(1.1235582092889474E+307)==bC;function
+M5(a){if(bOK)return Math.floor(Math.log2(a));var
+b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else
+while(a<1){a*=2;b--}return b}function
+tM(c){var
+a=new(aO.Float32Array)(1);a[0]=c;var
+b=new(aO.Int32Array)(a.buffer);return b[0]|0}var
+MS=Math.pow(2,-24);function
+kW(a){throw a}function
+i_(){kW(bW.Division_by_zero)}function
+a0(b,c,a){this.lo=b&fJ;this.mi=c&fJ;this.hi=a&eQ}a0.prototype.caml_custom="_j";a0.prototype.copy=function(){return new
+a0(this.lo,this.mi,this.hi)};a0.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new
+a0(a,b,c)};a0.prototype.add=function(a){var
+b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new
+a0(b,c,d)};a0.prototype.sub=function(a){var
+b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new
+a0(b,c,d)};a0.prototype.mul=function(a){var
+b=this.lo*a.lo,c=(b*MS|0)+this.mi*a.lo+this.lo*a.mi,d=(c*MS|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new
+a0(b,c,d)};a0.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};a0.prototype.isNeg=function(){return this.hi<<16<0};a0.prototype.and=function(a){return new
+a0(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};a0.prototype.or=function(a){return new
+a0(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};a0.prototype.xor=function(a){return new
+a0(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};a0.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new
+a0(this.lo<>24-a,this.hi<>24-a);if(a<48)return new
+a0(0,this.lo<>48-a);return new
+a0(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new
+a0(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new
+a0(this.hi>>a-48,0,0)};a0.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var
+c=this.hi<<16>>16;if(a<24)return new
+a0(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var
+b=this.hi<<16>>31;if(a<48)return new
+a0(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&eQ);return new
+a0(this.hi<<16>>a-32,b,b)};a0.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fJ;this.lo=this.lo<<1&fJ};a0.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fJ;this.mi=(this.mi>>>1|this.hi<<23)&fJ;this.hi=this.hi>>>1};a0.prototype.udivmod=function(e){var
+c=0,b=this.copy(),a=e.copy(),d=new
+a0(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};a0.prototype.div=function(a){var
+b=this;if(a.isZero())i_();var
+d=b.hi^a.hi;if(b.hi&eV)b=b.neg();if(a.hi&eV)a=a.neg();var
+c=b.udivmod(a).quotient;if(d&eV)c=c.neg();return c};a0.prototype.mod=function(b){var
+a=this;if(b.isZero())i_();var
+d=a.hi;if(a.hi&eV)a=a.neg();if(b.hi&eV)b=b.neg();var
+c=a.udivmod(b).modulus;if(d&eV)c=c.neg();return c};a0.prototype.toInt=function(){return this.lo|this.mi<<24};a0.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};a0.prototype.toArray=function(){return[this.hi>>8,this.hi&di,this.mi>>16,this.mi>>8&di,this.mi&di,this.lo>>16,this.lo>>8&di,this.lo&di]};a0.prototype.lo32=function(){return this.lo|(this.mi&di)<<24};a0.prototype.hi32=function(){return this.mi>>>8&eQ|this.hi<<16};function
+gY(b,c,a){return new
+a0(b,c,a)}function
+pT(a){if(!isFinite(a)){if(isNaN(a))return gY(1,0,E6);return a>0?gY(0,0,E6):gY(0,0,0xfff0)}var
+f=a==0&&1/a==-Infinity?eV:a>=0?0:eV;if(f)a=-a;var
+b=M5(a)+ew;if(b<=0){b=0;a/=Math.pow(2,-h4)}else{a/=Math.pow(2,b-Mv);if(a<16){a*=2;b-=1}if(b==0)a/=2}var
+d=Math.pow(2,24),c=a|0;a=(a-c)*d;var
+e=a|0;a=(a-e)*d;var
+g=a|0;c=c&tl|f|b<<4;return gY(g,e,c)}function
+kQ(a){return a.toArray()}function
+MF(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==pb)for(var
+a=0;a>4;if(c==2047)return(f|g|b&tl)==0?b&eV?-Infinity:Infinity:NaN;var
+e=Math.pow(2,-24),a=(f*e+g)*e+(b&tl);if(c>0){a+=16;a*=Math.pow(2,c-Mv)}else
+a*=Math.pow(2,-h4);if(b&eV)a=-a;return a}function
+tF(b){var
+d=b.length,c=1;for(var
+a=0;a>>24&di|(a&eQ)<<8,a>>>16&eQ)}function
+tO(a){return a.hi32()}function
+tP(a){return a.lo32()}var
+bNR=pb;function
+gV(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}gV.prototype.caml_custom=bNR;gV.prototype.offset=function(b){var
+c=0;if(typeof
+b==="number")b=[b];if(!(b
+instanceof
+Array))b4("bigarray.js: invalid offset");if(this.dims.length!=b.length)b4("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var
+a=0;a=this.dims[a])kL();c=c*this.dims[a]+b[a]}else
+for(var
+a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])kL();c=c*this.dims[a]+(b[a]-1)}return c};gV.prototype.get=function(a){switch(this.kind){case
+7:var
+d=this.data[a*2+0],b=this.data[a*2+1];return MR(d,b);case
+10:case
+11:var
+e=this.data[a*2+0],c=this.data[a*2+1];return[ki,e,c];default:return this.data[a]}};gV.prototype.set=function(a,b){switch(this.kind){case
+7:this.data[a*2+0]=tP(b);this.data[a*2+1]=tO(b);break;case
+10:case
+11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};gV.prototype.fill=function(b){switch(this.kind){case
+7:var
+c=tP(b),e=tO(b);if(c==e)this.data.fill(c);else
+for(var
+a=0;ad)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case
+7:for(var
+a=0;ab.data[a+1])return 1;if(this.data[a]>>>0>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case
+2:case
+3:case
+4:case
+5:case
+6:case
+8:case
+9:case
+12:for(var
+a=0;ab.data[a])return 1}break}return 0};function
+i7(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}i7.prototype=new
+gV();i7.prototype.offset=function(a){if(typeof
+a!=="number")if(a
+instanceof
+Array&&a.length==1)a=a[0];else
+b4("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])kL();return a};i7.prototype.get=function(a){return this.data[a]};i7.prototype.set=function(a,b){this.data[a]=b;return 0};i7.prototype.fill=function(a){this.data.fill(a);return 0};function
+MB(c,d,a,b){var
+e=MD(c);if(tF(a)*e!=b.length)b4("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new
+i7(c,d,a,b);return new
+gV(c,d,a,b)}function
+dI(b){if(!bW.Failure)bW.Failure=[bl,a(sO),-3];tT(bW.Failure,b)}function
+MC(b,v,r){var
+i=b.read32s();if(i<0||i>16)dI("input_value: wrong number of bigarray dimensions");var
+p=b.read32s(),j=p&di,o=p>>8&1,h=[];if(r==pb)for(var
+a=0;a>>32-15;a=dZ(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function
+bN4(a,b){a=cL(a,tP(b));a=cL(a,tO(b));return a}function
+tK(a,b){return bN4(a,pT(b))}function
+ME(c){var
+b=tF(c.dims),d=0;switch(c.kind){case
+2:case
+3:case
+12:if(b>dC)b=dC;var
+e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=cL(d,e)}e=0;switch(b&3){case
+3:e=c.data[a+2]<<16;case
+2:e|=c.data[a+1]<<8;case
+1:e|=c.data[a+0];d=cL(d,e)}break;case
+4:case
+5:if(b>cH)b=cH;var
+e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=cL(d,e)}if((b&1)!=0)d=cL(d,c.data[a]);break;case
+6:if(b>64)b=64;for(var
+a=0;a64)b=64;for(var
+a=0;a32)b=32;b*=2;for(var
+a=0;a64)b=64;for(var
+a=0;a32)b=32;for(var
+a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function
+kT(a){return a
+instanceof
+fg}function
+pV(a){return kT(a)}function
+MM(a){if(typeof
+a==="number")return dp;else
+if(kT(a))return ma;else
+if(pV(a))return 1252;else
+if(a
+instanceof
+Array&&a[0]===a[0]>>>0&&a[0]<=iA){var
+b=a[0]|0;return b==ki?0:b}else
+if(a
+instanceof
+String)return xi;else
+if(typeof
+a=="string")return xi;else
+if(a
+instanceof
+Number)return dp;else
+if(a&&a.caml_custom)return r9;else
+if(a&&a.compare)return 1256;else
+if(typeof
+a=="function")return 1247;else
+if(typeof
+a=="symbol")return 1251;return 1001}function
+kR(a,b){if(ab.c?1:0}function
+p0(a,b){return MH(a,b)}function
+kN(a,b,d){var
+e=[];for(;;){if(!(d&&a===b)){var
+f=MM(a);if(f==dP){a=a[1];continue}var
+g=MM(b);if(g==dP){b=b[1];continue}if(f!==g){if(f==dp){if(g==r9)return ML(a,b,-1,d);return-1}if(g==dp){if(f==r9)return ML(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case
+1001:if(ab)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case
+1251:if(a!==b){if(!d)return NaN;return 1}break;case
+1252:var
+a=dq(a),b=dq(b);if(a!==b){if(ab)return 1}break;case
+12520:var
+a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case
+246:case
+254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var
+h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=ac;a.t=2}else{a.c=i$(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pP(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,ac);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var
+c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var
+d=c[3].replace(/0+$/,ac),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dI("float_of_string")}function
+tS(d){d=dq(d);var
+e=d.length;if(e>31)b4("format_int: format too long");var
+a={justify:fc,signstyle:cU,filler:fP,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var
+c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function
+tH(b,f){if(b.uppercase)f=f.toUpperCase();var
+e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cU))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var
+c=ac;if(b.justify==fc&&b.filler==fP)for(var
+d=e;d20){c-=20;a/=Math.pow(10,c);a+=new
+Array(c+1).join(p);if(b>0)a=a+e5+new
+Array(b+1).join(p);return a}else
+return a.toFixed(b)}}var
+a,e=tS(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=sP;e.filler=fP}else
+if(!isFinite(c)){a=Mo;e.filler=fP}else
+switch(e.conv){case"e":var
+a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==pH)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var
+h=a.indexOf(pH),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var
+b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==e5)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==pH)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var
+f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else
+while(a=c.toFixed(f),a.length>d+1)f--;if(f){var
+b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==e5)b--;a=a.slice(0,b+1)}}break}return tH(e,a)}function
+pR(e,c){if(dq(e)==sr)return a(ac+c);var
+b=tS(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else
+c>>>=0;var
+d=c.toString(b.base);if(b.prec>=0){b.filler=fP;var
+f=b.prec-d.length;if(f>0)d=i$(f,p)+d}return tH(b,d)}var
+MY=0;function
+cK(){return MY++}function
+bNY(a){if(a==0||!isFinite(a))return[0,a,0];var
+c=a<0;if(c)a=-a;var
+b=Math.max(-ew,M5(a)+1);a*=Math.pow(2,-b);while(a=1){a*=eU;b++}if(c)a=-a;return[0,a,b]}function
+eH(a){return a.toUtf16()}function
+kX(){return typeof
+aO.process!=="undefined"&&typeof
+aO.process.versions!=="undefined"&&typeof
+aO.process.versions.node!=="undefined"}function
+bOL(){function
+a(a){if(a.charAt(0)===eS)return[ac,a.substring(1)];return}function
+b(c){var
+g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||ac,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var
+d=a[1]||ac,f=a[2]||ac;return[d,c.substring(d.length+f.length)]}return}return kX()&&aO.process&&aO.process.platform?aO.process.platform==="win32"?b:a:a}var
+tZ=bOL();function
+M3(a){return a.slice(-1)!==eS?a+eS:a}if(kX()&&aO.process&&aO.process.cwd)var
+kO=aO.process.cwd().replace(/\\/g,eS);else
+var
+kO="/static";kO=M3(kO);function
+bOi(a){a=eH(a);if(!tZ(a))a=kO+a;var
+e=tZ(a),d=e[1].split(eS),b=[];for(var
+c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function
+bOC(e){for(var
+f=ac,b=f,a,h,c=0,g=e.length;cr7){b.substr(0,1);f+=b;b=ac;f+=e.slice(c,d)}else
+b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(d8|a&hT)}else
+if(a<0xd800||a>=Lb)b+=String.fromCharCode(Fm|a>>12,d8|a>>6&hT,d8|a&hT);else
+if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Lb)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(CD|a>>18,d8|a>>12&hT,d8|a>>6&hT,d8|a&hT)}if(b.length>kq){b.substr(0,1);f+=b;b=ac}}return f+b}function
+bNT(a){var
+b=9;if(!M6(a))b=8,a=bOC(a);return new
+fg(b,a,a.length)}function
+aN(a){return bNT(a)}var
+bO4=[B1,IB,yz,E$,GB,Hl,xV,Lu,sw,Cd,Lt,ym,Lv,J6,wK,AS,E_,Br,Ks,Dc,pF,Fx,Az,DS,Af,yX,pp,tA,BF,xh,Cv,Is,Ay,Mp,xK,BA,xy,zh,IA,Gr,B7,yu,Bo,Kx,IS,zO,Mf,B5,Fv,Ku,KY,F$,Dl,yq,zN,Cc,JU,H_,DN,Ak,DG,Hk,zl,Bn,B_,FE,LI,L2];function
+hz(d,f,e,a){var
+b=bO4.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var
+c=[b,aN(f||ac),aN(e||ac)];return c}var
+MW={};function
+fk(a){return MW[a]}function
+hx(b,a){throw[0,b].concat(a)}function
+bNS(a){return new
+fg(4,a,a.length)}function
+bz(a){tT(bW.Sys_error,a)}function
+bOt(a){bz(a+oA)}function
+dJ(a){return a.l}function
+Mx(){}function
+cI(a){this.data=a}cI.prototype=new
+Mx();cI.prototype.truncate=function(a){var
+b=this.data;this.data=bR(a|0);gW(b,0,this.data,0,a)};cI.prototype.length=function(){return dJ(this.data)};cI.prototype.write=function(b,d,g,a){var
+c=this.length();if(b+a>=c){var
+e=bR(b+a),f=this.data;this.data=e;gW(f,0,this.data,0,c)}eF(d,g,this.data,b,a);return 0};cI.prototype.read=function(c,a,d,b){var
+e=this.length();gW(this.data,c,a,d,b);return 0};cI.prototype.read_one=function(a){return gX(this.data,a)};cI.prototype.close=function(){};cI.prototype.constructor=cI;function
+dd(b,a){this.content={};this.root=b;this.lookupFun=a}dd.prototype.nm=function(a){return this.root+a};dd.prototype.create_dir_if_needed=function(d){var
+c=d.split(eS),b=ac;for(var
+a=0;a>1|1;if(h=0)}function
+tL(d,b){var
+e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cL(d,c)}c=0;switch(e&3){case
+3:c=b.charCodeAt(a+2)<<16;case
+2:c|=b.charCodeAt(a+1)<<8;case
+1:c|=b.charCodeAt(a);d=cL(d,c)}d^=e;return d}function
+bN5(a,b){return tL(a,dq(b))}function
+bN2(d,b){var
+e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cL(d,c)}c=0;switch(e&3){case
+3:c=b[a+2]<<16;case
+2:c|=b[a+1]<<8;case
+1:c|=b[a];d=cL(d,c)}d^=e;return d}function
+MT(a){switch(a.t&6){default:ht(a);case
+0:return a.c;case
+4:return a.c}}function
+bN1(b,c){var
+a=MT(c);return typeof
+a==="string"?tL(b,a):bN2(b,a)}function
+bN3(a){a^=a>>>16;a=dZ(a,0x85ebca6b|0);a^=a>>>13;a=dZ(a,0xc2b2ae35|0);a^=a>>>16;return a}function
+bN0(j,l,n,m){var
+f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>dC)d=dC;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(i8[a.caml_custom]&&i8[a.caml_custom].hash){var
+k=i8[a.caml_custom].hash(a);b=cL(b,k);c--}}else
+if(a
+instanceof
+Array&&a[0]===(a[0]|0))switch(a[0]){case
+248:b=cL(b,a[2]);c--;break;case
+250:f[--g]=a[1];break;default:var
+o=a.length-1<<10|a[0];b=cL(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else
+if(kT(a)){b=bN1(b,a);c--}else
+if(pV(a)){b=bN5(b,a);c--}else
+if(typeof
+a==="string"){b=tL(b,a);c--}else
+if(a===(a|0)){b=cL(b,a+a+1);c--}else
+if(a===+a){b=tK(b,a);c--}}b=bN3(b);return b&0x3FFFFFFF}function
+bN6(a,c,k){if(!isFinite(a)){if(isNaN(a))return aN(sP);return aN(a>0?Ml:"-infinity")}var
+i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var
+d=0;if(a==0);else
+if(a<1)while(a<1&&d>-bJ){a*=2;d--}else
+while(a>=2){a/=2;d++}var
+j=d<0?ac:fc,e=ac;if(i)e=cU;else
+switch(k){case
+43:e=fc;break;case
+32:e=fP;break;default:break}if(c>=0&&c<13){var
+g=Math.pow(2,c*4);a=Math.round(a*g)/g}var
+b=a.toString(16);if(c>=0){var
+h=b.indexOf(e5);if(h<0)b+=e5+i$(c,p);else{var
+f=h+1+c;if(b.length>24&fJ,a>>31&eQ)}function
+bOf(a){return a.toInt()}function
+bN$(a){return+a.isNeg()}function
+bOc(a){return a.neg()}function
+bN9(g,c){var
+a=tS(g);if(a.signedconv&&bN$(c)){a.sign=-1;c=bOc(c)}var
+b=ac,h=bOd(a.base),f="0123456789abcdef";do{var
+e=c.udivmod(h);c=e.quotient;b=f.charAt(bOf(e.modulus))+b}while(!bOa(c));if(a.prec>=0){a.filler=fP;var
+d=a.prec-b.length;if(d>0)b=i$(d,p)+b}return tH(a,b)}function
+bOe(a,b){return a.or(b)}function
+pU(a){return a.toFloat()}function
+bOs(c){var
+a=0,e=ay(c),b=10,d=1;if(e>0)switch(ep(c,a)){case
+45:a++;d=-1;break;case
+43:a++;d=1;break}if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=dl)return a-87;return-1}function
+kS(f){var
+h=bOs(f),c=h[0],i=h[1],d=h[2],g=ay(f),j=-1>>>0,e=c=d)dI(mm);var
+a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dI(mm)}if(c!=g)dI(mm);a=i*a;if(d==10&&(a|0)!=a)dI(mm);return a|0}function
+fi(a){return a.slice(1)}function
+hu(c){var
+d=c.length,b=new
+Array(d+1);b[0]=0;for(var
+a=0;a0){var
+c=new
+Array(b);for(var
+a=0;aew){a-=ew;b*=Math.pow(2,ew);if(a>ew){a-=ew;b*=Math.pow(2,ew)}}if(a<-ew){a+=ew;b*=Math.pow(2,-ew)}b*=Math.pow(2,a);return b}function
+pX(a,b){return+(kN(a,b,false)<0)}function
+kU(b){b=dq(b);var
+d=b.length/2,c=new
+Array(d);for(var
+a=0;a>16;return c}function
+tQ(b,t,a){var
+n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=kU(b[m]);b.lex_backtrk=kU(b[l]);b.lex_check=kU(b[p]);b.lex_trans=kU(b[s]);b.lex_default=kU(b[q])}var
+e,c=t,k=My(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else
+c=-c-1;for(;;){var
+f=b.lex_base[c];if(f<0)return-f-1;var
+i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else
+e=dC;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else
+c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dI("lexing: empty token");else
+return a[g]}else
+if(e==dC)a[j]=0}}function
+dY(a,d){if(a<0)kL();var
+a=a+1|0,b=new
+Array(a);b[0]=0;for(var
+c=1;c>>32-b,c)}function
+g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function
+h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function
+i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function
+j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function
+k(f,n){var
+e=n;f[e>>2]|=d8<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var
+k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&ef;return o}return function(i,g,f){var
+e=[],h=MT(i);if(typeof
+h==="string"){var
+d=h;for(var
+a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var
+c=h;for(var
+a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bOz(k(e,f))}}();function
+bOk(c,b,a){return bOj(eG(c),b,a)}function
+bOl(){return 0}var
+fj=new
+Array();function
+hv(c){var
+a=fj[c];if(!a.opened)bz("Cannot flush a closed channel");if(!a.buffer||a.buffer==ac)return 0;if(a.fd&&bW.fds[a.fd]&&bW.fds[a.fd].output){var
+b=bW.fds[a.fd].output;switch(b.length){case
+2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=ac;return 0}function
+M1(e,f){var
+b=fj[e],d=a(f),c=ay(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function
+bOG(a){var
+a=tV(a),b=aO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var
+c=b.console;c&&c.error&&c.error(a)}}function
+bOH(a){var
+a=tV(a),b=aO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var
+c=b.console;c&&c.log&&c.log(a)}}function
+p2(c,e,d,a){if(bW.fds===undefined)bW.fds=new
+Array();a=a?a:{};var
+b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bW.fds[c]=b;if(!bW.fd_last_idx||c>bW.fd_last_idx)bW.fd_last_idx=c;return c}function
+bO6(c,b,g){var
+a={};while(b){switch(b[1]){case
+0:a.rdonly=1;break;case
+1:a.wronly=1;break;case
+2:a.append=1;break;case
+3:a.create=1;break;case
+4:a.truncate=1;break;case
+5:a.excl=1;break;case
+6:a.binary=1;break;case
+7:a.text=1;break;case
+8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bz(dq(c)+FB);if(a.text&&a.binary)bz(dq(c)+J7);var
+d=Na(c),e=d.device.open(d.rest,a),f=bW.fd_last_idx?bW.fd_last_idx:0;return p2(f+1,M1,e,a)}p2(0,M1,new
+cI(bR(0)));p2(1,bOH,new
+cI(bR(0)));p2(2,bOG,new
+cI(bR(0)));function
+bOm(a){var
+c=bW.fds[a];if(c.flags.wronly)bz(yI+a+" is writeonly");var
+d=null;if(a==0&&kX()){var
+e=require("fs");d=function(){return aN(e.readFileSync(0,wN))}}var
+b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};fj[b.fd]=b;return b.fd}function
+MU(c){var
+b=bW.fds[c];if(b.flags.rdonly)bz(yI+c+" is readonly");var
+a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:ac};fj[a.fd]=a;return a.fd}function
+bOn(){var
+b=0;for(var
+a=0;a>>0)return a[0];else
+if(kT(a))return ma;else
+if(pV(a))return ma;else
+if(a
+instanceof
+Function||typeof
+a=="function")return tv;else
+if(a&&a.caml_custom)return iA;else
+return dp}function
+eo(b,c,a){if(a&&aO.toplevelReloc)b=aO.toplevelReloc(a);bW[b+1]=c;if(a)bW[a]=c}function
+tU(a,b){MW[dq(a)]=b;return 0}function
+bOw(a){a[2]=MY++;return a}function
+gZ(a,b){return MI(a,b)}function
+bOy(){b4(tq)}function
+aL(b,a){if(a>>>0>=ay(b))bOy();return ep(b,a)}function
+M(a,b){return 1-gZ(a,b)}function
+bOA(){return 0x7FFFFFFF/4|0}function
+bOu(){kW(bW.Not_found)}function
+M2(c){var
+a=aO,b=eH(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aN(a.process.env[b]);if(aO.jsoo_static_env&&aO.jsoo_static_env[b])return aN(aO.jsoo_static_env[b]);bOu()}function
+bOB(){if(aO.crypto)if(typeof
+aO.crypto.getRandomValues==="function"){var
+a=new(aO.Uint32Array)(1);aO.crypto.getRandomValues(a);return[0,a[0]]}else
+if(aO.crypto.randomBytes==="function"){var
+b=aO.crypto.randomBytes(4),a=new(aO.Uint32Array)(b);return[0,a[0]]}var
+c=new
+Date().getTime(),d=c^KG*Math.random();return[0,d]}function
+hy(a){var
+b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function
+bX(b,a){return{joo_tramp:b,joo_args:a}}function
+M0(a){return a}function
+m(a){if(a
+instanceof
+Array)return a;if(aO.RangeError&&a
+instanceof
+aO.RangeError&&a.message&&a.message.match(/maximum call stack/i))return M0(bW.Stack_overflow);if(aO.InternalError&&a
+instanceof
+aO.InternalError&&a.message&&a.message.match(/too much recursion/i))return M0(bW.Stack_overflow);if(a
+instanceof
+aO.Error&&fk(s$))return[0,fk(s$),a];return[0,bW.Failure,aN(String(a))]}var
+aw=function(z){"use strict";var
+f=hj,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bOF.BigInt,F=typeof
+g==="function";function
+d(a,b,c,f){if(typeof
+a==="undefined")return d[0];if(typeof
+b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function
+a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=oe}a.prototype=Object.create(d.prototype);function
+b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=oe}b.prototype=Object.create(d.prototype);function
+c(a){this.value=a;this.caml_custom=oe}c.prototype=Object.create(d.prototype);function
+l(a){return-s0)return Math.floor(a);return Math.ceil(a)}function
+N(g,h){var
+i=g.length,j=h.length,e=new
+Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function
+t(a,b){if(a.length>=b.length)return N(a,b);return N(b,a)}function
+A(g,a){var
+h=g.length,d=new
+Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var
+b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var
+c=this.value,d=b.value;if(b.isSmall)return new
+a(A(c,Math.abs(d)),this.sign);return new
+a(t(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var
+f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var
+d=f.value;if(f.isSmall){if(l(c+d))return new
+b(c+d);d=q(Math.abs(d))}return new
+a(A(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new
+c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function
+w(d,h){var
+g=d.length,i=h.length,c=new
+Array(g),e=0,j=f,a,b;for(a=0;a=0)c=w(e,f);else{c=w(f,e);d=!d}c=n(c);if(typeof
+c==="number"){if(d)c=-c;return new
+b(c)}return new
+a(c,d)}function
+E(h,l,k){var
+j=h.length,c=new
+Array(j),i=-l,g=f,e,d;for(e=0;e=0)};b.prototype.minus=b.prototype.subtract;c.prototype.subtract=function(a){return new
+c(this.value-e(a).value)};c.prototype.minus=c.prototype.subtract;a.prototype.negate=function(){return new
+a(this.value,!this.sign)};b.prototype.negate=function(){var
+c=this.sign,a=new
+b(-this.value);a.sign=!c;return a};c.prototype.negate=function(){return new
+c(-this.value)};a.prototype.abs=function(){return new
+a(this.value,false)};b.prototype.abs=function(){return new
+b(Math.abs(this.value))};c.prototype.abs=function(){return new
+c(this.value>=0?this.value:-this.value)};function
+L(g,j){var
+i=g.length,l=j.length,o=i+l,c=B(o),n=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function
+W(c,b){var
+a=[];while(b-->0)a.push(0);return a.concat(c)}function
+C(b,c){var
+a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var
+f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function
+aj(a,b){return-(x$*a)-x$*b+0.000015*a*b>0}a.prototype.multiply=function(j){var
+h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/p);do{j=u(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=w(a,j)}e.reverse();return[n(e),n(a)]}function
+O(i,e){var
+g=i.length,h=B(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function
+i(h,w){var
+m,j=e(w);if(F)return[new
+c(h.value/j.value),new
+c(h.value%j.value)];var
+l=h.value,i=j.value,g;if(i===0)throw new
+Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new
+b(r(l/i)),new
+b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var
+s=Math.abs(i);if(sc.length?1:-1;for(var
+a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var
+a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var
+c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var
+a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var
+a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var
+b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var
+b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var
+a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function
+R(b){var
+a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function
+J(d,e){var
+g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new
+b(c-1);return new
+a(H,true)};c.prototype.prev=function(){return new
+c(this.value-g(1))};var
+h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var
+v=h.length,j=h[v-1];function
+X(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var
+a=e(c).toJSNumber();if(!X(a))throw new
+Error(String(a)+FM);if(a<0)return this.shiftRight(-a);var
+b=this;if(b.isZero())return b;while(a>=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var
+a,b=e(d).toJSNumber();if(!X(b))throw new
+Error(String(b)+FM);if(b<0)return this.shiftLeft(-b);var
+c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function
+I(h,a,q){a=e(a);var
+m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var
+g=q(m?1:0,p?1:0)!==0?aw(-1):aw(0);for(var
+d=f.length-1;d>=0;d-=1)g=g.multiply(j).add(aw(f[d]));return g}a.prototype.not=function(){return this.negate().prev()};c.prototype.not=b.prototype.not=a.prototype.not;a.prototype.and=function(a){return I(this,a,function(a,b){return a&b})};c.prototype.and=b.prototype.and=a.prototype.and;a.prototype.or=function(a){return I(this,a,function(a,b){return a|b})};c.prototype.or=b.prototype.or=a.prototype.or;a.prototype.xor=function(a){return I(this,a,function(a,b){return a^b})};c.prototype.xor=b.prototype.xor=a.prototype.xor;var
+G=1<<30,_=(f&-f)*(f&-f)|G;function
+D(c){var
+a=c.value,b=typeof
+a==="number"?a|G:typeof
+a==="bigint"?a|g(G):a[0]+a[1]*f|_;return b&-b}function
+Q(b,a){if(a.compareTo(b)<=0){var
+f=Q(b,a.square(a)),d=f.p,c=f.e,e=d.multiply(a);return e.compareTo(b)<=0?{p:e,e:c*2+1}:{p:d,e:c*2}}return{p:aw(1),e:0}}a.prototype.bitLength=function(){var
+a=this;if(a.compareTo(aw(0))<0)a=a.negate().subtract(aw(1));if(a.compareTo(aw(0))===0)return aw(0);return aw(Q(a,aw(2)).e).add(aw(1))};c.prototype.bitLength=b.prototype.bitLength=a.prototype.bitLength;function
+S(a,b){a=e(a);b=e(b);return a.greater(b)?a:b}function
+K(a,b){a=e(a);b=e(b);return a.lesser(b)?a:b}function
+P(a,b){a=e(a).abs();b=e(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var
+c=d[1],f,g;while(a.isEven()&&b.isEven()){f=K(D(a),D(b));a=a.divide(f);b=b.divide(f);c=c.multiply(f)}while(a.isEven())a=a.divide(D(a));do{while(b.isEven())b=b.divide(D(b));if(a.greater(b)){g=b;b=a;a=g}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function
+ad(a,b){a=e(a).abs();b=e(b).abs();return a.divide(P(a,b)).multiply(b)}function
+ag(a,b){a=e(a);b=e(b);var
+g=K(a,b),n=S(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var
+j=y(h,f).value,l=[],k=true;for(var
+c=0;c=i){if(c===x&&i===1)continue;throw new
+Error(c+" is not a valid digit in base "+g+e5)}}g=e(g);var
+h=[],j=b[0]===cU;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function
+ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var
+d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function
+Z(d,c,b){var
+a=y(d,c);return(a.isNegative?cU:ac)+a.value.map(function(a){return ah(a,b)}).join(ac)}a.prototype.toArray=function(a){return y(this,a)};b.prototype.toArray=function(a){return y(this,a)};c.prototype.toArray=function(a){return y(this,a)};a.prototype.toString=function(a,f){if(a===z)a=10;if(a!==10)return Z(this,a,f);var
+d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var
+g=this.sign?cU:ac;return g+e};b.prototype.toString=function(a,b){if(a===z)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function
+V(d){if(l(+d)){var
+n=+d;if(n===r(n))return F?new
+c(g(n)):new
+b(n);throw new
+Error(py+d)}var
+s=d[0]===cU;if(s)d=d.slice(1);var
+h=d.split(/e/i);if(h.length>2)throw new
+Error(py+h.join(pH));if(h.length===2){var
+e=h[1];if(e[0]===fc)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new
+Error(py+e+" is not a valid exponent.");var
+f=h[0],i=f.indexOf(e5);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new
+Error("Cannot include negative exponent part for integers");f+=new
+Array(e+1).join(p);d=f}var
+t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new
+Error(py+d);if(F)return new
+c(g(s?cU+d:d));var
+q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new
+a(q,s)}function
+af(a){if(F)return new
+c(g(a));if(l(a)){if(a!==r(a))throw new
+Error(a+" is not an integer.");return new
+b(a)}return V(a.toString())}function
+e(a){if(typeof
+a==="number")return af(a);if(typeof
+a==="string")return V(a);if(typeof
+a==="bigint")return new
+c(a);return a}for(var
+k=0;k0)d[-k]=e(-k)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=S;d.min=K;d.gcd=P;d.lcm=ad;d.isInstance=function(d){return d
+instanceof
+a||d
+instanceof
+b||d
+instanceof
+c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function
+c2(a){var
+b=a.toJSNumber()|0;if(a.equals(aw(b)))return b;return a}function
+M7(a){return c2(aw(a).abs())}function
+M8(a,b){return c2(aw(a).add(aw(b)))}function
+eq(a,b){return aw(a).compare(aw(b))}function
+jb(b,a){a=aw(a);if(a.equals(aw(0)))i_();return c2(aw(b).divide(aw(a)))}function
+bOY(b,a){a=aw(a);if(a.equals(aw(0)))i_();return c2(aw(b).mod(a))}function
+tW(a,b){return[0,jb(a,b),bOY(a,b)]}function
+M9(a,b){return jb(a,b)}function
+bOM(a,b){return aw(a).equals(aw(b))}function
+dr(a){return aw(a).compare(aw.zero)}function
+tY(a,b){return c2(aw(a).subtract(aw(b)))}function
+bON(a,b){var
+c=dr(a),d=dr(b);if(c*d<0)if(!aw(a).mod(aw(b)).equals(aw(0)))return tY(jb(a,b),aw(1));return jb(a,b)}function
+bOP(a,b){return c2(aw.gcd(aw(a),aw(b)).abs())}function
+bOD(c,e,g){e=aw(e);var
+a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var
+f=a.value.length,d=f*4;c.write(32,d);for(var
+b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&di);c.write(8,a.value[b]>>>8&di);c.write(8,a.value[b]>>>16&di);c.write(8,a.value[b]>>>24&di)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function
+bOE(b,g){var
+e;switch(b.read8u()){case
+1:e=true;break;case
+0:e=false;break;default:dI("input_value: z (malformed input)")}var
+f=b.read32u(),c=aw(0);for(var
+d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return c2(c)}function
+bOQ(d){var
+b=aw(d).toArray(Math.pow(2,32)),a=0;for(var
+c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=Cj)return a-97+10;if(a>=65&&a<=70)return a-65+10}var
+e=0;if(a[e]==cU)e++;for(;e=c)b4("Z.of_substring_base: invalid digit")}return c2(aw(a,c))}function
+hA(d,a,b,c){a=dq(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function
+p3(a){a=aw(a);if(!bOO(a))kW(fk(n0));var
+b=aw(KG),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=MR(d,c);return e}var
+bO2=function(){var
+b=[dF,dF,dF,dF,dF,dF,ef,0x03,ER,ef,ef,0x87,ER,ef,ef,0x07,dF,dF,dF,dF,dF,dF,dF,dF,ef,ef,Lh,ef,ef,ef,Lh,ef],c={CHAR:0,CHARNORM:1,STRING:2,STRINGNORM:3,CHARCLASS:4,BOL:5,EOL:6,WORDBOUNDARY:7,BEGGROUP:8,ENDGROUP:9,REFGROUP:10,ACCEPT:11,SIMPLEOPT:12,SIMPLESTAR:13,SIMPLEPLUS:14,GOTO:15,PUSHBACK:16,SETMARK:17,CHECKPROGRESS:18};function
+r(a){return b[a>>3]>>(a&7)&1}function
+o(b,a){return aL(b,a>>3)>>(a&7)&1}function
+a(m,b,a,B){var
+w=fi(m[1]),k=fi(m[2]),v=dq(m[3]),y=m[4]|0,z=m[5]|0,C=m[6]|0,b=Mz(b),l=0,x=false,t=[],i=new
+Array(y),q=new
+Array(z);for(var
+f=0;f>8,d=s&di,g=b[a],h;l++;switch(A){case
+c.CHAR:if(a===b.length){j();break}if(g===d)a++;else
+e();break;case
+c.CHARNORM:if(a===b.length){j();break}if(v.charCodeAt(g)===d)a++;else
+e();break;case
+c.STRING:for(var
+n=dq(k[d]),f=0;f0&&b[a-1]!=10)e();break;case
+c.EOL:if(aay(b))b4("Str.search_forward");while(a<=ay(b)){var
+c=bO2(d,b,a,0);if(c)return c;a++}return[0]}function
+p4(){return new
+Date().getTime()/dp}function
+jc(e){var
+a=new
+Date(e*dp),b=a.getTime(),d=new
+Date(Date.UTC(a.getUTCFullYear(),0,1)).getTime(),c=Math.floor((b-d)/Jq);return[0,a.getUTCSeconds(),a.getUTCMinutes(),a.getUTCHours(),a.getUTCDate(),a.getUTCMonth(),a.getUTCFullYear()-fQ,a.getUTCDay(),c,false|0]}function
+p5(){return 0}function
+bO5(h){var
+a=new
+Date(h*dp),b=a.getTime(),e=new
+Date(a.getFullYear(),0,1).getTime(),c=Math.floor((b-e)/Jq),d=new
+Date(a.getFullYear(),0,1),f=new
+Date(a.getFullYear(),6,1),g=Math.max(d.getTimezoneOffset(),f.getTimezoneOffset());return[0,a.getSeconds(),a.getMinutes(),a.getHours(),a.getDate(),a.getMonth(),a.getFullYear()-fQ,a.getDay(),c,a.getTimezoneOffset()f)a+=fG;var
+c=e[d];if(typeof
+c=="number")a+=c.toString();else
+if(c
+instanceof
+fg)a+=gf+c.toString()+gf;else
+if(typeof
+c=="string")a+=gf+c.toString()+gf;else
+a+=LD}a+=")"}else
+if(b[0]==bl)a+=b[1];return a}function
+MN(a){if(a
+instanceof
+Array&&(a[0]==0||a[0]==bl)){var
+c=fk(Dj);if(c)c(a,false);else{var
+d=bNX(a),b=fk(wM);if(b)b(0);aO.console.error(so+d+Fb)}}else
+throw a}function
+bOx(){var
+a=aO;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){MN(b);a.process.exit(2)});else
+if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)MN(a.error)})}bOx();function
+k(a,b){return a.length==1?a(b):en(a,[b])}function
+W(a,b,c){return a.length==2?a(b,c):en(a,[b,c])}function
+bj(a,b,c,d){return a.length==3?a(b,c,d):en(a,[b,c,d])}function
+lP(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):en(a,[b,c,d,e,f])}function
+bNM(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):en(a,[b,c,d,e,f,g])}function
+bNL(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):en(a,[b,c,d,e,f,g,h])}bNZ();var
+p7=[bl,a(CH),-1],t3=[bl,a(K4),-2],fT=[bl,a(sO),-3],g0=[bl,a(zS),-4],p8=[bl,a(Gc),-6],b5=[bl,a(D3),-7],t1=[bl,a(Fr),-8],t2=[bl,a(z2),-9],a1=[bl,a(L_),-11],t4=[bl,a(C1),si],bNJ=[4,0,0,0,[12,45,[4,0,0,0,0]]],qn=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(zx),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],hJ=[0,0,0],bNK=[4,0,0,0,[12,46,0]],wH=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];eo(11,t4,C1);eo(10,a1,L_);eo(9,[bl,a(BQ),-10],BQ);eo(8,t2,z2);eo(7,t1,Fr);eo(6,b5,D3);eo(5,p8,Gc);eo(4,[bl,a(Hf),-5],Hf);eo(3,g0,zS);eo(2,fT,sO);eo(1,t3,K4);eo(0,p7,CH);var
+No=a("output_substring"),Nl=a("%.12g"),Nk=a(e5),Ni=a(xG),Nj=a(zX),Nb=a("Stdlib.Exit"),Nd=gY(0,0,LJ),Ne=gY(0,0,65520),Nf=gY(1,0,LJ),Nr=a(xT),Ns=a("\\'"),Nt=a(xj),Nu=a(At),Nv=a(Be),Nw=a(Hi),Nq=a("Char.chr"),NA=a("nth"),NB=a("List.nth"),Nz=a("tl"),Ny=a("hd"),NE=a("String.blit / Bytes.blit_string"),ND=a("Bytes.blit"),NC=a("String.sub / Bytes.sub"),NI=a("String.contains_from / Bytes.contains_from"),NG=a(ac),NF=a("String.concat"),NN=a("Array.blit"),NM=a("Array.fill"),NL=a("Array.sub"),NS=a("Map.remove_min_elt"),NT=[0,0,0,0],NU=[0,a("map.ml"),rN,10],NV=[0,0,0],NO=a(l4),NP=a(l4),NQ=a(l4),NR=a(l4),NW=a("Stdlib.Queue.Empty"),NY=a("CamlinternalLazy.Undefined"),N5=a("Buffer.add_substring/add_subbytes"),N4=a("Buffer.add: cannot grow buffer"),N3=[0,a(H$),93,2],N2=[0,a(H$),94,2],N1=a("Buffer.sub"),Oc=a("%c"),Od=a("%s"),Oe=a(sK),Of=a(Jl),Og=a(zQ),Oh=a(K3),Oi=a("%f"),Oj=a(KL),Ok=a("%{"),Ol=a("%}"),Om=a("%("),On=a("%)"),Oo=a(y2),Op=a("%t"),Oq=a("%?"),Or=a("%r"),Os=a("%_r"),Ot=[0,a(cx),850,23],OE=[0,a(cx),814,21],Ow=[0,a(cx),815,21],OF=[0,a(cx),sG,21],Ox=[0,a(cx),819,21],OG=[0,a(cx),822,19],Oy=[0,a(cx),kr,19],OH=[0,a(cx),826,22],Oz=[0,a(cx),rP,22],OI=[0,a(cx),s1,30],OA=[0,a(cx),832,30],OC=[0,a(cx),836,26],Ou=[0,a(cx),837,26],OD=[0,a(cx),sv,28],Ov=[0,a(cx),s0,28],OB=[0,a(cx),851,23],PL=a(xx),PJ=[0,a(cx),1558,4],PK=a("Printf: bad conversion %["),PM=[0,a(cx),tp,39],PN=[0,a(cx),1649,31],PO=[0,a(cx),s8,31],PP=a("Printf: bad conversion %_"),PQ=a(FC),PR=a(xE),PS=a(FC),PT=a(xE),PX=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],PV=a(ac),PW=[0,0,4],PY=a(ac),PZ=a(yv),P0=a("h"),P1=a("hov"),P2=a("hv"),P3=a("v"),PH=a(sP),PF=a("neg_infinity"),PG=a(Ml),PE=a(e5),Pz=[0,pj],Pn=a("%+nd"),Po=a("% nd"),Pq=a("%+ni"),Pr=a("% ni"),Ps=a("%nx"),Pt=a("%#nx"),Pu=a("%nX"),Pv=a("%#nX"),Pw=a("%no"),Px=a("%#no"),Pm=a("%nd"),Pp=a(zQ),Py=a("%nu"),Pa=a("%+ld"),Pb=a("% ld"),Pd=a("%+li"),Pe=a("% li"),Pf=a("%lx"),Pg=a("%#lx"),Ph=a("%lX"),Pi=a("%#lX"),Pj=a("%lo"),Pk=a("%#lo"),O$=a("%ld"),Pc=a(Jl),Pl=a("%lu"),OZ=a("%+Ld"),O0=a("% Ld"),O2=a("%+Li"),O3=a("% Li"),O4=a("%Lx"),O5=a("%#Lx"),O6=a("%LX"),O7=a("%#LX"),O8=a("%Lo"),O9=a("%#Lo"),OY=a("%Ld"),O1=a(K3),O_=a("%Lu"),OM=a("%+d"),ON=a("% d"),OP=a("%+i"),OQ=a("% i"),OR=a("%x"),OS=a("%#x"),OT=a("%X"),OU=a("%#X"),OV=a("%o"),OW=a("%#o"),OL=a(sr),OO=a(sK),OX=a(xx),N6=a("@]"),N7=a("@}"),N8=a("@?"),N9=a("@\n"),N_=a("@."),N$=a("@@"),Oa=a("@%"),Ob=a("@"),OJ=a("CamlinternalFormat.Type_mismatch"),P7=a(ac),P8=[0,[11,a(fG),[2,0,[2,0,0]]],a(", %s%s")],Qv=[0,[11,a(so),[2,0,[12,10,0]]],a(Eo)],Qw=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Qu=a("Fatal error: out of memory in uncaught exception handler"),Qs=[0,[11,a(so),[2,0,[12,10,0]]],a(Eo)],Qo=[0,[2,0,[12,10,0]],a("%s\n")],Qg=a("Raised at"),Qh=a("Re-raised at"),Qi=a("Raised by primitive operation at"),Qj=a("Called from"),Qk=a(" (inlined)"),Qm=a(ac),Ql=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(zx),bNJ]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],Qn=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],Qb=a("Out of memory"),Qc=a("Stack overflow"),Qd=a("Pattern matching failed"),Qe=a("Assertion failed"),Qf=a("Undefined recursive module"),P9=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],P_=a(ac),P$=a(ac),Qa=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],P6=[0,[4,0,0,0,0],a(sr)],P4=[0,[3,0,0],a("%S")],P5=a(LD),Qp=[0,a(ac),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Qz=a("Fun.Finally_raised: "),Qx=a("Stdlib.Fun.Finally_raised"),QA=a(Ea),QP=[0,0],bNH=a("OCAMLRUNPARAM"),bNF=a("CAMLRUNPARAM"),QB=a(ac),Rc=[3,0,3],Rd=a(e5),Q9=a(mK),Q_=a("<\/"),Q$=a(ac),Q5=a(mK),Q6=a(tm),Q7=a(ac),Q3=a("\n"),QZ=a(ac),Q0=a(ac),Q1=a(ac),Q2=a(ac),QY=[0,a(ac)],QU=a(ac),QV=a(ac),QW=a(ac),QX=a(ac),QS=[0,a(ac),0,a(ac)],QR=a(ac),QQ=a("Stdlib.Format.String_tag"),Rn=a(ac),Rs=a(B1),Ru=a(IB),Rv=a(yz),Rw=a(E$),Rx=a(GB),Ry=a(Hl),Rz=a(xV),RA=a(Lu),RB=a(sw),RC=a(Cd),RD=a(Lt),RE=a(ym),RF=a(Lv),RG=a(J6),RH=a(wK),RI=a(AS),RJ=a(E_),RK=a(Br),RL=a(Ks),RM=a(Dc),RN=a(pF),RO=a(Fx),RP=a(Az),RQ=a(DS),RR=a(Af),RS=a(yX),RT=a(pp),RU=a(tA),RV=a(BF),RW=a(xh),RX=a(Cv),RY=a(Is),RZ=a(Ay),R0=a(Mp),R1=a(xK),R2=a(BA),R3=a(xy),R4=a(zh),R5=a(IA),R6=a(Gr),R7=a(B7),R8=a(yu),R9=a(Bo),R_=a(Kx),R$=a(IS),Sa=a(zO),Sb=a(Mf),Sc=a(B5),Sd=a(Fv),Se=a(Ku),Sf=a(KY),Sg=a(F$),Sh=a(Dl),Si=a(yq),Sj=a(zN),Sk=a(Cc),Sl=a(JU),Sm=a(H_),Sn=a(DN),So=a(Ak),Sp=a(DG),Sq=a(Hk),Sr=a(zl),Ss=a(Bn),St=a(B_),Su=a(FE),Sv=a(LI),Sw=a(L2),Sx=[0,[11,a("EUNKNOWNERR "),[4,0,0,0,0]],a("EUNKNOWNERR %d")],Rt=[0,[11,a("Unix.Unix_error(Unix."),[2,0,[11,a(fG),[3,0,[11,a(fG),[3,0,[12,41,0]]]]]]],a("Unix.Unix_error(Unix.%s, %S, %S)")],Ro=a(kE),Rp=a(ac),Rq=a(ac),Rr=a(kE),Sy=a("0.0.0.0"),Sz=a("127.0.0.1"),bNE=a("::"),bND=a("::1"),SP=a(ac),SQ=a(ac),S1=a("Str.matched_group"),SW=[0,92],SY=a("\\( group not closed by \\)"),SX=[0,a(A$),521,10],SZ=a("[ class not closed by ]"),S0=a("spurious \\) in regular expression"),SS=a("too many r* or r+ where r is nullable"),ST=a(ac),SU=a(ac),SR=[0,a(A$),sb,11],S5=[0,a(Dq),52,4],S4=[0,a(Dq),58,34],S3=a("Not a valid time zone"),Vf=a("Not a month"),Vd=a("Not a day"),Va=a("from_business: bad week"),Vb=a("from_business: bad date"),Un=[0,a(KZ),o6,4],Um=[0,a(KZ),dl,4],Uf=[0,-4713,12,31],Ug=[0,Lq,1,23],Uh=[0,kk,10,14],Ui=[0,kk,10,5],Ud=a("Date.Out_of_bounds"),Ue=a("Date.Undefined"),UD=a("Date.Period.Not_computable"),UM=[0,31,59,90,nR,cZ,hn,212,243,273,304,xf,nb],Vj=[0,a(om),cW,6],Vi=[0,a(om),z6,4],Vh=[0,a(om),j6,6],Vg=[0,a(om),67,4],WG=a("seconds_since_1970"),WD=a("second"),WB=a("minute"),Wz=a("hour"),Wv=a("date"),Ws=a("Cannot create the "),Wj=a("%j (year not provided)"),V7=a("%:"),V6=a("%::::"),Wq=[0,a(f_),402,6],V8=a(Fl),V9=a(":::z"),V_=a(Lk),V$=a(y_),Wa=[0,a(f_),509,12],Wb=a("am"),Wc=a("pm"),Wd=a(gf),We=a(gf),Wf=a("%P"),Wg=a("%V"),Wh=a("%W"),Wi=a("%j"),Wp=a("%w"),V5=a(Fk),Wk=a(Ip),Wl=a(Gp),Wm=a(gf),Wn=a(gf),Wo=a("%p"),Wr=[0,a(f_),po,6],V1=a("[\\+-]"),V2=a(fc),V3=a(cU),V4=[0,a(f_),396,8],VZ=a(" (either week or year is not provided)"),V0=a("[0-9][0-9]\\(\\.[0-9]*\\)?"),VX=[0,a(f_),mP,6],VW=a("z\\|:z\\|::z"),VS=a(Lk),VT=a(y_),VU=a(Fl),VV=[0,a(f_),s3,13],VR=a(Fk),VY=[0,a(f_),297,6],VQ=a(Ip),VP=a(Gp),VI=a(" does not match the format "),VH=a("bad format: "),VG=[0,a(f_),81,2],Vu=a("January"),Vv=a("February"),Vw=a("March"),Vx=a("April"),Vy=a("May"),Vz=a("June"),VA=a("July"),VB=a("August"),VC=a("September"),VD=a("October"),VE=a("November"),VF=a("December"),Vn=a("Sunday"),Vo=a("Monday"),Vp=a("Tuesday"),Vq=a("Wednesday"),Vr=a("Thursday"),Vs=a("Friday"),Vt=a("Saturday"),VJ=a("%b"),VK=a(KL),VL=a("%A"),VM=a("[a-zA-Z]+"),Wx=a(sK),WM=gY(1,0,0),WI=a("Z.Overflow"),WJ=a(n0),WQ=a(ac),WR=a("+inf"),WS=a("-inf"),WT=a(Mo),WU=a("undef"),WW=[0,a("q.ml"),j4,25],WV=a("Q.of_string: invalid digit"),WO=a(yh),WN=a(yh),W0=a("Buf.extend: reached Sys.max_string_length"),Xy=[0,a(sf),72,32],Xv=[0,a(sf),72,32],Xu=a("Root is not an object or array"),Xq=a("NaN value not allowed in standard JSON"),Xr=[0,[8,[0,0,3],0,[0,16],0],a(yP)],Xt=[0,[8,[0,0,3],0,[0,17],0],a(KD)],Xs=a(Hv),Xo=a("Infinity value not allowed in standard JSON"),Xp=a("-Infinity value not allowed in standard JSON"),Xk=a("NaN"),Xl=[0,[8,[0,0,3],0,[0,16],0],a(yP)],Xn=[0,[8,[0,0,3],0,[0,17],0],a(KD)],Xm=a(Hv),Xi=a("Infinity"),Xj=a("-Infinity"),Xf=a(xG),Xg=a(zX),Xe=a("null"),W_=a(xj),W$=a(At),Xa=a(Be),Xb=a("\\f"),Xc=a(Hi),Xd=a('\\"'),W9=a(xT),W8=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],W6=a("\\u00"),W3=[0,a(sf),72,32],W1=a("Yojson.Json_error"),W5=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],Xx=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],XA=[0,a(sE),a(sN),a(rY),a(tk),a(r4),a(ac),a(ac),a(ac),a(ac),a(ac),a(ac)],Yy=a("unreachable due to the [is_subscope_call] test"),YA=a("unreachable due to the [is_subscope_input_var_def] test"),YB=a("]"),YC=a("["),YD=a(" ]): expected variable definition (function output), found: "),YE=a(fG),YF=a(w1),YG=a(" ]): expected variable definition (function output), found: end of tokens"),YH=a(fG),YI=a(w1),Yz=a("Unexpected event: "),YK=a("Missing function output variable definition."),YJ=a("Invalid start of function call."),Yx=a(P),Yw=a(O),YL=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],Ym=a(G5),Yn=a(fG),Yo=[0,[11,a(A4),0],a(A4)],Yp=a(G5),Yq=a(fG),Yr=[0,[11,a(DW),0],a(DW)],Ys=a(fG),Yt=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],Yu=[0,[11,a(FZ),0],a(FZ)],X8=[0,c0,a("VarComputation")],X9=[0,c0,a("FunCall")],X_=a(Cg),X$=a("inputs"),Ya=a(G9),Yb=[0,c0,a("SubScopeCall")],Yc=a("fun_calls"),Yd=a("value"),Ye=a(G9),Yf=a("pos"),Yg=a(O),Yh=a(Cg),Yi=a(P),Yj=a("fun_name"),XX=[0,cm,[0,[0,c0,a("Unit")],0]],XY=[0,cm,[0,[0,c0,a("Unembeddable")],0]],XZ=[0,c0,a("Bool")],X0=[0,c0,a("Money")],X1=[0,c0,a("Integer")],X2=[0,c0,a("Decimal")],X3=[0,c0,a("Date")],X4=[0,c0,a("Duration")],X5=[0,c0,a("Enum")],X6=[0,c0,a("Struct")],X7=[0,c0,a("Array")],XU=[0,[12,44,[17,[0,a("@ "),1,0],0]],a(",@ ")],XT=[0,[4,0,0,0,[12,32,[2,0,0]]],a("%d %s")],XQ=a("days"),XR=a("months"),XS=a("years"),XV=[0,[15,0],a(y2)],XW=a("empty duration"),XC=a("law_headings"),XD=a("end_column"),XE=a("end_line"),XF=a("start_column"),XG=a("start_line"),XH=a("filename"),XI=a("Runtime_ocaml.Runtime.EmptyError"),XJ=a("Runtime_ocaml.Runtime.AssertionFailed"),XK=a("Runtime_ocaml.Runtime.ConflictError"),XL=a("Runtime_ocaml.Runtime.UncomparableDurations"),XN=a("Runtime_ocaml.Runtime.ImpossibleDate"),XP=a("Runtime_ocaml.Runtime.NoValueProvided"),YN=a("Jsoo_runtime.Error.Exn"),YO=a(s$),Y6=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,bNK]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],Y7=a("No rule applies in the given context to give a value to the variable"),Y8=a("A conflict happend between two rules giving a value to the variable"),Y9=a("A failure happened in the assertion"),YZ=a("Begin call"),Y0=a("End call"),Y1=a("Variable definition"),Y2=a("Decision taken"),YX=a(ac),YV=a("date_of_jsoo: invalid date"),YT=[0,a(GY),a(BI),a(DP)],YU=[0,a(GY),a(DP),a(BI)],alr=[0,a(bp),90,14,90,29,[0,a(bP),[0,a(bq),0]]],alk=[0,a(bp),eg,18,eg,64,[0,a(bP),[0,a(bq),0]]],all=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alj=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alf=[0,a(bp),87,14,87,53,[0,a(bP),[0,a(bq),0]]],alb=[0,a(bp),86,14,86,50,[0,a(bP),[0,a(bq),0]]],ak9=[0,a(bp),89,14,89,46,[0,a(bP),[0,a(bq),0]]],ak5=[0,a(bp),88,14,88,54,[0,a(bP),[0,a(bq),0]]],ak0=[0,a(bp),97,18,97,72,[0,a(bP),[0,a(bq),0]]],ak1=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akZ=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akU=[0,a(bp),93,18,93,67,[0,a(bP),[0,a(bq),0]]],akV=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akT=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akP=[0,a(bp),bt,14,bt,30,[0,a("Article L131-1"),[0,a(bP),[0,a(bq),0]]]],akM=[0,0],akN=[1,0],akO=[2,0],akQ=[0,a(bp),76,11,76,27,[0,a(bP),[0,a(bq),0]]],akL=[0,a(bp),76,11,76,27,[0,a(bP),[0,a(bq),0]]],akR=[0,a(ez),[0,a("enfants_\xc3\xa0_charge"),0]],akW=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],akX=[0,a(ez),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],akS=[0,a(H),86,10,86,57,[0,a(L),[0,a(I),[0,a(B),0]]]],ak2=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak3=[0,a(ez),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],akY=[0,a(H),87,10,87,62,[0,a(L),[0,a(I),[0,a(B),0]]]],ak6=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak7=[0,a(ez),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],ak4=[0,a(H),88,10,88,27,[0,a(L),[0,a(I),[0,a(B),0]]]],ak_=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ak$=[0,a(ez),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],ak8=[0,a(H),89,10,89,19,[0,a(L),[0,a(I),[0,a(B),0]]]],alc=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],ald=[0,a(ez),[0,a("allocations_familiales.date_courante"),0]],ala=[0,a(H),92,10,92,23,[0,a(L),[0,a(I),[0,a(B),0]]]],alg=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],alh=[0,a(ez),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],ale=[0,a(H),95,10,95,26,[0,a(L),[0,a(I),[0,a(B),0]]]],alm=[0,a(bp),77,3,77,25,[0,a(bP),[0,a(bq),0]]],aln=[0,a(ez),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],ali=[0,a(H),hp,10,hp,54,[0,a(L),[0,a(I),[0,a(B),0]]]],alo=[0,a(ez),[0,a(w_),[0,a(X),0]]],alp=[0,a(ez),[0,a(w_),[0,a(X),0]]],als=[0,a(bp),80,10,80,25,[0,a(bP),[0,a(bq),0]]],alq=[0,a(bp),80,10,80,25,[0,a(bP),[0,a(bq),0]]],alt=[0,a(ez),[0,a("i_montant_vers\xc3\xa9"),0]],akG=[0,a(bp),45,14,45,27,[0,a(gs),[0,a(bq),0]]],akF=a(p),akB=[0,a(bw),hn,14,hn,62,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],akw=[0,a(X),[0,a(ka),[0,a(P),0]]],akx=[0,a(X),[0,a(ka),0]],aky=[0,a(X),[0,a(ka),[0,a(O),0]]],akz=[0,a(X),[0,a(ka),0]],akA=a(p),aks=[0,a(bw),mp,14,mp,61,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ako=[0,a(bp),39,14,39,38,[0,a(gs),[0,a(bq),0]]],akj=[0,a(X),[0,a(kj),[0,a(P),0]]],akk=[0,a(X),[0,a(kj),0]],akl=[0,a(X),[0,a(kj),[0,a(O),0]]],akm=[0,a(X),[0,a(kj),0]],aki=a(p),akn=a(p),ake=[0,a(bp),37,14,37,32,[0,a(gs),[0,a(bq),0]]],akd=a(p),aj$=[0,a(em),mp,5,mp,43,[0,a("Article R521-4"),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aj0=[0,a(X),[0,a(fE),[0,a(P),0]]],aj1=[0,a(X),[0,a(fE),0]],aj2=[0,a(X),[0,a(fE),[0,a(O),0]]],aj3=[0,a(X),[0,a(fE),0]],aj4=a(eP),aj9=a(jR),aj_=a(cw),aj5=[0,a(X),[0,a(jN),[0,a(P),0]]],aj6=[0,a(X),[0,a(jN),0]],aj7=[0,a(X),[0,a(jN),[0,a(O),0]]],aj8=[0,a(X),[0,a(jN),0]],aka=[0,a(H),ia,11,ia,49,[0,a(L),[0,a(I),[0,a(B),0]]]],ajZ=[0,a(H),ia,11,ia,49,[0,a(L),[0,a(I),[0,a(B),0]]]],ajW=[0,a(em),eX,14,eX,46,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ajO=a(cY),ajP=[0,a(bw),no,5,277,41,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajL=a(cY),ajM=a(eP),ajN=a(cY),ajQ=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajJ=a(cY),ajK=[0,a(bw),265,5,rE,42,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajG=a(cY),ajH=a(eP),ajI=a(cY),ajR=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajS=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajF=[0,a(bw),mP,14,mP,55,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajE=a(p),ajr=[0,a(X),[0,a(bU),[0,a(P),0]]],ajs=[0,a(X),[0,a(bU),0]],ajt=[0,a(X),[0,a(bU),[0,a(O),0]]],aju=[0,a(X),[0,a(bU),0]],ajv=a(x),ajw=a("11"),ajx=a(hb),ajy=[0,a(bw),376,5,379,42,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ajq=a("0.0369"),ajz=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],aji=[0,a(X),[0,a(bU),[0,a(P),0]]],ajj=[0,a(X),[0,a(bU),0]],ajk=[0,a(X),[0,a(bU),[0,a(O),0]]],ajl=[0,a(X),[0,a(bU),0]],ajm=a(x),ajn=a(hb),ajo=[0,a(bw),385,5,sC,23,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ajh=a("0.0567"),ajp=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajA=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajg=[0,a(bw),22,14,22,40,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ajc=[0,a(X),[0,a(jQ),[0,a(P),0]]],ajd=[0,a(X),[0,a(jQ),0]],aje=[0,a(X),[0,a(jQ),[0,a(O),0]]],ajf=[0,a(X),[0,a(jQ),0]],ajB=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ajb=[0,a(H),cH,11,cH,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ai7=a(x),ai8=[0,a(bw),353,5,y8,69,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],ai9=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai4=[8,0],ai5=[0,a(a5),cZ,24,cZ,44,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ai6=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai_=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai3=[0,a(bw),18,14,18,34,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiZ=[0,a(bw),sz,14,sz,39,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiU=[0,a(X),[0,a(jS),[0,a(P),0]]],aiV=[0,a(X),[0,a(jS),0]],aiW=[0,a(X),[0,a(jS),[0,a(O),0]]],aiX=[0,a(X),[0,a(jS),0]],aiY=a(x),aiT=a(p),aiK=[0,a(X),[0,a(bU),[0,a(P),0]]],aiL=[0,a(X),[0,a(bU),0]],aiM=[0,a(X),[0,a(bU),[0,a(O),0]]],aiN=[0,a(X),[0,a(bU),0]],aiO=[0,a(bw),60,5,60,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiJ=a(s9),aiP=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiD=[0,a(X),[0,a(bU),[0,a(P),0]]],aiE=[0,a(X),[0,a(bU),0]],aiF=[0,a(X),[0,a(bU),[0,a(O),0]]],aiG=[0,a(X),[0,a(bU),0]],aiH=[0,a(bw),eg,5,eg,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiC=a(BY),aiI=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiw=[0,a(X),[0,a(bU),[0,a(P),0]]],aix=[0,a(X),[0,a(bU),0]],aiy=[0,a(X),[0,a(bU),[0,a(O),0]]],aiz=[0,a(X),[0,a(bU),0]],aiA=[0,a(bw),pq,5,pq,38,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aiv=a(Ca),aiB=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aip=[0,a(X),[0,a(bU),[0,a(P),0]]],aiq=[0,a(X),[0,a(bU),0]],air=[0,a(X),[0,a(bU),[0,a(O),0]]],ais=[0,a(X),[0,a(bU),0]],ait=[0,a(bp),28,5,28,44,[0,a(gs),[0,a(bq),0]]],aio=a(p),aiu=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aiQ=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ain=[0,a(H),cu,11,cu,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aik=[0,a(em),cH,14,cH,41,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aii=a(cw),aij=a(cw),aia=[8,0],aib=[0,a(a5),iS,5,iS,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ah9=a(x),ah_=a(xs),ah$=a(p),aic=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ah6=[8,0],ah7=[0,a(a5),z3,5,z3,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ah3=a(x),ah4=a("0.2379"),ah5=a(p),ah8=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ah0=[8,0],ah1=[0,a(a5),Aq,5,Aq,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahX=a(x),ahY=a("0.2437"),ahZ=a(p),ah2=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahU=[8,0],ahV=[0,a(a5),hh,5,hh,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahR=a(x),ahS=a("0.2496"),ahT=a(p),ahW=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahO=[8,0],ahP=[0,a(a5),sT,5,sT,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahL=a(x),ahM=a("0.2555"),ahN=a(p),ahQ=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahI=[8,0],ahJ=[0,a(a5),Fo,5,Fo,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahF=a(x),ahG=a("0.2613"),ahH=a(p),ahK=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahC=[8,0],ahD=[0,a(a5),Cl,5,Cl,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahz=a(x),ahA=a("0.2672"),ahB=a(p),ahE=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahw=[8,0],ahx=[0,a(a5),oy,5,oy,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aht=a(x),ahu=a("0.2804"),ahv=a(p),ahy=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahq=[8,0],ahr=[0,a(a5),mI,5,mI,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahn=a(x),aho=a("0.2936"),ahp=a(p),ahs=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahk=[8,0],ahl=[0,a(a5),Ju,5,Ju,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ahh=a(x),ahi=a("0.3068"),ahj=a(p),ahm=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aid=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahf=[8,0],ahg=[0,a(a5),j2,14,j2,50,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ahc=a(x),ahd=a(tB),ahe=a(p),aie=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag$=[0,a(bw),38,14,38,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ag8=a(x),ag9=a(tB),ag_=a(p),aha=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag6=[0,a(bw),79,14,79,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],ag3=a(x),ag4=a(s9),ag5=a(p),ag7=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ag1=[0,a(bw),bt,14,bt,50,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agY=a(x),agZ=a(BY),ag0=a(p),ag2=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ahb=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agT=[0,a(bw),43,14,43,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agP=a(ab),agQ=a(ab),agR=a("0.41"),agS=a(p),agU=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agN=[0,a(bw),84,14,84,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agJ=a(ab),agK=a(ab),agL=a("0.205"),agM=a(p),agO=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agH=[0,a(bw),dl,14,dl,59,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agD=a(ab),agE=a(ab),agF=a("0.1025"),agG=a(p),agI=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agy=[0,a(bw),mn,5,mn,43,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agx=a("0.20234"),agz=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agv=[0,a(bw),232,5,233,46,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agu=a("0.10117"),agw=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],ags=[0,a(bw),bu,5,bu,43,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agr=a("0.05059"),agt=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agj=a(cY),agk=[0,a(bw),173,5,174,68,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agg=a(cY),agh=a(eP),agi=a(cY),agl=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],age=a(cY),agf=[0,a(bw),sH,5,166,68,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],agb=a(cY),agc=a(eP),agd=a(cY),agm=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],agn=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aga=[0,a(bw),Jm,14,Jm,34,[0,a(c$),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],af$=a(p),ago=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],af_=[0,a(H),e6,11,e6,31,[0,a(L),[0,a(I),[0,a(B),0]]]],af1=[0,a(X),[0,a(fd),[0,a(P),0]]],af2=[0,a(X),[0,a(fd),0]],af3=[0,a(X),[0,a(fd),[0,a(O),0]]],af4=[0,a(X),[0,a(fd),0]],af5=[0,a(b8),hm,5,Ae,58,[0,a(Ah),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],af6=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afS=[0,a(X),[0,a(kF),[0,a(P),0]]],afT=[0,a(X),[0,a(kF),0]],afU=[0,a(X),[0,a(kF),[0,a(O),0]]],afV=[0,a(X),[0,a(kF),0]],afW=[0,a(X),[0,a(fd),[0,a(P),0]]],afX=[0,a(X),[0,a(fd),0]],afY=[0,a(X),[0,a(fd),[0,a(O),0]]],afZ=[0,a(X),[0,a(fd),0]],af0=[0,a(b8),IC,5,300,58,[0,a(Ah),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],af7=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afR=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],af8=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afQ=[0,a(H),eZ,11,eZ,34,[0,a(L),[0,a(I),[0,a(B),0]]]],afH=[8,0],afI=a(x),afJ=[0,a(a5),GQ,6,GQ,71,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],afK=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afF=a(x),afG=[0,a(b8),sJ,5,407,72,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],afL=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afM=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afD=a(ab),afE=[0,a(b8),eg,5,eg,70,[0,a(EO),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],afN=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afC=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afu=[8,0],afv=[0,a(a5),dP,5,251,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],afr=a(p),afs=a("0.145"),aft=a(p),afw=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afo=[8,0],afp=[0,a(a5),yU,5,Ih,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],afl=a(p),afm=a("0.1393"),afn=a(p),afq=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afi=[8,0],afj=[0,a(a5),rx,5,rE,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aff=a(p),afg=a("0.1335"),afh=a(p),afk=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afc=[8,0],afd=[0,a(a5),274,5,no,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ae$=a(p),afa=a("0.1278"),afb=a(p),afe=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ae8=[8,0],ae9=[0,a(a5),282,5,mP,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ae5=a(p),ae6=a("0.122"),ae7=a(p),ae_=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ae2=[8,0],ae3=[0,a(a5),290,5,tn,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeZ=a(p),ae0=a("0.1163"),ae1=a(p),ae4=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeW=[8,0],aeX=[0,a(a5),298,5,IC,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeT=a(p),aeU=a("0.1105"),aeV=a(p),aeY=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeQ=[8,0],aeR=[0,a(a5),306,5,307,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeN=a(p),aeO=a("0.0976"),aeP=a(p),aeS=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeK=[8,0],aeL=[0,a(a5),314,5,Ae,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeH=a(p),aeI=a("0.0847"),aeJ=a(p),aeM=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aeE=[8,0],aeF=[0,a(a5),322,5,ev,53,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aeB=a(p),aeC=a("0.0717"),aeD=a(p),aeG=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aey=[8,0],aez=[0,a(a5),s2,5,s2,49,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],aev=a(p),aew=a("5728"),aex=a(p),aeA=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afx=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aet=[8,0],aeu=[0,a(a5),j6,14,j6,49,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],aeq=a(p),aer=a(xz),aes=a(p),afy=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aen=a(x),aeo=[0,a(bw),362,5,rv,71,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],aem=a(xz),aep=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],ael=[0,a(bw),hh,29,hh,64,[0,a(j0),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(bd),[0,a(ai),0]]]]]]],aek=a(p),aeg=[0,a(em),iw,14,iw,34,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ad$=[0,a(X),[0,a(fE),[0,a(P),0]]],aea=[0,a(X),[0,a(fE),0]],aeb=[0,a(X),[0,a(fE),[0,a(O),0]]],aec=[0,a(X),[0,a(fE),0]],aed=a(eP),aee=a(jR),aef=a(cw),ad_=a(cw),ad6=[0,a(em),Id,14,Id,34,[0,a(nJ),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],adZ=[8,0],ad0=[0,a(a5),CP,5,CP,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adW=a(ab),adX=a(B$),adY=a(p),ad1=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adT=[8,0],adU=[0,a(a5),n7,5,n7,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adQ=a(ab),adR=a("0.0539"),adS=a(p),adV=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adN=[8,0],adO=[0,a(a5),h_,5,h_,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adK=a(ab),adL=a("0.0615"),adM=a(p),adP=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adH=[8,0],adI=[0,a(a5),Co,5,Co,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adE=a(ab),adF=a("0.069"),adG=a(p),adJ=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adB=[8,0],adC=[0,a(a5),L1,5,L1,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ady=a(ab),adz=a("0.0766"),adA=a(p),adD=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adv=[8,0],adw=[0,a(a5),gH,5,gH,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ads=a(ab),adt=a("0.0842"),adu=a(p),adx=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adp=[8,0],adq=[0,a(a5),pC,5,pC,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adm=a(ab),adn=a("0.0918"),ado=a(p),adr=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],adj=[8,0],adk=[0,a(a5),md,5,md,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],adg=a(ab),adh=a("0.1089"),adi=a(p),adl=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],add=[8,0],ade=[0,a(a5),zz,5,zz,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ada=a(ab),adb=a("0.1259"),adc=a(p),adf=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac9=[8,0],ac_=[0,a(a5),wO,5,wO,69,[0,a(bx),[0,a(bh),[0,a(bi),0]]]],ac6=a(ab),ac7=a("0.143"),ac8=a(p),ac$=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ad2=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac5=[0,a(a5),mt,14,mt,59,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],ac2=a(ab),ac3=a(s9),ac4=a(p),acY=[0,a(a5),m6,14,m6,67,[0,a(dA),[0,a(bh),[0,a(bi),0]]]],acU=a(ak),acV=a(ak),acW=a(B$),acX=a(p),acN=a(x),acO=[0,a(b8),420,6,421,72,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],acP=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acI=[0,a(cF),[0,a(id),[0,a(P),0]]],acJ=[0,a(cF),[0,a(id),0]],acK=[0,a(cF),[0,a(id),[0,a(O),0]]],acL=[0,a(cF),[0,a(id),0]],acM=[0,a(b8),o6,5,eX,59,[0,a(EO),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],acQ=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acH=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acR=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acG=[0,a(H),ee,11,ee,35,[0,a(L),[0,a(I),[0,a(B),0]]]],acA=a(x),acB=[0,a(b8),tg,5,to,71,[0,a(sg),[0,a(ff),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],acC=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acz=[0,a(bp),31,9,31,32,[0,a(gs),[0,a(bq),0]]],acD=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acy=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acs=[0,a(a5),23,5,23,69,[0,a(EB),[0,a(gO),0]]],acq=a(Lr),acr=a("5628600"),act=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],aco=[0,a(a5),56,5,56,69,[0,a(wZ),[0,a(gO),0]]],acm=a(L8),acn=a("5684900"),acp=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],ack=[0,a(a5),89,5,89,69,[0,a(F7),[0,a(gO),0]]],aci=a(DV),acj=a("5775900"),acl=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acg=[0,a(a5),hp,5,hp,69,[0,a(cQ),[0,a(Kj),[0,a(gO),0]]]],ace=a(FH),acf=a("5827900"),ach=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acu=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acd=[0,a(bw),HJ,14,HJ,30,[0,a(KI),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],acb=a(IF),acc=a("5595000"),ab7=[0,a(a5),30,5,30,69,[0,a(EB),[0,a(gO),0]]],ab5=a(Lr),ab6=a("7877000"),ab8=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab3=[0,a(a5),63,5,63,69,[0,a(wZ),[0,a(gO),0]]],ab1=a(L8),ab2=a("7955800"),ab4=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abZ=[0,a(a5),96,5,96,69,[0,a(F7),[0,a(gO),0]]],abX=a(DV),abY=a("8083100"),ab0=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abV=[0,a(a5),Dg,5,Dg,69,[0,a(cQ),[0,a(Kj),[0,a(gO),0]]]],abT=a(FH),abU=a("8155800"),abW=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab9=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abS=[0,a(bw),gt,14,gt,31,[0,a(KI),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],abQ=a(IF),abR=a("7830000"),abM=[0,a(bp),34,14,34,36,[0,a(gs),[0,a(bq),0]]],abN=[0,a(H),ny,11,ny,33,[0,a(L),[0,a(I),[0,a(B),0]]]],abL=[0,a(H),ny,11,ny,33,[0,a(L),[0,a(I),[0,a(B),0]]]],abI=[0,a(b8),75,14,75,64,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],abE=[0,a(cF),[0,a(dG),[0,a(P),0]]],abF=[0,a(cF),[0,a(dG),0]],abG=[0,a(cF),[0,a(dG),[0,a(O),0]]],abH=[0,a(cF),[0,a(dG),0]],abz=[0,a(em),83,19,83,69,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],abA=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aby=[0,a(em),56,14,56,41,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],abx=a("14"),abB=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],abw=[0,a(H),iQ,11,iQ,38,[0,a(L),[0,a(I),[0,a(B),0]]]],abr=[0,a(bp),33,14,33,40,[0,a(gs),[0,a(bq),0]]],abl=[0,a(H),s_,14,s_,46,[0,a(L),[0,a(I),[0,a(B),0]]]],abh=[0,a(H),Dr,14,Dr,56,[0,a(L),[0,a(I),[0,a(B),0]]]],abg=[1,0],abc=[0,a(H),rM,14,rM,50,[0,a(L),[0,a(I),[0,a(B),0]]]],aa8=[0,a(H),J3,14,J3,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aa2=[0,a(em),64,14,64,44,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],aa1=a(ak),aaX=[0,a(bw),tn,14,tn,35,[0,a(gE),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(bd),[0,a(ai),0]]]]]]],aaW=a(ak),aaR=[0,a(b8),yU,5,Ih,56,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaQ=[1,0],aaS=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaL=[0,a(b8),269,5,270,48,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaK=[0,0],aaM=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaJ=[0,a(b8),mn,5,mn,70,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaI=[0,0],aaN=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaH=[0,a(b8),Lj,5,Lj,69,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaG=[0,0],aaO=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaF=[0,a(b8),F5,5,F5,60,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaE=[0,0],aaP=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaT=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaD=[0,a(H),99,11,99,20,[0,a(L),[0,a(I),[0,a(B),0]]]],aaz=[0,a(b8),sb,5,sb,70,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aay=[1,0],aaA=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaw=[0,a(b8),on,5,ki,56,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aav=[2,0],aax=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aar=[0,a(b8),263,5,264,48,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aaq=[0,0],aas=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aap=[0,a(b8),l9,5,l9,69,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aao=[0,0],aat=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aan=[0,a(b8),Lm,5,Lm,60,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aam=[0,0],aau=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaB=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aal=[0,a(H),98,11,98,26,[0,a(L),[0,a(I),[0,a(B),0]]]],aaC=[0,a(X),[0,a(fE),0]],aaU=[0,a(X),[0,a("versement"),0]],aaY=[0,a(H),gU,11,gU,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aaV=[0,a(H),gU,11,gU,32,[0,a(L),[0,a(I),[0,a(B),0]]]],aaZ=[0,a(X),[0,a("nombre_enfants_l521_1"),0]],aa3=[0,a(H),oG,11,oG,41,[0,a(L),[0,a(I),[0,a(B),0]]]],aa0=[0,a(H),oG,11,oG,41,[0,a(L),[0,a(I),[0,a(B),0]]]],aa4=[0,a(X),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],aa5=[0,a(X),[0,a(F_),[0,a(rV),0]]],aa6=[0,a(X),[0,a(F_),[0,a(rV),0]]],aa9=[0,a(H),ne,3,ne,7,[0,a(L),[0,a(I),[0,a(B),0]]]],aa_=[0,a(X),[0,a("bmaf.date_courante"),0]],aa7=[0,a(ex),5,10,5,23,[0,a(b7),0]],aa$=[0,a(X),[0,a(A0),[0,a(gP),0]]],aba=[0,a(X),[0,a(A0),[0,a(gP),0]]],abd=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abe=[0,a(X),[0,a(Gm),0]],abb=[0,a(H),63,10,63,23,[0,a(bE),[0,a(I),[0,a(B),0]]]],abi=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abj=[0,a(X),[0,a(I5),0]],abf=[0,a(H),64,10,64,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],abm=[0,a(H),iC,3,iC,25,[0,a(L),[0,a(I),[0,a(B),0]]]],abn=[0,a(X),[0,a(Hx),0]],abk=[0,a(H),65,10,65,19,[0,a(bE),[0,a(I),[0,a(B),0]]]],abo=[0,a(X),[0,a(nD),[0,a(cF),0]]],abp=[0,a(X),[0,a(nD),[0,a(cF),0]]],abs=[0,a(H),iw,3,iw,21,[0,a(L),[0,a(I),[0,a(B),0]]]],abt=[0,a(X),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],abq=[0,a(H),80,10,80,17,[0,a(L),[0,a(I),[0,a(B),0]]]],abu=[0,a(X),[0,a(CE),[0,a(r0),0]]],abv=[0,a(X),[0,a(CE),[0,a(r0),0]]],abC=[0,a(X),[0,a(fd),0]],abJ=[0,a(H),96,11,96,61,[0,a(L),[0,a(I),[0,a(B),0]]]],abD=[0,a(H),96,11,96,61,[0,a(L),[0,a(I),[0,a(B),0]]]],abK=[0,a(X),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],abO=[0,a(X),[0,a(kF),0]],ab_=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],abP=[0,a(H),cZ,11,cZ,28,[0,a(L),[0,a(I),[0,a(B),0]]]],ab$=[0,a(X),[0,a("plafond_II_d521_3"),0]],acv=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],aca=[0,a(H),dH,11,dH,27,[0,a(L),[0,a(I),[0,a(B),0]]]],acw=[0,a(X),[0,a("plafond_I_d521_3"),0]],acE=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acx=[0,a(H),e$,11,e$,34,[0,a(L),[0,a(I),[0,a(B),0]]]],acF=[0,a(X),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],acS=[0,a(X),[0,a(jS),0]],acZ=[0,a(H),l7,11,l7,64,[0,a(L),[0,a(I),[0,a(B),0]]]],acT=[0,a(H),l7,11,l7,64,[0,a(L),[0,a(I),[0,a(B),0]]]],ac0=[0,a(X),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],ad3=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ac1=[0,a(H),bt,11,bt,56,[0,a(L),[0,a(I),[0,a(B),0]]]],ad4=[0,a(X),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],ad7=[0,a(H),kb,11,kb,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad5=[0,a(H),kb,11,kb,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad8=[0,a(X),[0,a("nombre_total_enfants"),0]],aeh=[0,a(H),iH,11,iH,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ad9=[0,a(H),iH,11,iH,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aei=[0,a(X),[0,a("nombre_moyen_enfants"),0]],afz=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],aej=[0,a(H),bo,11,bo,46,[0,a(L),[0,a(I),[0,a(B),0]]]],afA=[0,a(X),[0,a("montant_initial_base_premier_enfant"),0]],afO=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afB=[0,a(H),cX,11,cX,28,[0,a(L),[0,a(I),[0,a(B),0]]]],afP=[0,a(X),[0,a("droit_ouvert_base"),0]],af9=[0,a(X),[0,a(bU),0]],agp=[0,a(X),[0,a(ka),0]],agA=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agq=[0,a(H),dl,11,dl,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agB=[0,a(X),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],agV=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agC=[0,a(H),dV,11,dV,56,[0,a(L),[0,a(I),[0,a(B),0]]]],agW=[0,a(X),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],aif=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],agX=[0,a(H),bc,11,bc,47,[0,a(L),[0,a(I),[0,a(B),0]]]],aig=[0,a(X),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],ail=[0,a(H),o2,11,o2,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aih=[0,a(H),o2,11,o2,38,[0,a(L),[0,a(I),[0,a(B),0]]]],aim=[0,a(X),[0,a("rapport_enfants_total_moyen"),0]],aiR=[0,a(X),[0,a(jQ),0]],ai0=[0,a(H),e8,11,e8,36,[0,a(L),[0,a(I),[0,a(B),0]]]],aiS=[0,a(H),e8,11,e8,36,[0,a(L),[0,a(I),[0,a(B),0]]]],ai1=[0,a(X),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],ai$=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],ai2=[0,a(H),ed,11,ed,31,[0,a(L),[0,a(I),[0,a(B),0]]]],aja=[0,a(X),[0,a("montant_initial_base"),0]],ajC=[0,a(X),[0,a(jN),0]],ajT=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajD=[0,a(H),e0,11,e0,52,[0,a(L),[0,a(I),[0,a(B),0]]]],ajU=[0,a(X),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],ajX=[0,a(H),kK,11,kK,43,[0,a(L),[0,a(I),[0,a(B),0]]]],ajV=[0,a(H),kK,11,kK,43,[0,a(L),[0,a(I),[0,a(B),0]]]],ajY=[0,a(X),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],akb=[0,a(X),[0,a(kj),0]],akf=[0,a(H),nG,11,nG,29,[0,a(L),[0,a(I),[0,a(B),0]]]],akc=[0,a(H),nG,11,nG,29,[0,a(L),[0,a(I),[0,a(B),0]]]],akg=[0,a(X),[0,a("montant_vers\xc3\xa9_base"),0]],akp=[0,a(H),pl,11,pl,35,[0,a(L),[0,a(I),[0,a(B),0]]]],akh=[0,a(H),pl,11,pl,35,[0,a(L),[0,a(I),[0,a(B),0]]]],akq=[0,a(X),[0,a("montant_vers\xc3\xa9_majoration"),0]],akt=[0,a(H),oz,11,oz,58,[0,a(L),[0,a(I),[0,a(B),0]]]],akr=[0,a(H),oz,11,oz,58,[0,a(L),[0,a(I),[0,a(B),0]]]],aku=[0,a(X),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],akC=[0,a(H),nm,11,nm,59,[0,a(L),[0,a(I),[0,a(B),0]]]],akv=[0,a(H),nm,11,nm,59,[0,a(L),[0,a(I),[0,a(B),0]]]],akD=[0,a(X),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],akH=[0,a(H),eg,10,eg,23,[0,a(L),[0,a(I),[0,a(B),0]]]],akE=[0,a(H),eg,10,eg,23,[0,a(L),[0,a(I),[0,a(B),0]]]],akI=[0,a(X),[0,a("montant_vers\xc3\xa9"),0]],akJ=[0,a(b8),z6,5,234,6,[0,a(eA),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aag=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(Ab),[0,a(LE),[0,a(za),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]]]],aah=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aac=[0,a(b8),60,5,62,32,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aad=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aab=[0,a(b8),49,5,50,50,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],aae=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaf=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aai=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaa=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],aaj=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$$=[0,a(H),58,10,58,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$7=[0,a(b8),68,5,71,57,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],$8=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$6=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$9=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$5=[0,a(H),59,10,59,29,[0,a(bE),[0,a(I),[0,a(B),0]]]],$1=[0,a(em),xq,18,xq,41,[0,a(yy),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(dk),[0,a(ai),0]]]]]]],$Z=a(pB),$0=a(o4),$2=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$Y=[0,a(em),31,14,31,30,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],$W=a(pB),$X=a(o4),$L=[0,0],$N=[1,0],$O=[2,0],$P=[3,0],$Q=[4,0],$R=[5,0],$M=[0,a(b8),y8,5,hh,30,[0,a(Kb),[0,a(Hg),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],$S=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$K=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$E=[0,a(H),69,14,69,28,[0,a(bE),[0,a(I),[0,a(B),0]]]],$A=[0,a(H),70,14,70,32,[0,a(bE),[0,a(I),[0,a(B),0]]]],$w=[0,a(em),21,14,21,26,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],$v=a(xM),$x=[0,a(H),61,10,61,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$u=[0,a(H),61,10,61,22,[0,a(bE),[0,a(I),[0,a(B),0]]]],$y=[0,a(cF),[0,a(HF),0]],$B=[0,a(H),66,3,66,7,[0,a(bE),[0,a(I),[0,a(B),0]]]],$C=[0,a(cF),[0,a(LL),0]],$z=[0,a(b0),9,10,9,23,[0,a(B),[0,a(aZ),0]]],$F=[0,a(H),66,3,66,7,[0,a(bE),[0,a(I),[0,a(B),0]]]],$G=[0,a(cF),[0,a(KK),0]],$D=[0,a(b0),10,10,10,19,[0,a(B),[0,a(aZ),0]]],$H=[0,a(cF),[0,a(gz),[0,a(is),0]]],$I=[0,a(cF),[0,a(gz),[0,a(is),0]]],$T=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$J=[0,a(H),62,10,62,33,[0,a(bE),[0,a(I),[0,a(B),0]]]],$U=[0,a(cF),[0,a(w0),0]],$3=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$V=[0,a(H),60,11,60,27,[0,a(bE),[0,a(I),[0,a(B),0]]]],$4=[0,a(cF),[0,a(Am),0]],$_=[0,a(cF),[0,a(id),0]],aak=[0,a(cF),[0,a(dG),0]],$q=[0,a(ex),28,5,29,34,[0,a(B2),[0,a(b7),0]]],$p=a(yG),$r=[0,a(ex),6,10,6,17,[0,a(b7),0]],$n=[0,a(ex),48,5,49,34,[0,a(AL),[0,a(b7),0]]],$m=a(yn),$o=[0,a(ex),6,10,6,17,[0,a(b7),0]],$k=[0,a(ex),64,5,65,34,[0,a(JI),[0,a(b7),0]]],$j=a(Jz),$l=[0,a(ex),6,10,6,17,[0,a(b7),0]],$h=[0,a(ex),82,5,83,34,[0,a(x2),[0,a(b7),0]]],$g=a(Jt),$i=[0,a(ex),6,10,6,17,[0,a(b7),0]],$s=[0,a(ex),6,10,6,17,[0,a(b7),0]],$f=[0,a(ex),6,10,6,17,[0,a(b7),0]],$t=[0,a(gP),[0,a(al),0]],_5=[6,0],_7=[0,0],_8=[1,0],_9=[2,0],__=[3,0],_$=[4,0],$a=[5,0],$b=[7,0],_6=[0,a(b0),29,5,38,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],_4=a(xW),$c=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_1=[8,0],_2=[0,a(b0),47,5,49,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],_0=a(GH),_3=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_Q=[6,0],_S=[0,0],_T=[1,0],_U=[2,0],_V=[3,0],_W=[4,0],_X=[5,0],_Y=[7,0],_R=[0,a(b0),68,5,77,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],_P=a(IG),_Z=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_M=[8,0],_N=[0,a(b0),86,5,88,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],_L=a(EU),_O=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_B=[6,0],_D=[0,0],_E=[1,0],_F=[2,0],_G=[3,0],_H=[4,0],_I=[5,0],_J=[7,0],_C=[0,a(b0),bc,5,hp,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],_A=a(Bi),_K=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_x=[8,0],_y=[0,a(b0),eX,5,cu,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],_w=a(Li),_z=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_m=[6,0],_o=[0,0],_p=[1,0],_q=[2,0],_r=[3,0],_s=[4,0],_t=[5,0],_u=[7,0],_n=[0,a(b0),gU,5,FS,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],_l=a(By),_v=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],_i=[8,0],_j=[0,a(b0),sH,5,j6,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],_h=a(x5),_k=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z9=[6,0],Z$=[0,0],_a=[1,0],_b=[2,0],_c=[3,0],_d=[4,0],_e=[5,0],_f=[7,0],Z_=[0,a(b0),mt,5,m6,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],Z8=a(HZ),_g=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z5=[8,0],Z6=[0,a(b0),l9,5,zj,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],Z4=a(DH),Z7=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],$d=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],Z3=[0,a(b0),11,10,11,22,[0,a(B),[0,a(aZ),0]]],$e=[0,a(is),[0,a(Ic),0]],Z0=[0,a(bp),12,14,12,25,[0,a(gs),[0,a(bq),0]]],ZV=[2,0],ZW=a(p),ZX=a(p),ZY=[1,0],ZZ=a("-1"),Z1=[0,a(H),81,10,81,21,[0,a(L),[0,a(I),[0,a(B),0]]]],ZU=[0,a(H),81,10,81,21,[0,a(L),[0,a(I),[0,a(B),0]]]],Z2=[0,a(r0),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],ZR=[0,a(em),78,14,78,41,[0,a(mS),[0,a(aQ),[0,a(aS),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],ZQ=a(hb),ZS=[0,a(H),77,10,77,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ZP=[0,a(H),77,10,77,37,[0,a(L),[0,a(I),[0,a(B),0]]]],ZT=[0,a(rV),[0,a(fd),0]],ZG=a(rG),ZH=a(rQ),ZI=a(sm),ZJ=a(sX),ZK=a(sM),ZL=a(rS),ZM=a(r8),ZN=a(s6),ZO=[0,a("Enfant"),0],Zw=a(n6),Zy=a(nq),Zz=a(l0),ZA=a(KF),ZB=a(zr),ZC=a(pM),ZD=a(Kg),ZE=a(mG),ZF=a(nC),Zx=[0,a(Jw),0],Zn=a(ni),Zp=a(X),Zq=a(rO),Zr=a(oX),Zs=a(CW),Zt=a(iR),Zu=a(BE),Zv=a(Hw),Zo=[0,a(Er),0],Zi=a("Compl\xc3\xa8te"),Zk=a("Partag\xc3\xa9e"),Zl=a("Z\xc3\xa9ro"),Zj=[0,a("PriseEnCompte"),0],Ze=a(j1),Zg=a(jT),Zh=a(JL),Zf=[0,a(Ke),0],Y_=a(A2),Za=a(C7),Zb=a(hc),Zc=a(D$),Zd=a(zn),Y$=[0,a(Gt),0],amt=a(ac),al5=a(n6),al6=a(nq),al7=a(FP),al8=a(l0),al9=a(nC),al_=a(D5),al$=a(yf),ama=a(pM),amb=a(mG),amd=[7,0],ame=[5,0],amf=[4,0],amg=[6,0],amh=[8,0],ami=[2,0],amj=[3,0],amk=[1,0],aml=[0,0],amc=[0,[11,a(be),[2,0,[11,a(BC),0]]],a(xX)],alO=a(xg),alP=a(y1),alQ=a(oX),alR=a(DE),alS=a(iR),alT=a(X),alU=a(ru),alV=a(ni),alX=[0,0],alY=[2,0],alZ=[1,0],al0=[5,0],al1=[6,0],al2=[3,0],al3=[7,0],al4=[4,0],alW=[0,[11,a(be),[2,0,[11,a(C8),0]]],a(Es)],alH=a(tt),alI=a(j1),alJ=a(jT),alL=[1,0],alM=[0,0],alN=[2,0],alK=[0,[11,a(be),[2,0,[11,a(yO),0]]],a(FU)],alw=a(hc),alx=a(rW),aly=a(sF),alz=a(s4),alA=a(rK),alC=[4,0],alD=[3,0],alE=[0,0],alF=[1,0],alG=[2,0],alB=[0,[11,a(be),[2,0,[11,a(Cb),0]]],a(A_)],alu=[0,a(BR),a(nK),a(gz),a(KJ),a(L$),a(xk),a(yj)],alv=[0,a(gz),a(xk),a(L$),a(yj),a(nK),a(BR),a(KJ)],amB=a("AllocationsFamilialesLib"),bIT=[0,a(f$),zZ,14,zZ,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],bIM=a(p),bIN=a(p),bIS=a(cw),bIO=[0,a(a6),[0,a(a7),[0,a(P),0]]],bIP=[0,a(a6),[0,a(a7),0]],bIQ=[0,a(a6),[0,a(a7),[0,a(O),0]]],bIR=[0,a(a6),[0,a(a7),0]],bII=[0,a(c),Gb,14,Gb,63,[0,a(bv),[0,a(d),0]]],bIE=[0,a(c),CQ,14,CQ,25,[0,a(bv),[0,a(d),0]]],bIy=[0,a(c),sy,5,sy,70,[0,a(bv),[0,a(d),0]]],bIu=[0,a(c),GV,14,GV,58,[0,a(bv),[0,a(d),0]]],bIq=[0,a(c),LA,14,LA,64,[0,a(bv),[0,a(d),0]]],bIm=[0,a(c),ti,14,ti,54,[0,a(bv),[0,a(d),0]]],bIi=[0,a(c),Ia,14,Ia,51,[0,a(bv),[0,a(d),0]]],bIc=[0,a(c),FL,14,FL,59,[0,a(bv),[0,a(d),0]]],bH_=[0,a(c),EG,14,EG,38,[0,a(bv),[0,a(d),0]]],bH6=[0,a(c),JH,14,JH,44,[0,a(bv),[0,a(d),0]]],bH2=[0,a(c),Du,14,Du,34,[0,a(bv),[0,a(d),0]]],bHY=[0,a(c),JO,14,JO,31,[0,a(bv),[0,a(d),0]]],bHU=[0,a(c),JV,14,JV,48,[0,a(bv),[0,a(d),0]]],bHV=[0,a(c),lR,11,lR,45,[0,a(bv),[0,a(d),0]]],bHT=[0,a(c),lR,11,lR,45,[0,a(bv),[0,a(d),0]]],bHW=[0,a(cP),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],bHZ=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH0=[0,a(cP),[0,a("calculette.m\xc3\xa9nage"),0]],bHX=[0,a(c),io,10,io,16,[0,a(as),[0,a(d),0]]],bH3=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH4=[0,a(cP),[0,a("calculette.demandeur"),0]],bH1=[0,a(c),ng,10,ng,19,[0,a(as),[0,a(d),0]]],bH7=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bH8=[0,a(cP),[0,a("calculette.informations_calcul"),0]],bH5=[0,a(c),m4,10,m4,29,[0,a(as),[0,a(d),0]]],bH$=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bIa=[0,a(cP),[0,a("calculette.date_courante"),0]],bH9=[0,a(c),nA,10,nA,23,[0,a(as),[0,a(d),0]]],bId=[0,a(c),e3,3,e3,13,[0,a(bv),[0,a(d),0]]],bIe=[0,a(cP),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bIb=[0,a(c),pg,10,pg,44,[0,a(as),[0,a(d),0]]],bIf=[0,a(cP),[0,a(C6),[0,a(a6),0]]],bIg=[0,a(cP),[0,a(C6),[0,a(a6),0]]],bIj=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIk=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],bIh=[0,a(c),io,10,io,16,[0,a(as),[0,a(d),0]]],bIn=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIo=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],bIl=[0,a(c),ng,10,ng,19,[0,a(as),[0,a(d),0]]],bIr=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIs=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.informations_calcul"),0]],bIp=[0,a(c),m4,10,m4,29,[0,a(as),[0,a(d),0]]],bIv=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIw=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],bIt=[0,a(c),nA,10,nA,23,[0,a(as),[0,a(d),0]]],bIz=[0,a(c),e4,3,e4,33,[0,a(bv),[0,a(d),0]]],bIA=[0,a(cP),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],bIx=[0,a(c),pg,10,pg,44,[0,a(as),[0,a(d),0]]],bIB=[0,a(cP),[0,a(x1),[0,a(a6),0]]],bIC=[0,a(cP),[0,a(x1),[0,a(a6),0]]],bIF=[0,a(c),j_,10,j_,21,[0,a(bv),[0,a(d),0]]],bID=[0,a(c),j_,10,j_,21,[0,a(bv),[0,a(d),0]]],bIG=[0,a(cP),[0,a(o_),0]],bIJ=[0,a(c),mM,11,mM,60,[0,a(bv),[0,a(d),0]]],bIH=[0,a(c),mM,11,mM,60,[0,a(bv),[0,a(d),0]]],bIK=[0,a(cP),[0,a(kw),0]],bIU=[0,a(c),oI,10,oI,21,[0,a(bv),[0,a(d),0]]],bIL=[0,a(c),oI,10,oI,21,[0,a(bv),[0,a(d),0]]],bIV=[0,a(cP),[0,a("aide_finale"),0]],bHP=[0,a(aT),Cp,14,Cp,33,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bHO=a(p),bHG=[0,a(az),[0,a(a7),[0,a(P),0]]],bHH=[0,a(az),[0,a(a7),0]],bHI=[0,a(az),[0,a(a7),[0,a(O),0]]],bHJ=[0,a(az),[0,a(a7),0]],bHK=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHL=[0,a(aA),[0,a(a7),0]],bHM=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHN=[0,a(aA),[0,a(a7),0]],bHC=[0,a(aT),C3,14,C3,36,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bHm=[0,a(az),[0,a(a7),[0,a(P),0]]],bHn=[0,a(az),[0,a(a7),0]],bHo=[0,a(az),[0,a(a7),[0,a(O),0]]],bHp=[0,a(az),[0,a(a7),0]],bHq=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHr=[0,a(aA),[0,a(a7),0]],bHs=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHt=[0,a(aA),[0,a(a7),0]],bHu=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHv=[0,a(aA),[0,a(a7),0]],bHw=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHx=[0,a(aA),[0,a(a7),0]],bHy=[0,a(az),[0,a(a7),[0,a(P),0]]],bHz=[0,a(az),[0,a(a7),0]],bHA=[0,a(az),[0,a(a7),[0,a(O),0]]],bHB=[0,a(az),[0,a(a7),0]],bHe=[0,a(aA),[0,a(a7),[0,a(P),0]]],bHf=[0,a(aA),[0,a(a7),0]],bHg=[0,a(aA),[0,a(a7),[0,a(O),0]]],bHh=[0,a(aA),[0,a(a7),0]],bHi=[0,a(az),[0,a(a7),[0,a(P),0]]],bHj=[0,a(az),[0,a(a7),0]],bHk=[0,a(az),[0,a(a7),[0,a(O),0]]],bHl=[0,a(az),[0,a(a7),0]],bHD=[0,a(c),pi,10,pi,32,[0,a(as),[0,a(d),0]]],bHd=[0,a(c),pi,10,pi,32,[0,a(as),[0,a(d),0]]],bHa=[0,a(aT),Iv,14,Iv,25,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bG8=[0,a(c),As,14,As,63,[0,a(as),[0,a(d),0]]],bG2=[0,a(c),w4,14,w4,62,[0,a(as),[0,a(d),0]]],bGY=[0,a(c),ET,14,ET,53,[0,a(as),[0,a(d),0]]],bGU=[0,a(c),Io,5,Io,65,[0,a(as),[0,a(d),0]]],bGQ=[0,a(c),Fj,14,Fj,68,[0,a(as),[0,a(d),0]]],bGM=[0,a(c),y9,14,y9,66,[0,a(as),[0,a(d),0]]],bGG=[0,a(c),Ax,14,Ax,68,[0,a(as),[0,a(d),0]]],bGH=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGF=[0,a(c),tE,14,tE,68,[0,a(as),[0,a(d),0]]],bGI=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGB=[0,a(aT),I$,14,I$,58,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bGA=[0,0],bGw=[0,a(c),Iy,14,Iy,64,[0,a(as),[0,a(d),0]]],bGq=[0,a(aT),cg,14,cg,50,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bGn=[2,0],bGo=[1,0],bGp=[2,0],bGj=[0,a(c),Lp,14,Lp,54,[0,a(as),[0,a(d),0]]],bGf=[0,a(c),H2,14,H2,45,[0,a(as),[0,a(d),0]]],bGb=[0,a(c),EZ,14,EZ,66,[0,a(as),[0,a(d),0]]],bF9=[0,a(c),Ii,14,Ii,60,[0,a(as),[0,a(d),0]]],bF5=[0,a(c),E7,14,E7,58,[0,a(as),[0,a(d),0]]],bFZ=[0,a(c),GL,14,GL,60,[0,a(as),[0,a(d),0]]],bF0=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFY=[0,a(c),Ky,14,Ky,60,[0,a(as),[0,a(d),0]]],bF1=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFU=[0,a(c),GM,14,GM,56,[0,a(as),[0,a(d),0]]],bFO=[0,a(c),Im,14,Im,67,[0,a(as),[0,a(d),0]]],bFK=[0,a(c),xm,14,xm,63,[0,a(as),[0,a(d),0]]],bFG=[0,a(c),yg,14,yg,60,[0,a(as),[0,a(d),0]]],bFA=[0,a(c),sU,14,sU,65,[0,a(as),[0,a(d),0]]],bFw=[0,a(aT),io,5,io,74,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bFs=[0,a(c),Dy,14,Dy,55,[0,a(as),[0,a(d),0]]],bFo=[0,a(c),A5,14,A5,52,[0,a(as),[0,a(d),0]]],bFk=[0,a(c),xP,14,xP,59,[0,a(as),[0,a(d),0]]],bFl=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFm=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],bFj=[0,a(c),h_,10,h_,23,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFp=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],bFn=[0,a(c),II,10,II,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFt=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFu=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],bFr=[0,a(c),Fq,10,Fq,19,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFx=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFy=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],bFv=[0,a(c),tg,10,tg,47,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFB=[0,a(c),e_,3,e_,34,[0,a(as),[0,a(d),0]]],bFC=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.informations_calcul"),0]],bFz=[0,a(c),to,10,to,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bFD=[0,a(a6),[0,a(wJ),[0,a(b2),0]]],bFE=[0,a(a6),[0,a(wJ),[0,a(b2),0]]],bFH=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFI=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],bFF=[0,a(c),FO,10,FO,16,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFL=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFM=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],bFJ=[0,a(c),oy,10,oy,19,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFP=[0,a(c),il,3,il,42,[0,a(as),[0,a(d),0]]],bFQ=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bFN=[0,a(c),sC,17,sC,30,[0,a(a8),[0,a(j),[0,a(d),0]]]],bFR=[0,a(a6),[0,a(Kn),[0,a(cf),0]]],bFS=[0,a(a6),[0,a(Kn),[0,a(cf),0]]],bFV=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bFW=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],bFT=[0,a(c),sI,10,sI,25,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF2=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF3=[0,a(a6),[0,a("calcul_allocation_logement.informations_calcul"),0]],bFX=[0,a(c),CB,10,CB,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF6=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF7=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bF4=[0,a(c),LN,10,LN,27,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bF_=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bF$=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],bF8=[0,a(c),Mi,10,Mi,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGc=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGd=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],bGa=[0,a(c),Ig,10,Ig,35,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGg=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGh=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],bGe=[0,a(c),A7,10,A7,14,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGk=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGl=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],bGi=[0,a(c),Db,10,Db,23,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGr=[0,a(c),cv,3,cv,29,[0,a(as),[0,a(d),0]]],bGs=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],bGm=[0,a(c),F1,10,F1,19,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bGt=[0,a(a6),[0,a(La),[0,a(az),0]]],bGu=[0,a(a6),[0,a(La),[0,a(az),0]]],bGx=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGy=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],bGv=[0,a(c),Ac,10,Ac,25,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGC=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGD=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bGz=[0,a(c),yR,10,yR,19,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGJ=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGK=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.informations_calcul"),0]],bGE=[0,a(c),rD,10,rD,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGN=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGO=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bGL=[0,a(c),KX,10,KX,27,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGR=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGS=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bGP=[0,a(c),DJ,10,DJ,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGV=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bGW=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bGT=[0,a(c),Ft,10,Ft,35,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bGZ=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bG0=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bGX=[0,a(c),Jn,10,Jn,14,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bG3=[0,a(c),cg,3,cg,37,[0,a(as),[0,a(d),0]]],bG4=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bG1=[0,a(c),LS,10,LS,23,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bG5=[0,a(a6),[0,a(HP),[0,a(aA),0]]],bG6=[0,a(a6),[0,a(HP),[0,a(aA),0]]],bG9=[0,a(c),ok,10,ok,59,[0,a(as),[0,a(d),0]]],bG7=[0,a(c),ok,10,ok,59,[0,a(as),[0,a(d),0]]],bG_=[0,a(a6),[0,a(kw),0]],bHb=[0,a(c),mw,10,mw,21,[0,a(as),[0,a(d),0]]],bG$=[0,a(c),mw,10,mw,21,[0,a(as),[0,a(d),0]]],bHc=[0,a(a6),[0,a(o_),0]],bHE=[0,a(a6),[0,a(a7),0]],bHQ=[0,a(c),mz,10,mz,29,[0,a(as),[0,a(d),0]]],bHF=[0,a(c),mz,10,mz,29,[0,a(as),[0,a(d),0]]],bHR=[0,a(a6),[0,a(fS),0]],bFd=[0,a(C),Lc,14,Lc,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bE$=[0,a(C),Fu,14,Fu,36,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEZ=[0,a(cb),[0,a(a7),[0,a(P),0]]],bE0=[0,a(cb),[0,a(a7),0]],bE1=[0,a(cb),[0,a(a7),[0,a(O),0]]],bE2=[0,a(cb),[0,a(a7),0]],bE3=[0,a(S),[0,a(bD),[0,a(P),0]]],bE4=[0,a(S),[0,a(bD),0]],bE5=[0,a(S),[0,a(bD),[0,a(O),0]]],bE6=[0,a(S),[0,a(bD),0]],bE7=[0,a(Y),[0,a(bD),[0,a(P),0]]],bE8=[0,a(Y),[0,a(bD),0]],bE9=[0,a(Y),[0,a(bD),[0,a(O),0]]],bE_=[0,a(Y),[0,a(bD),0]],bFa=[0,a(c),h4,10,h4,32,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEY=[0,a(c),h4,10,h4,32,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bET=[0,a(C),w6,14,w6,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bER=[1,0],bES=[1,0],bEN=[0,a(C),zA,14,zA,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEJ=[0,a(C),zw,14,zw,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEH=a(p),bEI=a(p),bED=[0,a(C),s8,14,s8,32,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEz=[0,a(C),Ij,14,Ij,31,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEv=[0,a(C),GE,5,GE,69,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEr=[0,a(C),HD,14,HD,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEn=[0,a(C),yM,14,yM,26,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEj=[0,a(C),Aa,14,Aa,52,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEf=[0,a(C),DA,14,DA,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bEb=[0,a(C),w$,14,w$,35,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD9=[0,a(C),In,14,In,67,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD5=[0,a(C),D1,14,D1,49,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bD1=[0,a(C),Cf,14,Cf,37,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDZ=a(p),bD0=a(p),bDT=[0,a(C),sx,14,sx,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDR=[3,0],bDS=[3,0],bDN=[0,a(C),G6,14,G6,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDJ=[0,a(C),KU,14,KU,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDF=[0,a(C),tp,14,tp,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDB=[0,a(C),H6,14,H6,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDx=[0,a(C),Bv,14,Bv,56,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDt=[0,a(C),zc,14,zc,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDp=[0,a(C),Ib,14,Ib,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDn=a(p),bDo=a(p),bDh=[0,a(C),yC,14,yC,45,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDd=[0,a(C),xw,14,xw,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bDb=a(p),bDc=a(p),bC9=[0,a(C),BN,14,BN,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bC5=[0,a(C),IN,14,IN,73,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bC1=[0,a(C),Bl,14,Bl,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCZ=[3,0],bC0=[3,0],bCV=[0,a(C),I8,14,I8,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCR=[0,a(C),xN,14,xN,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCN=[0,a(C),y3,14,y3,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCL=a(p),bCM=a(p),bCH=[0,a(C),En,14,En,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCD=[0,a(C),xr,14,xr,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCz=[0,a(C),Iu,14,Iu,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCv=[0,a(C),Ao,14,Ao,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCr=[0,a(C),HN,14,HN,61,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCn=[0,a(V),81,14,81,44,[0,a(dA),[0,a(b9),[0,a(R),0]]]],bCh=[0,0],bCi=[1,0],bCj=[1,0],bCk=[1,0],bCl=[0,0],bCm=[1,0],bCd=[0,a(C),JQ,14,JQ,31,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bCa=a(dU),bCb=a(rR),bCc=a(sS),bB8=[0,a(C),L3,14,L3,34,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bB3=[0,0],bB4=[2,0],bB5=[1,0],bB6=[0,0],bB7=[1,0],bB9=[0,a(c),oj,11,oj,31,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB2=[0,a(c),oj,11,oj,31,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB_=[0,a(az),[0,a(GI),0]],bCe=[0,a(c),oS,10,oS,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bB$=[0,a(c),oS,10,oS,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCf=[0,a(az),[0,a(ye),0]],bCo=[0,a(c),j8,11,j8,41,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCg=[0,a(c),j8,11,j8,41,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCp=[0,a(az),[0,a(zG),0]],bCs=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCt=[0,a(az),[0,a("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies_base"),0]],bCq=[0,a(c),DD,10,DD,37,[0,a(z),[0,a(t),[0,a(d),0]]]],bCw=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCx=[0,a(az),[0,a(CJ),0]],bCu=[0,a(c),HM,10,HM,35,[0,a(z),[0,a(t),[0,a(d),0]]]],bCA=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCB=[0,a(az),[0,a(IK),0]],bCy=[0,a(c),Ko,10,Ko,40,[0,a(z),[0,a(t),[0,a(d),0]]]],bCE=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCF=[0,a(az),[0,a(Ce),0]],bCC=[0,a(c),GZ,10,GZ,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bCI=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCJ=[0,a(az),[0,a(xJ),0]],bCG=[0,a(c),I3,10,I3,23,[0,a(z),[0,a(t),[0,a(d),0]]]],bCO=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCP=[0,a(az),[0,a(Dw),0]],bCK=[0,a(c),EM,10,EM,31,[0,a(z),[0,a(t),[0,a(d),0]]]],bCS=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCT=[0,a(az),[0,a(LK),0]],bCQ=[0,a(c),EQ,10,EQ,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bCW=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bCX=[0,a(az),[0,a(D9),0]],bCU=[0,a(c),G3,10,G3,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bC2=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC3=[0,a(az),[0,a(KE),0]],bCY=[0,a(c),Em,10,Em,31,[0,a(z),[0,a(t),[0,a(d),0]]]],bC6=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC7=[0,a(az),[0,a(KR),0]],bC4=[0,a(c),xl,10,xl,49,[0,a(z),[0,a(t),[0,a(d),0]]]],bC_=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bC$=[0,a(az),[0,a(Jx),0]],bC8=[0,a(c),IR,10,IR,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bDe=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDf=[0,a(az),[0,a("accession_propri\xc3\xa9t\xc3\xa9.charges_mensuelles_pr\xc3\xaat"),0]],bDa=[0,a(c),wQ,10,wQ,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bDi=[0,a(c),bJ,3,bJ,22,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDj=[0,a(az),[0,a(Eq),0]],bDg=[0,a(c),Kh,10,Kh,21,[0,a(z),[0,a(t),[0,a(d),0]]]],bDk=[0,a(az),[0,a(mj),[0,a(S),0]]],bDl=[0,a(az),[0,a(mj),[0,a(S),0]]],bDq=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDr=[0,a(az),[0,a(Jf),0]],bDm=[0,a(c),wT,10,wT,19,[0,a(G),[0,a(t),[0,a(d),0]]]],bDu=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDv=[0,a(az),[0,a(Mu),0]],bDs=[0,a(c),zP,10,zP,25,[0,a(G),[0,a(t),[0,a(d),0]]]],bDy=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDz=[0,a(az),[0,a(Ch),0]],bDw=[0,a(c),BM,10,BM,37,[0,a(G),[0,a(t),[0,a(d),0]]]],bDC=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDD=[0,a(az),[0,a(Gf),0]],bDA=[0,a(c),Hj,10,Hj,35,[0,a(G),[0,a(t),[0,a(d),0]]]],bDG=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDH=[0,a(az),[0,a(wU),0]],bDE=[0,a(c),B9,10,B9,40,[0,a(G),[0,a(t),[0,a(d),0]]]],bDK=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDL=[0,a(az),[0,a(FF),0]],bDI=[0,a(c),B6,10,B6,14,[0,a(G),[0,a(t),[0,a(d),0]]]],bDO=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDP=[0,a(az),[0,a(EP),0]],bDM=[0,a(c),B3,10,B3,23,[0,a(G),[0,a(t),[0,a(d),0]]]],bDU=[0,a(c),c8,3,c8,17,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bDV=[0,a(az),[0,a("logement_foyer.cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),0]],bDQ=[0,a(c),Ew,10,Ew,45,[0,a(G),[0,a(t),[0,a(d),0]]]],bDW=[0,a(az),[0,a(nL),[0,a(Y),0]]],bDX=[0,a(az),[0,a(nL),[0,a(Y),0]]],bD2=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD3=[0,a(az),[0,a(Aw),0]],bDY=[0,a(c),z5,10,z5,25,[0,a(N),[0,a(t),[0,a(d),0]]]],bD6=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD7=[0,a(az),[0,a(Bm),0]],bD4=[0,a(c),LV,10,LV,37,[0,a(N),[0,a(t),[0,a(d),0]]]],bD_=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bD$=[0,a(az),[0,a(AE),0]],bD8=[0,a(c),Dh,10,Dh,55,[0,a(N),[0,a(t),[0,a(d),0]]]],bEc=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEd=[0,a(az),[0,a(IH),0]],bEa=[0,a(c),AV,10,AV,23,[0,a(N),[0,a(t),[0,a(d),0]]]],bEg=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEh=[0,a(az),[0,a(xO),0]],bEe=[0,a(c),Da,10,Da,35,[0,a(N),[0,a(t),[0,a(d),0]]]],bEk=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEl=[0,a(az),[0,a(E2),0]],bEi=[0,a(c),AK,10,AK,40,[0,a(N),[0,a(t),[0,a(d),0]]]],bEo=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEp=[0,a(az),[0,a(yW),0]],bEm=[0,a(c),w3,10,w3,14,[0,a(N),[0,a(t),[0,a(d),0]]]],bEs=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEt=[0,a(az),[0,a(AX),0]],bEq=[0,a(c),Iw,10,Iw,30,[0,a(N),[0,a(t),[0,a(d),0]]]],bEw=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEx=[0,a(az),[0,a(K1),0]],bEu=[0,a(c),JR,10,JR,66,[0,a(N),[0,a(t),[0,a(d),0]]]],bEA=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEB=[0,a(az),[0,a(Ld),0]],bEy=[0,a(c),Fn,10,Fn,19,[0,a(N),[0,a(t),[0,a(d),0]]]],bEE=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEF=[0,a(az),[0,a(wS),0]],bEC=[0,a(c),Lo,10,Lo,20,[0,a(N),[0,a(t),[0,a(d),0]]]],bEK=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEL=[0,a(az),[0,a(F9),0]],bEG=[0,a(c),Df,10,Df,36,[0,a(N),[0,a(t),[0,a(d),0]]]],bEO=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEP=[0,a(az),[0,a("locatif.logement_meubl\xc3\xa9_d842_2"),0]],bEM=[0,a(c),GR,10,GR,32,[0,a(N),[0,a(t),[0,a(d),0]]]],bEU=[0,a(c),bC,3,bC,10,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bEV=[0,a(az),[0,a("locatif.changement_logement_d842_4"),0]],bEQ=[0,a(c),sa,10,sa,36,[0,a(N),[0,a(t),[0,a(d),0]]]],bEW=[0,a(az),[0,a(mr),[0,a(cb),0]]],bEX=[0,a(az),[0,a(mr),[0,a(cb),0]]],bFb=[0,a(az),[0,a(a7),0]],bFe=[0,a(c),pu,10,pu,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bFc=[0,a(c),pu,10,pu,29,[0,a($),[0,a(G),[0,a(t),[0,a(d),0]]]]],bFf=[0,a(az),[0,a(fS),0]],bFi=[0,a(C),1603,5,1605,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bFh=[0,a(C),1599,5,1601,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bFg=[0,a(C),Bt,5,1597,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bBZ=[0,a(c),Mt,14,Mt,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBY=[0,0],bBT=[0,a(aT),1148,5,1151,28,[0,a("Article L841-4"),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBS=[0,0],bBU=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBR=[0,a(aT),h5,14,h5,25,[0,a(he),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBM=[0,0],bBN=[0,0],bBO=[1,0],bBP=[2,0],bBQ=[0,0],bBC=a(p),bBD=[0,a(aT),j8,5,bJ,29,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBE=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBx=a(x),bBv=a(x),bBw=a(p),bBy=[0,a(aT),tj,5,sI,12,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBz=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBp=[0,a(aW),[0,a(fB),[0,a(P),0]]],bBq=[0,a(aW),[0,a(fB),0]],bBr=[0,a(aW),[0,a(fB),[0,a(O),0]]],bBs=[0,a(aW),[0,a(fB),0]],bBt=a(x),bBn=a(x),bBo=a(p),bBu=[0,a(aT),jY,5,jZ,72,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBA=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBB=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBF=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBe=[2,0],bBk=[1,0],bBl=[0,0],bBf=[0,a(cG),[0,a(dG),[0,a(P),0]]],bBg=[0,a(cG),[0,a(dG),0]],bBh=[0,a(cG),[0,a(dG),[0,a(O),0]]],bBi=[0,a(cG),[0,a(dG),0]],bBj=a(x),bBc=a(p),bBd=a(p),bBm=[0,a(aT),rZ,5,dR,29,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBG=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bA5=[2,0],bA$=[1,0],bBa=[0,0],bA6=[0,a(cG),[0,a(dG),[0,a(P),0]]],bA7=[0,a(cG),[0,a(dG),0]],bA8=[0,a(cG),[0,a(dG),[0,a(O),0]]],bA9=[0,a(cG),[0,a(dG),0]],bA_=a(x),bA3=a(x),bA4=a(p),bBb=[0,a(aT),jO,5,sc,11,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBH=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAY=[0,0],bAZ=[1,0],bA0=[3,0],bA1=[4,0],bA2=[0,a(aT),km,5,kx,52,[0,a(h8),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bBI=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAX=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAT=[0,a(aT),ts,14,ts,25,[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]],bAS=[0,0],bAR=[2,0],bAN=[0,a(c),GW,14,GW,56,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAJ=[0,a(c),JZ,14,JZ,63,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAB=[0,a(C),4418,5,4426,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAC=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAA=[0,a(C),4399,5,4406,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAD=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAz=[0,a(C),4380,5,4389,28,[0,a(sp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAE=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAF=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAy=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAt=[0,a(aT),Jb,5,Jb,73,[0,a("Article L841-3"),[0,a(bG),[0,a(db),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bAu=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAs=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAl=[0,a(C),Jr,9,Jr,55,[0,a(KN),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAm=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAk=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAn=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAo=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],bAg=[0,a(C),FR,9,FR,68,[0,a(KN),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bAh=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAf=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAi=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAj=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],bAc=[0,a(c),AO,14,AO,47,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz_=[0,a(c),md,14,md,43,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz6=[0,a(c),oT,14,oT,40,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz0=[0,a(c),yJ,14,yJ,46,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzZ=[6,0],bzV=[0,a(c),pC,14,pC,56,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzU=[1,0],bzQ=[0,a(c),FG,14,FG,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzM=[0,a(C),Cy,14,Cy,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]],bzN=[0,a(c),m2,11,m2,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzL=[0,a(c),m2,11,m2,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzO=[0,a(b2),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bzR=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzS=[0,a(b2),[0,a(Gm),0]],bzP=[0,a(bO),46,10,46,23,[0,a(bQ),0]],bzW=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bzX=[0,a(b2),[0,a(I5),0]],bzT=[0,a(bO),47,10,47,29,[0,a(bQ),0]],bz1=[0,a(c),iX,3,iX,25,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz2=[0,a(b2),[0,a(Hx),0]],bzY=[0,a(bO),48,10,48,19,[0,a(bQ),0]],bz3=[0,a(b2),[0,a(nD),[0,a(cG),0]]],bz4=[0,a(b2),[0,a(nD),[0,a(cG),0]]],bz7=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bz8=[0,a(b2),[0,a(w9),0]],bz5=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],bz$=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAa=[0,a(b2),[0,a(I4),0]],bz9=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],bAd=[0,a(c),cV,3,cV,22,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAe=[0,a(b2),[0,a(Mr),0]],bAb=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],bAp=[0,a(b2),[0,a(px),[0,a(aW),0]]],bAq=[0,a(b2),[0,a(px),[0,a(aW),0]]],bAv=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAr=[0,a(c),gj,11,gj,50,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAw=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_sociale"),0]],bAG=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAx=[0,a(c),cW,11,cW,29,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAH=[0,a(b2),[0,a("condition_logement"),0]],bAK=[0,a(c),gH,10,gH,59,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAI=[0,a(c),gH,10,gH,59,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAL=[0,a(b2),[0,a(kw),0]],bAO=[0,a(c),oZ,10,oZ,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAM=[0,a(c),oZ,10,oZ,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAP=[0,a(b2),[0,a(tu),0]],bAU=[0,a(c),i0,10,i0,31,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAQ=[0,a(c),i0,10,i0,31,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAV=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bBJ=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bAW=[0,a(c),ce,11,ce,52,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBK=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bBV=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBL=[0,a(c),ib,10,ib,16,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBW=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bB0=[0,a(c),pd,10,pd,33,[0,a(aF),[0,a(j),[0,a(d),0]]]],bBX=[0,a(c),pd,10,pd,33,[0,a(aF),[0,a(j),[0,a(d),0]]]],bB1=[0,a(b2),[0,a("\xc3\xa9ligibilit\xc3\xa9_avec_condition_logement"),0]],bzH=[0,a(aT),fO,5,586,36,[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]],bzI=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzG=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzC=[0,a(c),KV,14,KV,56,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzy=[0,a(c),yY,14,yY,63,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzr=[0,a(aT),661,5,kp,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzs=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzq=[0,a(aT),jU,5,tz,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzt=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzp=[0,a(aT),hq,5,641,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzu=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzk=[0,a(C),3758,5,sQ,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],bzl=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzg=[0,a(cf),[0,a(kn),[0,a(P),0]]],bzh=[0,a(cf),[0,a(kn),0]],bzi=[0,a(cf),[0,a(kn),[0,a(O),0]]],bzj=[0,a(cf),[0,a(kn),0]],bzf=[0,a(aT),hr,5,kD,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzm=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzb=[0,a(cf),[0,a(kc),[0,a(P),0]]],bzc=[0,a(cf),[0,a(kc),0]],bzd=[0,a(cf),[0,a(kc),[0,a(O),0]]],bze=[0,a(cf),[0,a(kc),0]],bza=[0,a(aT),fI,5,616,30,[0,a(ke),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bzn=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzo=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by$=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by5=[0,a(c),sJ,14,sJ,47,[0,a(a8),[0,a(j),[0,a(d),0]]]],by1=[0,a(c),JC,14,JC,43,[0,a(a8),[0,a(j),[0,a(d),0]]]],byX=[0,a(c),mY,14,mY,40,[0,a(a8),[0,a(j),[0,a(d),0]]]],byQ=[0,a(aT),jV,5,769,30,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byR=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byP=[0,a(aT),737,5,742,30,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byS=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byO=[0,a(aT),nS,31,nS,54,[0,a(rC),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],byT=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byN=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byJ=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byK=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byI=[0,a(c),i2,11,i2,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byC=[0,a(C),3085,5,3088,46,[0,a("Article R832-7"),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byD=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byB=[0,a(C),3050,5,3052,47,[0,a("Article R832-5"),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byE=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byF=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byA=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byG=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byz=[0,a(c),eb,11,eb,41,[0,a(a8),[0,a(j),[0,a(d),0]]]],byH=[0,a(cf),[0,a(kc),0]],byL=[0,a(cf),[0,a(kn),0]],byU=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byM=[0,a(c),ej,11,ej,34,[0,a(a8),[0,a(j),[0,a(d),0]]]],byV=[0,a(cf),[0,a("condition_logement_pr\xc3\xaat"),0]],byY=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],byZ=[0,a(cf),[0,a(w9),0]],byW=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],by2=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],by3=[0,a(cf),[0,a(I4),0]],by0=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],by6=[0,a(c),im,3,im,22,[0,a(a8),[0,a(j),[0,a(d),0]]]],by7=[0,a(cf),[0,a(Mr),0]],by4=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],by8=[0,a(cf),[0,a(px),[0,a(aW),0]]],by9=[0,a(cf),[0,a(px),[0,a(aW),0]]],bzv=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],by_=[0,a(c),cd,11,cd,38,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzw=[0,a(cf),[0,a("condition_logement_bailleur"),0]],bzz=[0,a(c),nF,10,nF,59,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzx=[0,a(c),nF,10,nF,59,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzA=[0,a(cf),[0,a(kw),0]],bzD=[0,a(c),l_,10,l_,52,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzB=[0,a(c),l_,10,l_,52,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzE=[0,a(cf),[0,a(tu),0]],bzJ=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzF=[0,a(c),gb,10,gb,21,[0,a(a8),[0,a(j),[0,a(d),0]]]],bzK=[0,a(cf),[0,a(o_),0]],byw=[0,a(C),xc,14,xc,40,[0,a("Article D823-22"),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],byr=[0,a(aT),556,5,kC,43,[0,a("Article L823-8"),[0,a(aa),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],bys=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byq=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],bym=[0,a(V),BT,14,BT,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(R),0]]]],byj=a(x),byf=a(x),byd=a(ak),bye=a(p),byg=a(su),byh=a(ak),byi=a(p),byl=a(p),byk=a("2.4"),bx_=[0,a(C),2136,6,2144,77,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bx$=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx9=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx3=[0,a(c),IY,14,IY,43,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxZ=[0,a(c),w7,14,w7,39,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxV=[0,a(c),L7,14,L7,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxP=[0,a(c),Gq,14,Gq,65,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxJ=a(x),bxH=a(ak),bxI=a(p),bxK=[0,a(C),2127,5,2132,71,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxL=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxG=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxC=[0,a(C),zm,14,zm,47,[0,a(rJ),[0,a(lY),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxD=[0,a(c),j4,11,j4,44,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxB=[0,a(c),j4,11,j4,44,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxE=[0,a(dD),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],bxM=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxF=[0,a(c),gL,11,gL,32,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxN=[0,a(dD),[0,a("condition_rang_enfant"),0]],bxQ=[0,a(c),Ge,3,Ge,40,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxR=[0,a(dD),[0,a(KT),0]],bxO=[0,a(d9),5,10,5,23,[0,a(b7),0]],bxS=[0,a(dD),[0,a(of),[0,a(gP),0]]],bxT=[0,a(dD),[0,a(of),[0,a(gP),0]]],bxW=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bxX=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bxU=[0,a(c),gt,10,gt,16,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx0=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx1=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bxY=[0,a(c),h9,10,h9,19,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx4=[0,a(c),h2,3,h2,18,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx5=[0,a(dD),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bx2=[0,a(c),hm,17,hm,30,[0,a(Z),[0,a(j),[0,a(d),0]]]],bx6=[0,a(dD),[0,a(IT),[0,a(aW),0]]],bx7=[0,a(dD),[0,a(IT),[0,a(aW),0]]],bya=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],bx8=[0,a(c),ga,11,ga,41,[0,a(bN),[0,a(j),[0,a(d),0]]]],byb=[0,a(dD),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],byn=[0,a(c),lZ,11,lZ,26,[0,a(bN),[0,a(j),[0,a(d),0]]]],byc=[0,a(c),lZ,11,lZ,26,[0,a(bN),[0,a(j),[0,a(d),0]]]],byo=[0,a(dD),[0,a("plafond_d823_22"),0]],byt=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byp=[0,a(c),gp,11,gp,31,[0,a(bN),[0,a(j),[0,a(d),0]]]],byu=[0,a(dD),[0,a(A9),0]],byx=[0,a(c),pw,10,pw,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],byv=[0,a(c),pw,10,pw,36,[0,a(bN),[0,a(j),[0,a(d),0]]]],byy=[0,a(dD),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],bxu=[0,a(C),yQ,14,yQ,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxq=[0,a(C),El,14,El,36,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxe=[0,a(aj),[0,a(bD),[0,a(P),0]]],bxf=[0,a(aj),[0,a(bD),0]],bxg=[0,a(aj),[0,a(bD),[0,a(O),0]]],bxh=[0,a(aj),[0,a(bD),0]],bxi=[0,a(U),[0,a(bD),[0,a(P),0]]],bxj=[0,a(U),[0,a(bD),0]],bxk=[0,a(U),[0,a(bD),[0,a(O),0]]],bxl=[0,a(U),[0,a(bD),0]],bxm=[0,a(_),[0,a(bD),[0,a(P),0]]],bxn=[0,a(_),[0,a(bD),0]],bxo=[0,a(_),[0,a(bD),[0,a(O),0]]],bxp=[0,a(_),[0,a(bD),0]],bxr=[0,a(c),oi,10,oi,32,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxd=[0,a(c),oi,10,oi,32,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw_=[0,a(C),zy,14,zy,48,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bw8=a(p),bw9=a(p),bw4=[0,a(C),xU,14,xU,32,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bw0=[0,a(C),yc,14,yc,31,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwW=[0,a(C),Jd,5,Jd,69,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwS=[0,a(C),HK,14,HK,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwO=[0,a(C),Jj,14,Jj,26,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwK=[0,a(C),LM,14,LM,52,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwG=[0,a(C),z$,14,z$,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwC=[0,a(C),An,14,An,35,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwy=[0,a(C),DB,14,DB,67,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwu=[0,a(C),Ha,14,Ha,49,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwq=[0,a(C),xn,14,xn,37,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwo=a(p),bwp=a(p),bwi=[0,a(C),wR,14,wR,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bwg=a(p),bwh=a(p),bwc=[0,a(C),Ap,14,Ap,42,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv_=[0,a(C),JK,14,JK,33,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv6=[0,a(C),JY,14,JY,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bv2=[0,a(C),zf,14,zf,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvY=[0,a(C),H8,14,H8,56,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvU=[0,a(C),Ec,14,Ec,44,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvO=[0,a(C),F6,14,F6,47,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvK=[0,a(C),zb,14,zb,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvI=[0,0],bvJ=[0,0],bvE=[0,a(C),FY,14,FY,43,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvC=[0,0],bvD=[0,0],bvy=[0,a(C),J_,14,J_,38,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvu=[0,a(C),xa,14,xa,57,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvq=[0,a(C),LC,14,LC,45,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvm=[0,a(C),D_,14,D_,54,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bvi=[0,a(C),FV,14,FV,73,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bve=[0,a(C),BK,14,BK,53,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bva=[0,a(C),Ev,14,Ev,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bu_=[2,0],bu$=[2,0],bu6=[0,a(C),Hb,14,Hb,64,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bu2=[0,a(C),yi,14,yi,59,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buY=[0,a(C),HC,14,HC,61,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buU=[0,a(C),Mh,14,Mh,55,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buS=a(p),buT=a(p),buO=[0,a(V),71,14,71,44,[0,a(dA),[0,a(b9),[0,a(R),0]]]],buI=[0,0],buJ=[1,0],buK=[1,0],buL=[1,0],buM=[0,0],buN=[1,0],buE=[0,a(C),BJ,14,BJ,31,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],buB=a(dU),buC=a(rR),buD=a(sS),bux=[0,a(C),HA,14,HA,34,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bus=[0,0],but=[2,0],buu=[1,0],buv=[0,0],buw=[1,0],buy=[0,a(c),od,11,od,31,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bur=[0,a(c),od,11,od,31,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buz=[0,a(aA),[0,a(GI),0]],buF=[0,a(c),jV,10,jV,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buA=[0,a(c),jV,10,jV,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buG=[0,a(aA),[0,a(ye),0]],buP=[0,a(c),n4,11,n4,41,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buH=[0,a(c),n4,11,n4,41,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buQ=[0,a(aA),[0,a(zG),0]],buV=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],buW=[0,a(aA),[0,a(Dw),0]],buR=[0,a(c),DK,10,DK,31,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],buZ=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu0=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.ressources_m\xc3\xa9nage_arrondies"),0]],buX=[0,a(c),LQ,10,LQ,37,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu3=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu4=[0,a(aA),[0,a(CJ),0]],bu1=[0,a(c),zu,10,zu,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu7=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bu8=[0,a(aA),[0,a(IK),0]],bu5=[0,a(c),Mq,10,Mq,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvb=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvc=[0,a(aA),[0,a(KE),0]],bu9=[0,a(c),DF,10,DF,31,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvf=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvg=[0,a(aA),[0,a(D9),0]],bvd=[0,a(c),Gs,10,Gs,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvj=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvk=[0,a(aA),[0,a(KR),0]],bvh=[0,a(c),tz,10,tz,49,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvn=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvo=[0,a(aA),[0,a(Jx),0]],bvl=[0,a(c),DZ,10,DZ,30,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvr=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvs=[0,a(aA),[0,a(Eq),0]],bvp=[0,a(c),Ka,10,Ka,21,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvv=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvw=[0,a(aA),[0,a(LK),0]],bvt=[0,a(c),De,10,De,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvz=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvA=[0,a(aA),[0,a(Ce),0]],bvx=[0,a(c),Eh,10,Eh,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvF=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvG=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.type_pr\xc3\xaat"),0]],bvB=[0,a(c),Gg,10,Gg,19,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvL=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvM=[0,a(aA),[0,a("accession_propri\xc3\xa9t\xc3\xa9.anciennet\xc3\xa9_logement"),0]],bvH=[0,a(c),Eu,10,Eu,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvP=[0,a(c),bH,3,bH,22,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvQ=[0,a(aA),[0,a(xJ),0]],bvN=[0,a(c),z8,10,z8,23,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvR=[0,a(aA),[0,a(mj),[0,a(U),0]]],bvS=[0,a(aA),[0,a(mj),[0,a(U),0]]],bvV=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvW=[0,a(aA),[0,a(Mu),0]],bvT=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bvZ=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv0=[0,a(aA),[0,a(Ch),0]],bvX=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv3=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv4=[0,a(aA),[0,a(Gf),0]],bv1=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv7=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv8=[0,a(aA),[0,a(wU),0]],bv5=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bv$=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwa=[0,a(aA),[0,a(FF),0]],bv9=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwd=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwe=[0,a(aA),[0,a(EP),0]],bwb=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwj=[0,a(c),dz,3,dz,17,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwk=[0,a(aA),[0,a(Jf),0]],bwf=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwl=[0,a(aA),[0,a(nL),[0,a(_),0]]],bwm=[0,a(aA),[0,a(nL),[0,a(_),0]]],bwr=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bws=[0,a(aA),[0,a(Aw),0]],bwn=[0,a(c),mC,10,mC,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwv=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bww=[0,a(aA),[0,a(Bm),0]],bwt=[0,a(c),kC,10,kC,37,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwz=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwA=[0,a(aA),[0,a(AE),0]],bwx=[0,a(c),nr,10,nr,55,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwD=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwE=[0,a(aA),[0,a(IH),0]],bwB=[0,a(c),l8,10,l8,23,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwH=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwI=[0,a(aA),[0,a(xO),0]],bwF=[0,a(c),mH,10,mH,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwL=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwM=[0,a(aA),[0,a(E2),0]],bwJ=[0,a(c),pE,10,pE,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwP=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwQ=[0,a(aA),[0,a(yW),0]],bwN=[0,a(c),oV,10,oV,14,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwT=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwU=[0,a(aA),[0,a(AX),0]],bwR=[0,a(c),o7,10,o7,30,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwX=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bwY=[0,a(aA),[0,a(K1),0]],bwV=[0,a(c),pt,10,pt,66,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw1=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw2=[0,a(aA),[0,a(Ld),0]],bwZ=[0,a(c),oU,10,oU,19,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw5=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw6=[0,a(aA),[0,a(wS),0]],bw3=[0,a(c),oc,10,oc,20,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bw$=[0,a(c),b1,3,b1,10,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxa=[0,a(aA),[0,a(F9),0]],bw7=[0,a(c),pz,10,pz,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxb=[0,a(aA),[0,a(mr),[0,a(aj),0]]],bxc=[0,a(aA),[0,a(mr),[0,a(aj),0]]],bxs=[0,a(aA),[0,a(a7),0]],bxv=[0,a(c),pr,10,pr,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxt=[0,a(c),pr,10,pr,29,[0,a($),[0,a(o),[0,a(j),[0,a(d),0]]]]],bxw=[0,a(aA),[0,a(fS),0]],bxz=[0,a(C),1469,5,1471,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxy=[0,a(C),DT,5,1467,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bxx=[0,a(C),iM,5,1463,15,[0,a(ao),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buo=[0,a(C),B8,14,B8,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],buf=[0,a(S),[0,a(a4),[0,a(P),0]]],bug=[0,a(S),[0,a(a4),0]],buh=[0,a(S),[0,a(a4),[0,a(O),0]]],bui=[0,a(S),[0,a(a4),0]],buj=a(p),buk=[0,a(S),[0,a(a4),[0,a(P),0]]],bul=[0,a(S),[0,a(a4),0]],bum=[0,a(S),[0,a(a4),[0,a(O),0]]],bun=[0,a(S),[0,a(a4),0]],bup=[0,a(c),mo,10,mo,25,[0,a(z),[0,a(t),[0,a(d),0]]]],bue=[0,a(c),mo,10,mo,25,[0,a(z),[0,a(t),[0,a(d),0]]]],bub=[0,a(C),wL,14,wL,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],btv=a(p),btw=[0,a(S),[0,a(bn),[0,a(P),0]]],btx=[0,a(S),[0,a(bn),0]],bty=[0,a(S),[0,a(bn),[0,a(O),0]]],btz=[0,a(S),[0,a(bn),0]],btA=[0,a(af),[0,a(al),[0,a(P),0]]],btB=[0,a(af),[0,a(al),0]],btC=[0,a(af),[0,a(al),[0,a(O),0]]],btD=[0,a(af),[0,a(al),0]],btE=a(e1),btF=[0,a(S),[0,a(bn),[0,a(P),0]]],btG=[0,a(S),[0,a(bn),0]],btH=[0,a(S),[0,a(bn),[0,a(O),0]]],btI=[0,a(S),[0,a(bn),0]],btJ=[0,a(af),[0,a(al),[0,a(P),0]]],btK=[0,a(af),[0,a(al),0]],btL=[0,a(af),[0,a(al),[0,a(O),0]]],btM=[0,a(af),[0,a(al),0]],btN=[0,a(S),[0,a(bn),[0,a(P),0]]],btO=[0,a(S),[0,a(bn),0]],btP=[0,a(S),[0,a(bn),[0,a(O),0]]],btQ=[0,a(S),[0,a(bn),0]],btR=[0,a(S),[0,a(bn),[0,a(P),0]]],btS=[0,a(S),[0,a(bn),0]],btT=[0,a(S),[0,a(bn),[0,a(O),0]]],btU=[0,a(S),[0,a(bn),0]],btV=[0,a(af),[0,a(al),[0,a(P),0]]],btW=[0,a(af),[0,a(al),0]],btX=[0,a(af),[0,a(al),[0,a(O),0]]],btY=[0,a(af),[0,a(al),0]],btZ=a(e1),bt0=[0,a(S),[0,a(bn),[0,a(P),0]]],bt1=[0,a(S),[0,a(bn),0]],bt2=[0,a(S),[0,a(bn),[0,a(O),0]]],bt3=[0,a(S),[0,a(bn),0]],bt4=[0,a(af),[0,a(al),[0,a(P),0]]],bt5=[0,a(af),[0,a(al),0]],bt6=[0,a(af),[0,a(al),[0,a(O),0]]],bt7=[0,a(af),[0,a(al),0]],bt8=[0,a(S),[0,a(bn),[0,a(P),0]]],bt9=[0,a(S),[0,a(bn),0]],bt_=[0,a(S),[0,a(bn),[0,a(O),0]]],bt$=[0,a(S),[0,a(bn),0]],bua=a(p),buc=[0,a(c),m3,10,m3,40,[0,a(z),[0,a(t),[0,a(d),0]]]],btu=[0,a(c),m3,10,m3,40,[0,a(z),[0,a(t),[0,a(d),0]]]],btr=[0,a(C),Gx,14,Gx,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bs3=a(p),bs4=[0,a(S),[0,a(ag),[0,a(P),0]]],bs5=[0,a(S),[0,a(ag),0]],bs6=[0,a(S),[0,a(ag),[0,a(O),0]]],bs7=[0,a(S),[0,a(ag),0]],bs8=[0,a(S),[0,a(cS),[0,a(P),0]]],bs9=[0,a(S),[0,a(cS),0]],bs_=[0,a(S),[0,a(cS),[0,a(O),0]]],bs$=[0,a(S),[0,a(cS),0]],bta=[0,a(S),[0,a(ag),[0,a(P),0]]],btb=[0,a(S),[0,a(ag),0]],btc=[0,a(S),[0,a(ag),[0,a(O),0]]],btd=[0,a(S),[0,a(ag),0]],bte=a(p),btf=[0,a(S),[0,a(ag),[0,a(P),0]]],btg=[0,a(S),[0,a(ag),0]],bth=[0,a(S),[0,a(ag),[0,a(O),0]]],bti=[0,a(S),[0,a(ag),0]],btj=[0,a(S),[0,a(cS),[0,a(P),0]]],btk=[0,a(S),[0,a(cS),0]],btl=[0,a(S),[0,a(cS),[0,a(O),0]]],btm=[0,a(S),[0,a(cS),0]],btn=[0,a(S),[0,a(ag),[0,a(P),0]]],bto=[0,a(S),[0,a(ag),0]],btp=[0,a(S),[0,a(ag),[0,a(O),0]]],btq=[0,a(S),[0,a(ag),0]],bts=[0,a(c),pa,10,pa,32,[0,a(z),[0,a(t),[0,a(d),0]]]],bs2=[0,a(c),pa,10,pa,32,[0,a(z),[0,a(t),[0,a(d),0]]]],bsZ=[0,a(C),zg,14,zg,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsV=[0,a(C),xR,14,xR,47,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsM=[0,a(S),[0,a(cT),[0,a(P),0]]],bsN=[0,a(S),[0,a(cT),0]],bsO=[0,a(S),[0,a(cT),[0,a(O),0]]],bsP=[0,a(S),[0,a(cT),0]],bsQ=[0,a(S),[0,a(cT),[0,a(P),0]]],bsR=[0,a(S),[0,a(cT),0]],bsS=[0,a(S),[0,a(cT),[0,a(O),0]]],bsT=[0,a(S),[0,a(cT),0]],bsU=a(p),bsW=[0,a(c),mi,11,mi,44,[0,a(z),[0,a(t),[0,a(d),0]]]],bsL=[0,a(c),mi,11,mi,44,[0,a(z),[0,a(t),[0,a(d),0]]]],bsI=[0,a(C),BW,14,BW,41,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsE=[0,a(C),Fg,14,Fg,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsA=[0,a(C),CO,14,CO,33,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsv=[0,a(C),4731,7,4734,45,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsw=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bsu=[0,a(C),L0,14,L0,50,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bso=[0,a(C),Ji,14,Ji,62,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsp=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsq=[0,a(S),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bsl=[0,a(C),AR,14,AR,61,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bsm=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsn=[0,a(S),[0,a(K9),0]],bsi=[0,a(c),AA,14,AA,49,[0,a(z),[0,a(t),[0,a(d),0]]]],bsh=a(p),bsd=[0,a(c),Kl,14,Kl,53,[0,a(z),[0,a(t),[0,a(d),0]]]],br$=[0,a(c),rZ,14,rZ,44,[0,a(z),[0,a(t),[0,a(d),0]]]],br7=[0,a(c),Ep,14,Ep,70,[0,a(z),[0,a(t),[0,a(d),0]]]],br3=[0,a(c),Iz,14,Iz,65,[0,a(z),[0,a(t),[0,a(d),0]]]],brZ=[0,a(c),ya,14,ya,67,[0,a(z),[0,a(t),[0,a(d),0]]]],brV=[0,a(c),D6,14,D6,55,[0,a(z),[0,a(t),[0,a(d),0]]]],brT=[0,[0,[0,0],1,1,1,1]],brU=[1,0],brN=[0,a(C),Bz,14,Bz,70,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brJ=[0,a(C),JJ,14,JJ,69,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brF=[0,a(C),Jo,14,Jo,75,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brA=[0,a(C),FI,5,FI,44,[0,a(Jp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brk=[0,a(S),[0,a(co),[0,a(P),0]]],brl=[0,a(S),[0,a(co),0]],brm=[0,a(S),[0,a(co),[0,a(O),0]]],brn=[0,a(S),[0,a(co),0]],bro=[0,a(S),[0,a(co),[0,a(P),0]]],brp=[0,a(S),[0,a(co),0]],brq=[0,a(S),[0,a(co),[0,a(O),0]]],brr=[0,a(S),[0,a(co),0]],brs=[0,a(S),[0,a(co),[0,a(P),0]]],brt=[0,a(S),[0,a(co),0]],bru=[0,a(S),[0,a(co),[0,a(O),0]]],brv=[0,a(S),[0,a(co),0]],brw=[0,a(S),[0,a(co),[0,a(P),0]]],brx=[0,a(S),[0,a(co),0]],bry=[0,a(S),[0,a(co),[0,a(O),0]]],brz=[0,a(S),[0,a(co),0]],brB=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brj=[0,a(C),Bu,14,Bu,39,[0,a(Jp),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brf=[0,a(S),[0,a(co),[0,a(P),0]]],brg=[0,a(S),[0,a(co),0]],brh=[0,a(S),[0,a(co),[0,a(O),0]]],bri=[0,a(S),[0,a(co),0]],bra=[0,a(C),G8,5,G8,28,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],brb=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],bq$=[0,a(C),LT,14,LT,41,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bq8=a(dU),bq9=a(rR),bq_=a(sS),bq3=[0,a(V),ED,24,ED,56,[0,a(Di),[0,a(bs),[0,a(R),0]]]],bqU=a(fF),bqV=[0,a(S),[0,a(dO),[0,a(P),0]]],bqW=[0,a(S),[0,a(dO),0]],bqX=[0,a(S),[0,a(dO),[0,a(O),0]]],bqY=[0,a(S),[0,a(dO),0]],bqZ=[0,a(S),[0,a(dO),[0,a(P),0]]],bq0=[0,a(S),[0,a(dO),0]],bq1=[0,a(S),[0,a(dO),[0,a(O),0]]],bq2=[0,a(S),[0,a(dO),0]],bq4=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqT=[0,a(V),yD,14,yD,46,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bqP=[0,a(S),[0,a(dO),[0,a(P),0]]],bqQ=[0,a(S),[0,a(dO),0]],bqR=[0,a(S),[0,a(dO),[0,a(O),0]]],bqS=[0,a(S),[0,a(dO),0]],bq5=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqO=[0,a(c),ir,10,ir,26,[0,a(z),[0,a(t),[0,a(d),0]]]],bqL=[0,a(C),Do,15,Do,37,[0,a(nE),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqM=[0,a(c),km,11,km,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bqK=[0,a(c),km,11,km,33,[0,a(z),[0,a(t),[0,a(d),0]]]],bqG=[0,a(C),4756,6,4762,6,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqH=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqE=[0,a(C),4774,5,4775,59,[0,a(oo),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],bqF=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqz=[0,a(V),KB,5,KB,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bpP=a(p),bpQ=a("158700"),bpR=a("191300"),bpS=a(x),bpT=a("205500"),bpU=a(ab),bpV=a("211300"),bpW=a(ak),bpX=a("217100"),bpY=a(an),bpZ=a("222900"),bp0=a(T),bp1=a(If),bp2=a(T),bp3=a("19800"),bp4=a(If),bp5=a(p),bp6=a("139300"),bp7=a("170600"),bp8=a(x),bp9=a("184700"),bp_=a(ab),bp$=a("191200"),bqa=a(ak),bqb=a(zT),bqc=a(an),bqd=a("204200"),bqe=a(T),bqf=a(F2),bqg=a(T),bqh=a(sq),bqi=a(F2),bqj=a(p),bqk=a("130600"),bql=a("158400"),bqm=a(x),bqn=a("172600"),bqo=a(ab),bqp=a(C2),bqq=a(ak),bqr=a("187000"),bqs=a(an),bqt=a(yH),bqu=a(T),bqv=a(ta),bqw=a(T),bqx=a("18200"),bqy=a(ta),bqA=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bpN=[0,a(V),Bj,5,Bj,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bo3=a(p),bo4=a("160400"),bo5=a("193400"),bo6=a(x),bo7=a("207800"),bo8=a(ab),bo9=a("213700"),bo_=a(ak),bo$=a("219600"),bpa=a(an),bpb=a(Hn),bpc=a(T),bpd=a(nc),bpe=a(T),bpf=a("20000"),bpg=a(nc),bph=a(p),bpi=a(CS),bpj=a(C4),bpk=a(x),bpl=a("186700"),bpm=a(ab),bpn=a("193300"),bpo=a(ak),bpp=a(sL),bpq=a(an),bpr=a("206500"),bps=a(T),bpt=a(Gh),bpu=a(T),bpv=a(zV),bpw=a(Gh),bpx=a(p),bpy=a(Bh),bpz=a(Hz),bpA=a(x),bpB=a("174500"),bpC=a(ab),bpD=a(GJ),bpE=a(ak),bpF=a("189100"),bpG=a(an),bpH=a(yH),bpI=a(T),bpJ=a(E0),bpK=a(T),bpL=a("18400"),bpM=a(E0),bpO=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bo1=[0,a(V),FD,5,FD,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bof=a(p),bog=a("163300"),boh=a("196900"),boi=a(x),boj=a("211600"),bok=a(ab),bol=a(F3),bom=a(ak),bon=a("223600"),boo=a(an),bop=a("229600"),boq=a(T),bor=a(Bw),bos=a(T),bot=a("20400"),bou=a(Bw),bov=a(p),bow=a("143300"),box=a("175600"),boy=a(x),boz=a("190100"),boA=a(ab),boB=a("196600"),boC=a(ak),boD=a("203500"),boE=a(an),boF=a("210200"),boG=a(T),boH=a(Ly),boI=a(T),boJ=a("19600"),boK=a(Ly),boL=a(p),boM=a("134400"),boN=a(GO),boO=a(x),boP=a("177700"),boQ=a(ab),boR=a("185100"),boS=a(ak),boT=a(xS),boU=a(an),boV=a(sL),boW=a(T),boX=a(Md),boY=a(T),boZ=a("18700"),bo0=a(Md),bo2=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bod=[0,a(V),GA,5,GA,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bnt=a(p),bnu=a("167200"),bnv=a("201600"),bnw=a(x),bnx=a("216700"),bny=a(ab),bnz=a("222800"),bnA=a(ak),bnB=a("229000"),bnC=a(an),bnD=a("235100"),bnE=a(T),bnF=a(L9),bnG=a(T),bnH=a(Fp),bnI=a(L9),bnJ=a(p),bnK=a("146700"),bnL=a(C2),bnM=a(x),bnN=a("194700"),bnO=a(ab),bnP=a("201500"),bnQ=a(ak),bnR=a("208400"),bnS=a(an),bnT=a("215200"),bnU=a(T),bnV=a(nc),bnW=a(T),bnX=a(Bs),bnY=a(nc),bnZ=a(p),bn0=a("137600"),bn1=a("166900"),bn2=a(x),bn3=a("182000"),bn4=a(ab),bn5=a("189500"),bn6=a(ak),bn7=a("197100"),bn8=a(an),bn9=a(Cx),bn_=a(T),bn$=a(I0),boa=a(T),bob=a(sq),boc=a(I0),boe=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bnr=[0,a(V),FK,5,FK,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bmH=a(p),bmI=a("167400"),bmJ=a("201800"),bmK=a(x),bmL=a("216900"),bmM=a(ab),bmN=a("223000"),bmO=a(ak),bmP=a("229200"),bmQ=a(an),bmR=a("235300"),bmS=a(T),bmT=a(Ir),bmU=a(T),bmV=a(Fp),bmW=a(Ir),bmX=a(p),bmY=a("146800"),bmZ=a("180000"),bm0=a(x),bm1=a("194900"),bm2=a(ab),bm3=a(LO),bm4=a(ak),bm5=a(ta),bm6=a(an),bm7=a("215400"),bm8=a(T),bm9=a(J2),bm_=a(T),bm$=a(Bs),bna=a(J2),bnb=a(p),bnc=a("137700"),bnd=a("167100"),bne=a(x),bnf=a("182200"),bng=a(ab),bnh=a("189700"),bni=a(ak),bnj=a("197300"),bnk=a(an),bnl=a("204900"),bnm=a(T),bnn=a(C0),bno=a(T),bnp=a(sq),bnq=a(C0),bns=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bmF=[0,a(V),oO,5,oO,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],blV=a(p),blW=a("169100"),blX=a("203800"),blY=a(x),blZ=a("219100"),bl0=a(ab),bl1=a("225200"),bl2=a(ak),bl3=a("231500"),bl4=a(an),bl5=a("237700"),bl6=a(T),bl7=a(kf),bl8=a(T),bl9=a("21100"),bl_=a(kf),bl$=a(p),bma=a("148300"),bmb=a(GJ),bmc=a(x),bmd=a("196800"),bme=a(ab),bmf=a("203700"),bmg=a(ak),bmh=a("210700"),bmi=a(an),bmj=a(F3),bmk=a(T),bml=a(Gk),bmm=a(T),bmn=a("20300"),bmo=a(Gk),bmp=a(p),bmq=a("139100"),bmr=a("168800"),bms=a(x),bmt=a(tc),bmu=a(ab),bmv=a("191600"),bmw=a(ak),bmx=a("199300"),bmy=a(an),bmz=a("206900"),bmA=a(T),bmB=a(AY),bmC=a(T),bmD=a(zV),bmE=a(AY),bmG=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],blT=[0,a(V),Ai,5,Ai,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bk9=a(p),bk_=a("171100"),bk$=a("206200"),bla=a(x),blb=a("221700"),blc=a(ab),bld=a("227900"),ble=a(ak),blf=a("234300"),blg=a(an),blh=a("240600"),bli=a(T),blj=a(H7),blk=a(T),bll=a("21400"),blm=a(H7),bln=a(p),blo=a("150100"),blp=a(tc),blq=a(x),blr=a("199200"),bls=a(ab),blt=a("206100"),blu=a(ak),blv=a("213200"),blw=a(an),blx=a("220200"),bly=a(T),blz=a(zH),blA=a(T),blB=a("20500"),blC=a(zH),blD=a(p),blE=a(CS),blF=a("170800"),blG=a(x),blH=a("186200"),blI=a(ab),blJ=a("193900"),blK=a(ak),blL=a(LO),blM=a(an),blN=a("209400"),blO=a(T),blP=a(IO),blQ=a(T),blR=a("19500"),blS=a(IO),blU=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bk7=[0,a(V),z_,5,z_,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bkl=a(p),bkm=a("26084"),bkn=a("31435"),bko=a(x),bkp=a("33798"),bkq=a(ab),bkr=a("34743"),bks=a(ak),bkt=a("35719"),bku=a(an),bkv=a("36679"),bkw=a(T),bkx=a(HI),bky=a(T),bkz=a("3262"),bkA=a(HI),bkB=a(p),bkC=a("22883"),bkD=a("28051"),bkE=a(x),bkF=a("30368"),bkG=a(ab),bkH=a("31420"),bkI=a(ak),bkJ=a("32502"),bkK=a(an),bkL=a("33569"),bkM=a(T),bkN=a(Ed),bkO=a(T),bkP=a("3125"),bkQ=a(Ed),bkR=a(p),bkS=a("21465"),bkT=a("26038"),bkU=a(x),bkV=a("28386"),bkW=a(ab),bkX=a("29560"),bkY=a(ak),bkZ=a("30749"),bk0=a(an),bk1=a("31923"),bk2=a(T),bk3=a(DU),bk4=a(T),bk5=a("2973"),bk6=a(DU),bk8=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bkj=[0,a(V),JE,5,JE,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bjz=a(p),bjA=a("26397"),bjB=a("31812"),bjC=a(x),bjD=a("34204"),bjE=a(ab),bjF=a("35160"),bjG=a(ak),bjH=a("36148"),bjI=a(an),bjJ=a("37119"),bjK=a(T),bjL=a(HU),bjM=a(T),bjN=a("3301"),bjO=a(HU),bjP=a(p),bjQ=a("23158"),bjR=a("28388"),bjS=a(x),bjT=a("30732"),bjU=a(ab),bjV=a(rT),bjW=a(ak),bjX=a("32892"),bjY=a(an),bjZ=a("33972"),bj0=a(T),bj1=a(DM),bj2=a(T),bj3=a("3163"),bj4=a(DM),bj5=a(p),bj6=a("21723"),bj7=a("26350"),bj8=a(x),bj9=a("28727"),bj_=a(ab),bj$=a("29915"),bka=a(ak),bkb=a("31118"),bkc=a(an),bkd=a("32306"),bke=a(T),bkf=a(Gw),bkg=a(T),bkh=a("3009"),bki=a(Gw),bkk=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bjx=[0,a(V),HS,5,HS,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],biN=a(p),biO=a(Mw),biP=a("32194"),biQ=a(x),biR=a("34614"),biS=a(ab),biT=a("35582"),biU=a(ak),biV=a("36582"),biW=a(an),biX=a("37564"),biY=a(T),biZ=a(xZ),bi0=a(T),bi1=a("3341"),bi2=a(xZ),bi3=a(p),bi4=a("23436"),bi5=a("28729"),bi6=a(x),bi7=a("31101"),bi8=a(ab),bi9=a("32179"),bi_=a(ak),bi$=a("33287"),bja=a(an),bjb=a("34380"),bjc=a(T),bjd=a(AW),bje=a(T),bjf=a("3201"),bjg=a(AW),bjh=a(p),bji=a("21984"),bjj=a("26666"),bjk=a(x),bjl=a("29072"),bjm=a(ab),bjn=a("30274"),bjo=a(ak),bjp=a("31491"),bjq=a(an),bjr=a("32694"),bjs=a(T),bjt=a(BB),bju=a(T),bjv=a("3045"),bjw=a(BB),bjy=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],biL=[0,a(V),Eb,5,Eb,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bh1=a(p),bh2=a("27195"),bh3=a("32773"),bh4=a(x),bh5=a("35237"),bh6=a(ab),bh7=a("36222"),bh8=a(ak),bh9=a("37240"),bh_=a(an),bh$=a("38240"),bia=a(T),bib=a(Jk),bic=a(T),bid=a("3401"),bie=a(Jk),bif=a(p),big=a("23858"),bih=a("29246"),bii=a(x),bij=a("31661"),bik=a(ab),bil=a("32758"),bim=a(ak),bin=a("33886"),bio=a(an),bip=a("34999"),biq=a(T),bir=a(HV),bis=a(T),bit=a("3259"),biu=a(HV),biv=a(p),biw=a("22380"),bix=a("27146"),biy=a(x),biz=a("29595"),biA=a(ab),biB=a("30819"),biC=a(ak),biD=a("32058"),biE=a(an),biF=a("33282"),biG=a(T),biH=a(AM),biI=a(T),biJ=a("3100"),biK=a(AM),biM=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bhZ=[0,a(V),H0,5,H0,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bhd=a(p),bhe=a("27956"),bhf=a("33691"),bhg=a(x),bhh=a("36224"),bhi=a(ab),bhj=a("37236"),bhk=a(ak),bhl=a("38283"),bhm=a(an),bhn=a("39311"),bho=a(T),bhp=a(zp),bhq=a(T),bhr=a("3496"),bhs=a(zp),bht=a(p),bhu=a("24526"),bhv=a("30065"),bhw=a(x),bhx=a("32548"),bhy=a(ab),bhz=a("33675"),bhA=a(ak),bhB=a(L5),bhC=a(an),bhD=a("35979"),bhE=a(T),bhF=a(IJ),bhG=a(T),bhH=a("3350"),bhI=a(IJ),bhJ=a(p),bhK=a("23007"),bhL=a("27906"),bhM=a(x),bhN=a("30424"),bhO=a(ab),bhP=a("31682"),bhQ=a(ak),bhR=a(Ht),bhS=a(an),bhT=a("34214"),bhU=a(T),bhV=a(Lg),bhW=a(T),bhX=a("3187"),bhY=a(Lg),bh0=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bhb=[0,a(V),Go,5,Go,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bgr=a(p),bgs=a("28728"),bgt=a("34621"),bgu=a(x),bgv=a("37224"),bgw=a(ab),bgx=a("38264"),bgy=a(ak),bgz=a(y$),bgA=a(an),bgB=a("40396"),bgC=a(T),bgD=a(GS),bgE=a(T),bgF=a("3592"),bgG=a(GS),bgH=a(p),bgI=a("25203"),bgJ=a("30895"),bgK=a(x),bgL=a("33446"),bgM=a(ab),bgN=a("34604"),bgO=a(ak),bgP=a("35796"),bgQ=a(an),bgR=a("36972"),bgS=a(T),bgT=a(D8),bgU=a(T),bgV=a("3442"),bgW=a(D8),bgX=a(p),bgY=a("23642"),bgZ=a("28676"),bg0=a(x),bg1=a(yr),bg2=a(ab),bg3=a("32556"),bg4=a(ak),bg5=a("33866"),bg6=a(an),bg7=a("35158"),bg8=a(T),bg9=a(FQ),bg_=a(T),bg$=a("3275"),bha=a(FQ),bhc=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bgp=[0,a(V),Ma,5,Ma,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bfF=a(p),bfG=a("29575"),bfH=a("35642"),bfI=a(x),bfJ=a("38322"),bfK=a(ab),bfL=a("39393"),bfM=a(ak),bfN=a("40501"),bfO=a(an),bfP=a("41588"),bfQ=a(T),bfR=a(KH),bfS=a(T),bfT=a("3698"),bfU=a(KH),bfV=a(p),bfW=a("25946"),bfX=a("31806"),bfY=a(x),bfZ=a("34433"),bf0=a(ab),bf1=a("35625"),bf2=a(ak),bf3=a("36852"),bf4=a(an),bf5=a("38063"),bf6=a(T),bf7=a(Ix),bf8=a(T),bf9=a("3544"),bf_=a(Ix),bf$=a(p),bga=a("24339"),bgb=a("29522"),bgc=a(x),bgd=a("32186"),bge=a(ab),bgf=a("33516"),bgg=a(ak),bgh=a(L5),bgi=a(an),bgj=a("36195"),bgk=a(T),bgl=a(Dv),bgm=a(T),bgn=a("3372"),bgo=a(Dv),bgq=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bfD=[0,a(V),sQ,5,sQ,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],beT=a(p),beU=a("29670"),beV=a("35757"),beW=a(x),beX=a("38445"),beY=a(ab),beZ=a("39519"),be0=a(ak),be1=a("40601"),be2=a(an),be3=a("41721"),be4=a(T),be5=a(CL),be6=a(T),be7=a("3710"),be8=a(CL),be9=a(p),be_=a("26029"),be$=a("31908"),bfa=a(x),bfb=a("34643"),bfc=a(ab),bfd=a("35739"),bfe=a(ak),bff=a("36970"),bfg=a(an),bfh=a("38185"),bfi=a(T),bfj=a(I1),bfk=a(T),bfl=a("3555"),bfm=a(I1),bfn=a(p),bfo=a("24417"),bfp=a("29616"),bfq=a(x),bfr=a("32289"),bfs=a(ab),bft=a(HW),bfu=a(ak),bfv=a("34977"),bfw=a(an),bfx=a("36311"),bfy=a(T),bfz=a(Il),bfA=a(T),bfB=a("3383"),bfC=a(Il),bfE=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],beR=[0,a(V),FJ,5,FJ,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bd7=a(p),bd8=a("29996"),bd9=a("36149"),bd_=a(x),bd$=a("38868"),bea=a(ab),beb=a("39954"),bec=a(ak),bed=a("41078"),bee=a(an),bef=a("42180"),beg=a(T),beh=a(Bk),bei=a(T),bej=a("3751"),bek=a(Bk),bel=a(p),bem=a("26315"),ben=a("32259"),beo=a(x),bep=a("34923"),beq=a(ab),ber=a("36132"),bes=a(ak),bet=a("37373"),beu=a(an),bev=a("38605"),bew=a(T),bex=a(KQ),bey=a(T),bez=a("3594"),beA=a(KQ),beB=a(p),beC=a("24686"),beD=a("29942"),beE=a(x),beF=a("32644"),beG=a(ab),beH=a("33993"),beI=a(ak),beJ=a("35362"),beK=a(an),beL=a("36710"),beM=a(T),beN=a(AC),beO=a(T),beP=a("3420"),beQ=a(AC),beS=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bd5=[0,a(V),I2,5,I2,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bdj=a(p),bdk=a("30296"),bdl=a("36510"),bdm=a(x),bdn=a("39257"),bdo=a(ab),bdp=a("40354"),bdq=a(ak),bdr=a("41489"),bds=a(an),bdt=a("42602"),bdu=a(T),bdv=a(FA),bdw=a(T),bdx=a("3789"),bdy=a(FA),bdz=a(p),bdA=a("26578"),bdB=a("32582"),bdC=a(x),bdD=a("35272"),bdE=a(ab),bdF=a("36493"),bdG=a(ak),bdH=a("37751"),bdI=a(an),bdJ=a("38991"),bdK=a(T),bdL=a(GK),bdM=a(T),bdN=a("3630"),bdO=a(GK),bdP=a(p),bdQ=a("24933"),bdR=a("30241"),bdS=a(x),bdT=a("32970"),bdU=a(ab),bdV=a("34333"),bdW=a(ak),bdX=a("35716"),bdY=a(an),bdZ=a("37077"),bd0=a(T),bd1=a(wX),bd2=a(T),bd3=a("3454"),bd4=a(wX),bd6=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bdh=[0,a(V),Ja,5,Ja,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bcx=a(p),bcy=a("30947"),bcz=a("37295"),bcA=a(x),bcB=a("40101"),bcC=a(ab),bcD=a("41222"),bcE=a(ak),bcF=a("42381"),bcG=a(an),bcH=a("43518"),bcI=a(T),bcJ=a(Kd),bcK=a(T),bcL=a("3870"),bcM=a(Kd),bcN=a(p),bcO=a("27149"),bcP=a("33283"),bcQ=a(x),bcR=a("36030"),bcS=a(ab),bcT=a("37278"),bcU=a(ak),bcV=a("38563"),bcW=a(an),bcX=a("39829"),bcY=a(T),bcZ=a("42649"),bc0=a(T),bc1=a("3708"),bc2=a("42659"),bc3=a(p),bc4=a("25469"),bc5=a("30891"),bc6=a(x),bc7=a("33679"),bc8=a(ab),bc9=a("35071"),bc_=a(ak),bc$=a("36484"),bda=a(an),bdb=a("37874"),bdc=a(T),bdd=a(Ct),bde=a(T),bdf=a("3528"),bdg=a(Ct),bdi=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bcv=[0,a(V),x_,5,x_,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bbL=a(p),bbM=a("31123"),bbN=a("37508"),bbO=a(x),bbP=a("40330"),bbQ=a(ab),bbR=a("41457"),bbS=a(ak),bbT=a("42623"),bbU=a(an),bbV=a("43766"),bbW=a(T),bbX=a(EY),bbY=a(T),bbZ=a("3892"),bb0=a(EY),bb1=a(p),bb2=a("27304"),bb3=a("33473"),bb4=a(x),bb5=a("36235"),bb6=a(ab),bb7=a("37490"),bb8=a(ak),bb9=a("38783"),bb_=a(an),bb$=a("40056"),bca=a(T),bcb=a(BV),bcc=a(T),bcd=a("3729"),bce=a(BV),bcf=a(p),bcg=a("25614"),bch=a("31067"),bci=a(x),bcj=a("33871"),bck=a(ab),bcl=a("35271"),bcm=a(ak),bcn=a("36692"),bco=a(an),bcp=a("38090"),bcq=a(T),bcr=a(zU),bcs=a(T),bct=a("3548"),bcu=a(zU),bcw=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bbJ=[0,a(V),wP,5,wP,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],baZ=a(p),ba0=a("31148"),ba1=a("37538"),ba2=a(x),ba3=a("40362"),ba4=a(ab),ba5=a("41490"),ba6=a(ak),ba7=a("42657"),ba8=a(an),ba9=a("43801"),ba_=a(T),ba$=a(yp),bba=a(T),bbb=a("3895"),bbc=a(yp),bbd=a(p),bbe=a("27326"),bbf=a(Ez),bbg=a(x),bbh=a("36264"),bbi=a(ab),bbj=a("37520"),bbk=a(ak),bbl=a("38814"),bbm=a(an),bbn=a("40088"),bbo=a(T),bbp=a(Mc),bbq=a(T),bbr=a("3732"),bbs=a(Mc),bbt=a(p),bbu=a("25634"),bbv=a("31092"),bbw=a(x),bbx=a("33898"),bby=a(ab),bbz=a("35299"),bbA=a(ak),bbB=a("36721"),bbC=a(an),bbD=a("38120"),bbE=a(T),bbF=a(Ik),bbG=a(T),bbH=a("3551"),bbI=a(Ik),bbK=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],baX=[0,a(V),Bg,5,Bg,64,[0,a(b_),[0,a(bs),[0,a(R),0]]]],bab=a(p),bac=a("31382"),bad=a("37820"),bae=a(x),baf=a("40665"),bag=a(ab),bah=a("41801"),bai=a(ak),baj=a("42977"),bak=a(an),bal=a("44130"),bam=a(T),ban=a(Ag),bao=a(T),bap=a("3924"),baq=a(Ag),bar=a(p),bas=a("27531"),bat=a("33751"),bau=a(x),bav=a("36536"),baw=a(ab),bax=a("37801"),bay=a(ak),baz=a("39105"),baA=a(an),baB=a("40389"),baC=a(T),baD=a(F8),baE=a(T),baF=a("3760"),baG=a(F8),baH=a(p),baI=a("25826"),baJ=a("31325"),baK=a(x),baL=a("34152"),baM=a(ab),baN=a("35564"),baO=a(ak),baP=a("36996"),baQ=a(an),baR=a("38406"),baS=a(T),baT=a(zY),baU=a(T),baV=a("3578"),baW=a(zY),baY=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$$=[0,a(V),C_,5,C_,33,[0,a(b_),[0,a(bs),[0,a(R),0]]]],a$p=a(p),a$q=a("31476"),a$r=a("37933"),a$s=a(x),a$t=a("40787"),a$u=a(ab),a$v=a("41927"),a$w=a(ak),a$x=a("43106"),a$y=a(an),a$z=a("44262"),a$A=a(T),a$B=a(xL),a$C=a(T),a$D=a("3936"),a$E=a(xL),a$F=a(p),a$G=a("27614"),a$H=a("33853"),a$I=a(x),a$J=a("36646"),a$K=a(ab),a$L=a("37915"),a$M=a(ak),a$N=a("39222"),a$O=a(an),a$P=a("40510"),a$Q=a(T),a$R=a(DY),a$S=a(T),a$T=a("3771"),a$U=a(DY),a$V=a(p),a$W=a("25904"),a$X=a("31419"),a$Y=a(x),a$Z=a("34255"),a$0=a(ab),a$1=a("35670"),a$2=a(ak),a$3=a("37107"),a$4=a(an),a$5=a("38521"),a$6=a(T),a$7=a(Mm),a$8=a(T),a$9=a("3588"),a$_=a(Mm),baa=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],bqB=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$o=[0,a(c),aY,10,aY,14,[0,a(z),[0,a(t),[0,a(d),0]]]],a$l=[0,a(C),DL,14,DL,36,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a$j=a(p),a$k=a(p),a$m=[0,a(c),jO,10,jO,32,[0,a(z),[0,a(t),[0,a(d),0]]]],a$i=[0,a(c),jO,10,jO,32,[0,a(z),[0,a(t),[0,a(d),0]]]],a$e=[0,a(V),zL,5,zL,16,[0,a(Di),[0,a(bs),[0,a(R),0]]]],a$b=a(hk),a$c=a(ry),a$d=a(fz),a$f=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a$a=[0,a(V),I9,14,I9,41,[0,a("Article 34"),[0,a(bs),[0,a(R),0]]]],a_8=a(p),a_9=a(fz),a__=a(hk),a_$=a(fz),a_2=[0,a(c),EJ,14,EJ,50,[0,a(z),[0,a(t),[0,a(d),0]]]],a_W=[0,a(C),H3,14,H3,64,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a_S=[0,a(C),FX,14,FX,59,[0,a(dn),[0,a(aJ),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a_O=[0,a(V),Fa,14,Fa,33,[0,a(Cs),[0,a(bs),[0,a(R),0]]]],a_N=a(AI),a_J=[0,a(V),B4,14,B4,33,[0,a(J5),[0,a(bs),[0,a(R),0]]]],a_I=a(sn),a_E=[0,a(V),z7,14,z7,41,[0,a(Cs),[0,a(bs),[0,a(R),0]]]],a_D=a("390000"),a_z=[0,a(V),LU,14,LU,41,[0,a(J5),[0,a(bs),[0,a(R),0]]]],a_y=a(sA),a_u=[0,a(V),LX,14,LX,41,[0,a("Article 36"),[0,a(bs),[0,a(R),0]]]],a_t=a(iI),a_p=[0,a(f$),s3,14,s3,36,[0,a(Kk),[0,a(zJ),0]]],a_n=a(Fe),a_o=a(eP),a_j=[0,a(V),yV,14,yV,40,[0,a("Article 35"),[0,a(bs),[0,a(R),0]]]],a_i=a(jX),a_k=[0,a(c),o8,11,o8,37,[0,a(z),[0,a(t),[0,a(d),0]]]],a_h=[0,a(c),o8,11,o8,37,[0,a(z),[0,a(t),[0,a(d),0]]]],a_l=[0,a(S),[0,a("montant_forfaitaire_d842_6"),0]],a_q=[0,a(c),lX,11,lX,33,[0,a(z),[0,a(t),[0,a(d),0]]]],a_m=[0,a(c),lX,11,lX,33,[0,a(z),[0,a(t),[0,a(d),0]]]],a_r=[0,a(S),[0,a(Ej),0]],a_v=[0,a(c),nI,11,nI,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_s=[0,a(c),nI,11,nI,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_w=[0,a(S),[0,a("montant_minimal_aide_d842_6"),0]],a_A=[0,a(c),nY,11,nY,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_x=[0,a(c),nY,11,nY,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_B=[0,a(S),[0,a("montant_forfaitaire_d842_11"),0]],a_F=[0,a(c),kx,11,kx,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_C=[0,a(c),kx,11,kx,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_G=[0,a(S),[0,a("montant_forfaitaire_d842_12"),0]],a_K=[0,a(c),l2,11,l2,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_H=[0,a(c),l2,11,l2,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_L=[0,a(S),[0,a("coefficient_d842_11"),0]],a_P=[0,a(c),mF,11,mF,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_M=[0,a(c),mF,11,mF,30,[0,a(z),[0,a(t),[0,a(d),0]]]],a_Q=[0,a(S),[0,a("coefficient_d842_12"),0]],a_T=[0,a(c),pL,3,pL,22,[0,a(z),[0,a(t),[0,a(d),0]]]],a_U=[0,a(S),[0,a(my),0]],a_R=[0,a(c),pD,10,pD,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],a_X=[0,a(c),pL,3,pL,22,[0,a(z),[0,a(t),[0,a(d),0]]]],a_Y=[0,a(S),[0,a(o5),0]],a_V=[0,a(c),ml,10,ml,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],a_Z=[0,a(S),[0,a(gS),[0,a(ks),0]]],a_0=[0,a(S),[0,a(gS),[0,a(ks),0]]],a_3=[0,a(c),z1,3,z1,25,[0,a(z),[0,a(t),[0,a(d),0]]]],a_4=[0,a(S),[0,a(j7),0]],a_1=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],a_5=[0,a(S),[0,a(eW),[0,a(af),0]]],a_6=[0,a(S),[0,a(eW),[0,a(af),0]]],a$g=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a_7=[0,a(c),ie,11,ie,38,[0,a(z),[0,a(t),[0,a(d),0]]]],a$h=[0,a(S),[0,a(E4),0]],a$n=[0,a(S),[0,a(ag),0]],bqC=[0,a(S),[0,a(dO),0]],bqI=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqD=[0,a(c),gD,11,gD,42,[0,a(z),[0,a(t),[0,a(d),0]]]],bqJ=[0,a(S),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bqN=[0,a(S),[0,a(cT),0]],bq6=[0,a(S),[0,a(co),0]],brc=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],bq7=[0,a(c),i6,10,i6,15,[0,a(z),[0,a(t),[0,a(d),0]]]],brd=[0,a(S),[0,a(Kf),0]],brC=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],bre=[0,a(c),ik,11,ik,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brD=[0,a(S),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],brG=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brH=[0,a(S),[0,a(ob),0]],brE=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brK=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brL=[0,a(S),[0,a(nk),0]],brI=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brO=[0,a(c),iJ,3,iJ,36,[0,a(z),[0,a(t),[0,a(d),0]]]],brP=[0,a(S),[0,a(n8),0]],brM=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],brQ=[0,a(S),[0,a(gB),[0,a(ei),0]]],brR=[0,a(S),[0,a(gB),[0,a(ei),0]]],brW=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],brX=[0,a(S),[0,a(JW),0]],brS=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br0=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br1=[0,a(S),[0,a(Fi),0]],brY=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br4=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br5=[0,a(S),[0,a(Ef),0]],br2=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],br8=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],br9=[0,a(S),[0,a(B0),0]],br6=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsa=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsb=[0,a(S),[0,a(J9),0]],br_=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bse=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsf=[0,a(S),[0,a(D2),0]],bsc=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsj=[0,a(c),cR,3,cR,28,[0,a(z),[0,a(t),[0,a(d),0]]]],bsk=[0,a(S),[0,a(xB),0]],bsg=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],bsr=[0,a(S),[0,a(oN),[0,a(_),0]]],bss=[0,a(S),[0,a(oN),[0,a(_),0]]],bsx=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bst=[0,a(c),iV,11,iV,47,[0,a(z),[0,a(t),[0,a(d),0]]]],bsy=[0,a(S),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bsB=[0,a(c),mc,11,mc,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsz=[0,a(c),mc,11,mc,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsC=[0,a(S),[0,a(L4),0]],bsF=[0,a(c),nT,11,nT,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsD=[0,a(c),nT,11,nT,30,[0,a(z),[0,a(t),[0,a(d),0]]]],bsG=[0,a(S),[0,a(zv),0]],bsJ=[0,a(c),mB,11,mB,38,[0,a(z),[0,a(t),[0,a(d),0]]]],bsH=[0,a(c),mB,11,mB,38,[0,a(z),[0,a(t),[0,a(d),0]]]],bsK=[0,a(S),[0,a(zi),0]],bsX=[0,a(S),[0,a(cS),0]],bs0=[0,a(c),nd,10,nd,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bsY=[0,a(c),nd,10,nd,29,[0,a(z),[0,a(t),[0,a(d),0]]]],bs1=[0,a(S),[0,a(fS),0]],btt=[0,a(S),[0,a(bn),0]],bud=[0,a(S),[0,a(a4),0]],buq=[0,a(S),[0,a(bD),0]],a_e=[0,a(C),Ei,14,Ei,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a97=[0,a(Y),[0,a(a4),[0,a(P),0]]],a98=[0,a(Y),[0,a(a4),0]],a99=[0,a(Y),[0,a(a4),[0,a(O),0]]],a9_=[0,a(Y),[0,a(a4),0]],a9$=a(p),a_a=[0,a(Y),[0,a(a4),[0,a(P),0]]],a_b=[0,a(Y),[0,a(a4),0]],a_c=[0,a(Y),[0,a(a4),[0,a(O),0]]],a_d=[0,a(Y),[0,a(a4),0]],a_f=[0,a(c),ms,10,ms,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a96=[0,a(c),ms,10,ms,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a93=[0,a(C),Jc,14,Jc,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a9l=a(p),a9m=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9n=[0,a(Y),[0,a(bT),0]],a9o=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9p=[0,a(Y),[0,a(bT),0]],a9q=[0,a(af),[0,a(al),[0,a(P),0]]],a9r=[0,a(af),[0,a(al),0]],a9s=[0,a(af),[0,a(al),[0,a(O),0]]],a9t=[0,a(af),[0,a(al),0]],a9u=a(e1),a9v=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9w=[0,a(Y),[0,a(bT),0]],a9x=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9y=[0,a(Y),[0,a(bT),0]],a9z=[0,a(af),[0,a(al),[0,a(P),0]]],a9A=[0,a(af),[0,a(al),0]],a9B=[0,a(af),[0,a(al),[0,a(O),0]]],a9C=[0,a(af),[0,a(al),0]],a9D=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9E=[0,a(Y),[0,a(bT),0]],a9F=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9G=[0,a(Y),[0,a(bT),0]],a9H=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9I=[0,a(Y),[0,a(bT),0]],a9J=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9K=[0,a(Y),[0,a(bT),0]],a9L=[0,a(af),[0,a(al),[0,a(P),0]]],a9M=[0,a(af),[0,a(al),0]],a9N=[0,a(af),[0,a(al),[0,a(O),0]]],a9O=[0,a(af),[0,a(al),0]],a9P=a(e1),a9Q=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9R=[0,a(Y),[0,a(bT),0]],a9S=[0,a(Y),[0,a(bT),[0,a(O),0]]],a9T=[0,a(Y),[0,a(bT),0]],a9U=[0,a(af),[0,a(al),[0,a(P),0]]],a9V=[0,a(af),[0,a(al),0]],a9W=[0,a(af),[0,a(al),[0,a(O),0]]],a9X=[0,a(af),[0,a(al),0]],a9Y=[0,a(Y),[0,a(bT),[0,a(P),0]]],a9Z=[0,a(Y),[0,a(bT),0]],a90=[0,a(Y),[0,a(bT),[0,a(O),0]]],a91=[0,a(Y),[0,a(bT),0]],a92=a(p),a94=[0,a(c),nV,10,nV,40,[0,a(G),[0,a(t),[0,a(d),0]]]],a9k=[0,a(c),nV,10,nV,40,[0,a(G),[0,a(t),[0,a(d),0]]]],a9h=[0,a(C),yw,14,yw,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8$=[0,a(Y),[0,a(bn),[0,a(P),0]]],a9a=[0,a(Y),[0,a(bn),0]],a9b=[0,a(Y),[0,a(bn),[0,a(O),0]]],a9c=[0,a(Y),[0,a(bn),0]],a9d=[0,a(Y),[0,a(bn),[0,a(P),0]]],a9e=[0,a(Y),[0,a(bn),0]],a9f=[0,a(Y),[0,a(bn),[0,a(O),0]]],a9g=[0,a(Y),[0,a(bn),0]],a9i=[0,a(c),ov,10,ov,19,[0,a(G),[0,a(t),[0,a(d),0]]]],a8_=[0,a(c),ov,10,ov,19,[0,a(G),[0,a(t),[0,a(d),0]]]],a87=[0,a(C),DI,14,DI,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8H=a(p),a8I=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8J=[0,a(Y),[0,a(ag),0]],a8K=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8L=[0,a(Y),[0,a(ag),0]],a8M=[0,a(Y),[0,a(cS),[0,a(P),0]]],a8N=[0,a(Y),[0,a(cS),0]],a8O=[0,a(Y),[0,a(cS),[0,a(O),0]]],a8P=[0,a(Y),[0,a(cS),0]],a8Q=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8R=[0,a(Y),[0,a(ag),0]],a8S=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8T=[0,a(Y),[0,a(ag),0]],a8U=a(p),a8V=[0,a(Y),[0,a(ag),[0,a(P),0]]],a8W=[0,a(Y),[0,a(ag),0]],a8X=[0,a(Y),[0,a(ag),[0,a(O),0]]],a8Y=[0,a(Y),[0,a(ag),0]],a8Z=[0,a(Y),[0,a(cS),[0,a(P),0]]],a80=[0,a(Y),[0,a(cS),0]],a81=[0,a(Y),[0,a(cS),[0,a(O),0]]],a82=[0,a(Y),[0,a(cS),0]],a83=[0,a(Y),[0,a(ag),[0,a(P),0]]],a84=[0,a(Y),[0,a(ag),0]],a85=[0,a(Y),[0,a(ag),[0,a(O),0]]],a86=[0,a(Y),[0,a(ag),0]],a88=[0,a(c),jZ,10,jZ,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a8G=[0,a(c),jZ,10,jZ,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a8D=[0,a(C),K6,14,K6,33,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8z=[0,a(C),y5,14,y5,47,[0,a(Ck),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8q=[0,a(Y),[0,a(cT),[0,a(P),0]]],a8r=[0,a(Y),[0,a(cT),0]],a8s=[0,a(Y),[0,a(cT),[0,a(O),0]]],a8t=[0,a(Y),[0,a(cT),0]],a8u=[0,a(Y),[0,a(cT),[0,a(P),0]]],a8v=[0,a(Y),[0,a(cT),0]],a8w=[0,a(Y),[0,a(cT),[0,a(O),0]]],a8x=[0,a(Y),[0,a(cT),0]],a8y=a(p),a8A=[0,a(c),nl,11,nl,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a8p=[0,a(c),nl,11,nl,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a8m=[0,a(C),wW,14,wW,27,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8i=[0,a(C),EF,14,EF,36,[0,a(Ck),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a8j=[0,a(c),lV,11,lV,33,[0,a(G),[0,a(t),[0,a(d),0]]]],a8h=[0,a(c),lV,11,lV,33,[0,a(G),[0,a(t),[0,a(d),0]]]],a8e=[0,a(C),AQ,14,AQ,41,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7_=[0,a(C),zs,14,zs,70,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a76=[0,a(C),y0,14,y0,69,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a72=[0,a(C),K7,14,K7,75,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7Y=[0,a(C),DC,14,DC,36,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7W=a(p),a7X=a(p),a7Z=[0,a(c),jY,10,jY,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a7V=[0,a(c),jY,10,jY,32,[0,a(G),[0,a(t),[0,a(d),0]]]],a7R=[0,a(V),GD,6,GD,74,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7P=a("8414"),a7Q=a("13100"),a7S=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7N=[0,a(V),4342,6,4343,38,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7L=a("20640"),a7M=a("32073"),a7O=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7I=[0,a(V),4360,6,4361,24,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7G=a(C9),a7H=a(H4),a7J=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7F=[0,a(V),4324,6,4325,41,[0,a(nW),[0,a(gJ),[0,a(R),0]]]],a7D=a(C9),a7E=a(H4),a7K=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7z=[0,a(V),GC,14,GC,41,[0,a("Article 40"),[0,a(gJ),[0,a(R),0]]]],a7v=a(p),a7w=a(fz),a7x=a(hk),a7y=a(fz),a7p=[0,a(C),Iq,14,Iq,61,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a7q=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7r=[0,a(Y),[0,a(K9),0]],a7m=[0,a(c),JA,14,JA,49,[0,a(G),[0,a(t),[0,a(d),0]]]],a7i=[0,a(c),x8,14,x8,53,[0,a(G),[0,a(t),[0,a(d),0]]]],a7e=[0,a(c),tj,14,tj,44,[0,a(G),[0,a(t),[0,a(d),0]]]],a7a=[0,a(c),yF,14,yF,70,[0,a(G),[0,a(t),[0,a(d),0]]]],a68=[0,a(c),KO,14,KO,65,[0,a(G),[0,a(t),[0,a(d),0]]]],a64=[0,a(c),Ms,14,Ms,67,[0,a(G),[0,a(t),[0,a(d),0]]]],a60=[0,a(c),y4,14,y4,55,[0,a(G),[0,a(t),[0,a(d),0]]]],a6U=[0,a(c),AH,14,AH,50,[0,a(G),[0,a(t),[0,a(d),0]]]],a6O=[0,a(C),ys,14,ys,64,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6K=[0,a(C),HR,14,HR,59,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6G=[0,a(C),xA,14,xA,55,[0,a(c7),[0,a(aV),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6C=[0,a(V),AG,14,AG,51,[0,a("Article 44"),[0,a(gJ),[0,a(R),0]]]],a6B=a(sA),a6x=[0,a(V),mv,14,mv,41,[0,a("Article 41"),[0,a(gJ),[0,a(R),0]]]],a6w=a(jX),a6s=[0,a(V),Hy,14,Hy,42,[0,a("Article 42"),[0,a(gJ),[0,a(R),0]]]],a6r=a(iI),a6t=[0,a(c),og,11,og,39,[0,a(G),[0,a(t),[0,a(d),0]]]],a6q=[0,a(c),og,11,og,39,[0,a(G),[0,a(t),[0,a(d),0]]]],a6u=[0,a(Y),[0,a("montant_minimal_aide_d842_15"),0]],a6y=[0,a(c),oC,11,oC,38,[0,a(G),[0,a(t),[0,a(d),0]]]],a6v=[0,a(c),oC,11,oC,38,[0,a(G),[0,a(t),[0,a(d),0]]]],a6z=[0,a(Y),[0,a("montant_forfaitaire_d842_15"),0]],a6D=[0,a(c),oL,11,oL,48,[0,a(G),[0,a(t),[0,a(d),0]]]],a6A=[0,a(c),oL,11,oL,48,[0,a(G),[0,a(t),[0,a(d),0]]]],a6E=[0,a(Y),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],a6H=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6I=[0,a(Y),[0,a(Je),0]],a6F=[0,a(c),nX,10,nX,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6L=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6M=[0,a(Y),[0,a(my),0]],a6J=[0,a(c),mO,10,mO,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6P=[0,a(c),iP,3,iP,22,[0,a(G),[0,a(t),[0,a(d),0]]]],a6Q=[0,a(Y),[0,a(o5),0]],a6N=[0,a(c),n5,10,n5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a6R=[0,a(Y),[0,a(gS),[0,a(j5),0]]],a6S=[0,a(Y),[0,a(gS),[0,a(j5),0]]],a6V=[0,a(c),sB,3,sB,25,[0,a(G),[0,a(t),[0,a(d),0]]]],a6W=[0,a(Y),[0,a(j7),0]],a6T=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],a6X=[0,a(Y),[0,a(eW),[0,a(af),0]]],a6Y=[0,a(Y),[0,a(eW),[0,a(af),0]]],a61=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a62=[0,a(Y),[0,a(JW),0]],a6Z=[0,a(c),iG,10,iG,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a65=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a66=[0,a(Y),[0,a(Fi),0]],a63=[0,a(c),ix,10,ix,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a69=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a6_=[0,a(Y),[0,a(Ef),0]],a67=[0,a(c),hq,10,hq,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7b=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7c=[0,a(Y),[0,a(B0),0]],a6$=[0,a(c),i5,10,i5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7f=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7g=[0,a(Y),[0,a(J9),0]],a7d=[0,a(c),iD,10,iD,14,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7j=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7k=[0,a(Y),[0,a(D2),0]],a7h=[0,a(c),iF,10,iF,23,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7n=[0,a(c),c9,3,c9,28,[0,a(G),[0,a(t),[0,a(d),0]]]],a7o=[0,a(Y),[0,a(xB),0]],a7l=[0,a(c),iv,10,iv,19,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7s=[0,a(Y),[0,a(oN),[0,a(_),0]]],a7t=[0,a(Y),[0,a(oN),[0,a(_),0]]],a7A=[0,a(c),pA,10,pA,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a7u=[0,a(c),pA,10,pA,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a7B=[0,a(Y),[0,a(E4),0]],a7T=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7C=[0,a(c),dR,10,dR,27,[0,a(G),[0,a(t),[0,a(d),0]]]],a7U=[0,a(Y),[0,a("\xc3\xa9quivalence_loyer"),0]],a70=[0,a(Y),[0,a(ag),0]],a73=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a74=[0,a(Y),[0,a(ob),0]],a71=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a77=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a78=[0,a(Y),[0,a(nk),0]],a75=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a7$=[0,a(c),iN,3,iN,36,[0,a(G),[0,a(t),[0,a(d),0]]]],a8a=[0,a(Y),[0,a(n8),0]],a79=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],a8b=[0,a(Y),[0,a(gB),[0,a(ei),0]]],a8c=[0,a(Y),[0,a(gB),[0,a(ei),0]]],a8f=[0,a(c),oQ,10,oQ,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a8d=[0,a(c),oQ,10,oQ,37,[0,a(G),[0,a(t),[0,a(d),0]]]],a8g=[0,a(Y),[0,a(zi),0]],a8k=[0,a(Y),[0,a(cT),0]],a8n=[0,a(c),nn,10,nn,23,[0,a(G),[0,a(t),[0,a(d),0]]]],a8l=[0,a(c),nn,10,nn,23,[0,a(G),[0,a(t),[0,a(d),0]]]],a8o=[0,a(Y),[0,a("loyer_minimal"),0]],a8B=[0,a(Y),[0,a(cS),0]],a8E=[0,a(c),n2,10,n2,29,[0,a(G),[0,a(t),[0,a(d),0]]]],a8C=[0,a(c),n2,10,n2,29,[0,a(G),[0,a(t),[0,a(d),0]]]],a8F=[0,a(Y),[0,a(fS),0]],a89=[0,a(Y),[0,a(bn),0]],a9j=[0,a(Y),[0,a(bT),0]],a95=[0,a(Y),[0,a(a4),0]],a_g=[0,a(Y),[0,a(bD),0]],a6m=[0,a(C),JT,24,JT,43,[0,a(LW),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6l=a(p),a6n=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6k=[0,a(c),sv,14,sv,33,[0,a(N),[0,a(t),[0,a(d),0]]]],a6f=[0,a(C),EX,24,EX,46,[0,a(LW),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a6g=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a6e=[0,a(c),s0,14,s0,36,[0,a(N),[0,a(t),[0,a(d),0]]]],a6a=[0,a(aj),[0,a(bD),[0,a(P),0]]],a6b=[0,a(aj),[0,a(bD),0]],a6c=[0,a(aj),[0,a(bD),[0,a(O),0]]],a6d=[0,a(aj),[0,a(bD),0]],a6h=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a5$=[0,a(c),h0,10,h0,32,[0,a(N),[0,a(t),[0,a(d),0]]]],a56=[0,a(c),x9,14,x9,59,[0,a(N),[0,a(t),[0,a(d),0]]]],a52=[0,a(c),yo,14,yo,43,[0,a(N),[0,a(t),[0,a(d),0]]]],a5Y=[0,a(c),zo,14,zo,42,[0,a(N),[0,a(t),[0,a(d),0]]]],a5U=[0,a(c),834,5,835,63,[0,a(N),[0,a(t),[0,a(d),0]]]],a5Q=[0,a(c),s1,14,s1,53,[0,a(N),[0,a(t),[0,a(d),0]]]],a5M=[0,a(c),Jh,14,Jh,37,[0,a(N),[0,a(t),[0,a(d),0]]]],a5I=[0,a(c),rP,14,rP,63,[0,a(N),[0,a(t),[0,a(d),0]]]],a5E=[0,a(c),EV,14,EV,58,[0,a(N),[0,a(t),[0,a(d),0]]]],a5A=[0,a(c),kr,14,kr,46,[0,a(N),[0,a(t),[0,a(d),0]]]],a5w=[0,a(c),wY,14,wY,78,[0,a(N),[0,a(t),[0,a(d),0]]]],a5s=[0,a(c),sG,14,sG,60,[0,a(N),[0,a(t),[0,a(d),0]]]],a5n=[0,a(C),mv,5,mv,27,[0,a("Article D842-2"),[0,a(tC),[0,a(aP),[0,a(aM),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a5l=a(pm),a5m=a(kA),a5o=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5k=[0,a(c),zq,14,zq,48,[0,a(N),[0,a(t),[0,a(d),0]]]],a5p=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5q=[0,a(cb),[0,a("calcul_apl_locatif.loyer_principal"),0]],a5j=[0,a(c),mC,10,mC,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5t=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5u=[0,a(cb),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],a5r=[0,a(c),kC,10,kC,37,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5x=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5y=[0,a(cb),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],a5v=[0,a(c),nr,10,nr,55,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5B=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5C=[0,a(cb),[0,a("calcul_apl_locatif.date_courante"),0]],a5z=[0,a(c),l8,10,l8,23,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5F=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5G=[0,a(cb),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],a5D=[0,a(c),mH,10,mH,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5J=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5K=[0,a(cb),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],a5H=[0,a(c),pE,10,pE,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5N=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5O=[0,a(cb),[0,a("calcul_apl_locatif.zone"),0]],a5L=[0,a(c),oV,10,oV,14,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5R=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5S=[0,a(cb),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],a5P=[0,a(c),o7,10,o7,30,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5V=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a5W=[0,a(cb),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],a5T=[0,a(c),pt,10,pt,66,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a5Z=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a50=[0,a(cb),[0,a("calcul_apl_locatif.type_aide"),0]],a5X=[0,a(c),oU,10,oU,19,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a53=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a54=[0,a(cb),[0,a("calcul_apl_locatif.colocation"),0]],a51=[0,a(c),oc,10,oc,20,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a57=[0,a(c),bM,3,bM,21,[0,a(N),[0,a(t),[0,a(d),0]]]],a58=[0,a(cb),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],a55=[0,a(c),pz,10,pz,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],a59=[0,a(cb),[0,a(D0),[0,a(aj),0]]],a5_=[0,a(cb),[0,a(D0),[0,a(aj),0]]],a6i=[0,a(cb),[0,a(a7),0]],a6o=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6j=[0,a(c),hV,10,hV,29,[0,a(N),[0,a(t),[0,a(d),0]]]],a6p=[0,a(cb),[0,a(fS),0]],a5d=[0,a(l$),58,5,60,60,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a5e=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5c=[0,a(l$),47,5,48,78,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a5f=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5g=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5b=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5h=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a5a=[0,a(bO),41,10,41,22,[0,a(bQ),0]],a48=[0,a(l$),66,5,69,85,[0,a(hf),[0,a(ho),[0,a(eE),[0,a(aE),[0,a(am),[0,a(ai),0]]]]]]],a49=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a47=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a4_=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a46=[0,a(bO),42,10,42,29,[0,a(bQ),0]],a42=[0,a(sR),62,18,62,41,[0,a(yy),[0,a(ff),[0,a(hs),[0,a(ea),[0,a(dk),[0,a(ai),0]]]]]]],a40=a(pB),a41=a(o4),a43=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a4Z=[0,a(sR),31,14,31,30,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],a4X=a(pB),a4Y=a(o4),a4M=[0,0],a4O=[1,0],a4P=[2,0],a4Q=[3,0],a4R=[4,0],a4S=[5,0],a4N=[0,a(l$),pj,5,dV,30,[0,a(Kb),[0,a(Hg),[0,a(kl),[0,a(ea),[0,a(am),[0,a(ai),0]]]]]]],a4T=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4L=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4F=[0,a(bO),52,14,52,28,[0,a(bQ),0]],a4B=[0,a(bO),53,14,53,32,[0,a(bQ),0]],a4x=[0,a(sR),21,14,21,26,[0,a(nP),[0,a(m0),[0,a(eE),[0,a(aE),[0,a(dk),[0,a(ai),0]]]]]]],a4w=a(xM),a4y=[0,a(bO),44,10,44,22,[0,a(bQ),0]],a4v=[0,a(bO),44,10,44,22,[0,a(bQ),0]],a4z=[0,a(cG),[0,a(HF),0]],a4C=[0,a(bO),49,3,49,7,[0,a(bQ),0]],a4D=[0,a(cG),[0,a(LL),0]],a4A=[0,a(b3),9,10,9,23,[0,a(B),[0,a(aZ),0]]],a4G=[0,a(bO),49,3,49,7,[0,a(bQ),0]],a4H=[0,a(cG),[0,a(KK),0]],a4E=[0,a(b3),10,10,10,19,[0,a(B),[0,a(aZ),0]]],a4I=[0,a(cG),[0,a(gz),[0,a(is),0]]],a4J=[0,a(cG),[0,a(gz),[0,a(is),0]]],a4U=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4K=[0,a(bO),45,10,45,33,[0,a(bQ),0]],a4V=[0,a(cG),[0,a(w0),0]],a44=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a4W=[0,a(bO),43,11,43,27,[0,a(bQ),0]],a45=[0,a(cG),[0,a(Am),0]],a4$=[0,a(cG),[0,a(id),0]],a5i=[0,a(cG),[0,a(dG),0]],a4q=[0,a(C),mY,14,mY,32,[0,a(yA),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4o=a(cY),a4p=a(p),a4j=[0,a(C),IL,6,ts,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4k=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4i=[0,a(C),ku,14,ku,41,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4e=[0,a(C),oT,14,oT,32,[0,a("Article R822-8"),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4d=a(p),a39=[0,a(C),LR,14,LR,65,[0,a(yA),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a35=[0,a(C),J1,14,J1,33,[0,a("Article R822-10"),[0,a(oP),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3R=a(p),a3S=a(p),a3T=a(ab),a3U=a(Av),a3V=a(Dt),a3W=a(p),a3X=a(p),a3Y=a(p),a3Z=a(p),a30=a(p),a31=a(ab),a32=a(Av),a33=a(Dt),a34=a(p),a3N=[0,a(C),ia,14,ia,62,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3M=a(p),a3I=[0,a(c),hX,51,hX,57,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3E=[0,a(V),11,14,11,41,[0,a("Article 3"),[0,a(GF),[0,a(R),0]]]],a3D=a("9500"),a3z=[0,a(V),21,14,21,41,[0,a("Article 4"),[0,a(GF),[0,a(R),0]]]],a3y=a("258900"),a3u=[0,a(c),yB,46,yB,52,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3v=[0,a(c),mq,10,mq,15,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3t=[0,a(c),mq,10,mq,15,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3w=[0,a(d$),[0,a(Kf),0]],a3A=[0,a(c),o3,11,o3,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3x=[0,a(c),o3,11,o3,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3B=[0,a(d$),[0,a("montant_forfaitaire_r_822_8"),0]],a3F=[0,a(c),pc,11,pc,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3C=[0,a(c),pc,11,pc,38,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3G=[0,a(d$),[0,a("montant_forfaitaire_r_822_7"),0]],a3J=[0,a(c),hX,11,hX,42,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3H=[0,a(c),hX,11,hX,42,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3K=[0,a(d$),[0,a("ressources_forfaitaires_r822_20"),0]],a3O=[0,a(c),mU,11,mU,59,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3L=[0,a(c),mU,11,mU,59,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3P=[0,a(d$),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],a36=[0,a(c),m1,11,m1,30,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3Q=[0,a(c),m1,11,m1,30,[0,a(cc),[0,a(j),[0,a(d),0]]]],a37=[0,a(d$),[0,a("abattement_r_822_10"),0]],a3_=[0,a(c),sd,3,sd,40,[0,a(cc),[0,a(j),[0,a(d),0]]]],a3$=[0,a(d$),[0,a(KT),0]],a38=[0,a(d9),5,10,5,23,[0,a(b7),0]],a4a=[0,a(d$),[0,a(of),[0,a(gP),0]]],a4b=[0,a(d$),[0,a(of),[0,a(gP),0]]],a4f=[0,a(c),op,11,op,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4c=[0,a(c),op,11,op,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4g=[0,a(d$),[0,a("abattement_r_822_8"),0]],a4l=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4h=[0,a(c),h$,10,h$,37,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4m=[0,a(d$),[0,a("ressources_prises_en_compte"),0]],a4r=[0,a(c),lQ,11,lQ,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4n=[0,a(c),lQ,11,lQ,29,[0,a(cc),[0,a(j),[0,a(d),0]]]],a4s=[0,a(d$),[0,a("abattement_r_822_7"),0]],a4t=[0,a(C),iw,13,ne,74,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a4u=[0,a(C),iw,13,ne,74,[0,a(lU),[0,a(lW),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a3j=[0,a(c),yT,14,yT,56,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3f=[0,a(c),rv,14,rv,63,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3d=a(cw),a3e=a(cw),a2$=[0,a(C),Bp,14,Bp,49,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a27=[0,a(aW),[0,a(kG),[0,a(P),0]]],a28=[0,a(aW),[0,a(kG),0]],a29=[0,a(aW),[0,a(kG),[0,a(O),0]]],a2_=[0,a(aW),[0,a(kG),0]],a21=a(CG),a20=[0,a(C),1213,4,1219,49,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a22=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2V=[0,a(aW),[0,a(fB),[0,a(P),0]]],a2W=[0,a(aW),[0,a(fB),0]],a2X=[0,a(aW),[0,a(fB),[0,a(O),0]]],a2Y=[0,a(aW),[0,a(fB),0]],a2Z=[0,a(C),yS,5,yS,44,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a23=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2S=a("21"),a2T=[0,a(C),AD,5,1152,44,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a2U=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2R=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a24=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2Q=[0,a(c),dW,11,dW,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2L=[0,0],a2M=a(CG),a2K=[0,a(C),j_,5,ti,10,[0,a(ko),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a2N=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2J=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2O=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2I=[0,a(c),fM,10,fM,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2E=[0,a(c),rU,5,hh,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2F=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2D=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2z=[0,a(dX),pN,14,pN,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(am),[0,a(ai),0]]]]]]]],a2t=[0,a(aT),72,5,74,56,[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]],a2u=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2s=[0,a(aT),65,5,68,31,[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]],a2v=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2r=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2k=[0,a(aT),mA,18,mA,75,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2j=a(p),a2l=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2g=[4,0],a2h=[5,0],a2i=[0,a(aT),rx,18,r$,45,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2f=a(p),a2m=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2e=[0,a(C),I7,5,I7,59,[0,a(LB),[0,a(Dm),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a2n=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2d=[0,a(aT),zR,33,zR,58,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a2c=a(p),a1_=[0,a(dX),eX,14,eX,32,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],a11=a(J$),a12=a("8"),a13=a(J$),a14=[0,a(C),1057,5,1064,65,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a15=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a10=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a16=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1T=a(cw),a1S=a(cw),a1R=[0,a(aT),171,5,j2,66,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1U=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Q=[0,a(aT),rM,5,s_,30,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1V=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1P=[0,a(aT),eX,5,131,33,[0,a(EE),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1W=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1O=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1J=[0,a(aT),H5,18,H5,55,[0,a("Article L822-10"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1K=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1I=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1D=[0,a(dX),dW,5,s2,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1C=a("999840"),a1E=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1A=[0,a(dX),xf,5,j$,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1z=a("1041840"),a1B=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1x=[0,a(dX),kd,5,jP,35,[0,a(se),[0,a(r6),[0,a(tr),[0,a(rI),[0,a(r1),[0,a(bd),[0,a(ai),0]]]]]]]],a1w=a("1083840"),a1y=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1u=[0,a(f$),33,5,34,34,[0,a(IX),[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),0]]],a1t=a("1100144"),a1v=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1r=[0,a(f$),70,5,71,34,[0,a(IX),[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),0]]],a1q=a("1088175"),a1s=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1l=[0,a(aT),dV,5,iH,78,[0,a(EE),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1m=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1k=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1g=[0,a(aT),Ff,14,Ff,40,[0,a(mb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a1a=[0,a(dX),e8,14,e8,61,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],a06=[0,a(aT),46,5,46,41,[0,a("Article L821-2"),[0,a(Ab),[0,a(LE),[0,a(za),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]]]],a07=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a05=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a08=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0Z=a("30"),a0Y=[0,a(aT),203,5,207,39,[0,a(CX),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a00=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0X=[0,a(aT),sz,5,198,34,[0,a(CX),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a01=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0W=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0S=[0,a(C),J4,14,J4,69,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0L=a(rA),a0M=a(rA),a0N=a(hb),a0O=a(hb),a0P=a(hb),a0Q=a(rA),a0R=a(hb),a0G=[0,a(aT),dc,18,dc,67,[0,a("Article L822-8"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0H=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0F=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0A=[0,a(aT),EI,18,EI,61,[0,a("Article L822-9"),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0B=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0z=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0v=[0,a(C),mT,14,mT,39,[0,a(rz),[0,a(tb),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0p=a(x),a0q=a(ab),a0r=a(ab),a0s=a(ab),a0t=a(x),a0u=a(ab),a0l=[0,a(aT),gU,14,gU,43,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a0h=[0,a(C),sc,14,sc,37,[0,a(LB),[0,a(Dm),[0,a(eD),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],a0g=a("3000000"),a0c=[0,a(C),bo,14,bo,41,[0,a(Ek),[0,a(I_),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],a0b=a(CV),aZ9=[0,a(C),ed,14,ed,42,[0,a(Ek),[0,a(I_),[0,a(bk),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZ8=a(CV),aZ4=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ0=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ1=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZZ=[0,a(c),hW,11,hW,25,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ2=[0,a(aW),[0,a("condition_pr\xc3\xaat"),0]],aZ5=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ3=[0,a(c),iO,11,iO,48,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ6=[0,a(aW),[0,a("condition_peuplement_logement_l822_10"),0]],aZ_=[0,a(c),iS,11,iS,39,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ7=[0,a(c),iS,11,iS,39,[0,a(Z),[0,a(j),[0,a(d),0]]]],aZ$=[0,a(aW),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],a0d=[0,a(c),kd,11,kd,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0a=[0,a(c),kd,11,kd,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0e=[0,a(aW),[0,a("seuil_l822_3_parts_usufruit"),0]],a0i=[0,a(c),jP,11,jP,34,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0f=[0,a(c),jP,11,jP,34,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0j=[0,a(aW),[0,a("seuil_l822_5_patrimoine"),0]],a0m=[0,a(c),pe,11,pe,40,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0k=[0,a(c),pe,11,pe,40,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0n=[0,a(aW),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],a0w=[0,a(c),mZ,11,mZ,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0o=[0,a(c),mZ,11,mZ,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0x=[0,a(aW),[0,a("nombre_personnes_logement"),0]],a0C=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0y=[0,a(c),gi,11,gi,58,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0D=[0,a(aW),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],a0I=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0E=[0,a(c),gv,11,gv,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0J=[0,a(aW),[0,a("condition_non_ouverture_l822_8"),0]],a0T=[0,a(c),m_,11,m_,66,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0K=[0,a(c),m_,11,m_,66,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0U=[0,a(aW),[0,a("condition_logement_surface_minimale_sans_seuil_m_carr\xc3\xa9s"),0]],a02=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0V=[0,a(c),e2,11,e2,44,[0,a(Z),[0,a(j),[0,a(d),0]]]],a03=[0,a(aW),[0,a("condition_logement_location_tiers"),0]],a09=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a04=[0,a(c),fb,12,fb,51,[0,a(Z),[0,a(j),[0,a(d),0]]]],a0_=[0,a(aW),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],a1b=[0,a(c),LH,3,LH,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1c=[0,a(aW),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],a0$=[0,a(c),mT,10,mT,31,[0,a(fy),[0,a(t),[0,a(d),0]]]],a1d=[0,a(aW),[0,a(Ci),[0,a(te),0]]],a1e=[0,a(aW),[0,a(Ci),[0,a(te),0]]],a1h=[0,a(c),j$,11,j$,37,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1f=[0,a(c),j$,11,j$,37,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1i=[0,a(aW),[0,a("patrimoine_total_demandeur"),0]],a1n=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1j=[0,a(c),gK,11,gK,32,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1o=[0,a(aW),[0,a("condition_nationalit\xc3\xa9"),0]],a1F=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1p=[0,a(c),dc,11,dc,41,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1G=[0,a(aW),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],a1L=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1H=[0,a(c),gr,11,gr,62,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1M=[0,a(aW),[0,a("condition_non_ouverture_l822_10_peuplement_logement"),0]],a1X=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1N=[0,a(c),ek,11,ek,45,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Y=[0,a(aW),[0,a("condition_logement_mode_occupation"),0]],a17=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a1Z=[0,a(c),ev,12,ev,38,[0,a(Z),[0,a(j),[0,a(d),0]]]],a18=[0,a(aW),[0,a("condition_logement_surface"),0]],a1$=[0,a(c),oD,11,oD,29,[0,a(Z),[0,a(j),[0,a(d),0]]]],a19=[0,a(c),oD,11,oD,29,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2a=[0,a(aW),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],a2o=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2b=[0,a(c),fa,11,fa,36,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2p=[0,a(aW),[0,a("patrimoine_pris_en_compte"),0]],a2w=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2q=[0,a(c),eT,11,eT,31,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2x=[0,a(aW),[0,a(A9),0]],a2A=[0,a(c),mW,11,mW,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2y=[0,a(c),mW,11,mW,28,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2B=[0,a(aW),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],a2G=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2C=[0,a(c),gI,10,gI,21,[0,a(Z),[0,a(j),[0,a(d),0]]]],a2H=[0,a(aW),[0,a(o_),0]],a2P=[0,a(aW),[0,a(fB),0]],a25=[0,a(aW),[0,a(kG),0]],a3a=[0,a(c),na,11,na,46,[0,a(Z),[0,a(j),[0,a(d),0]]]],a26=[0,a(c),na,11,na,46,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3b=[0,a(aW),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],a3g=[0,a(c),ot,10,ot,59,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3c=[0,a(c),ot,10,ot,59,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3h=[0,a(aW),[0,a(kw),0]],a3k=[0,a(c),ou,10,ou,52,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3i=[0,a(c),ou,10,ou,52,[0,a(Z),[0,a(j),[0,a(d),0]]]],a3l=[0,a(aW),[0,a(tu),0]],a3n=a(su),a3m=[0,a(aT),hY,13,hY,48,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3r=[0,a(aT),hY,13,hY,48,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3p=a(su),a3o=[0,a(aT),hn,13,hn,49,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],a3q=[0,a(aT),hn,13,hn,49,[0,a(ha),[0,a(bk),[0,a(Q),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aZW=[0,a(C),K$,14,K$,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZN=[0,a(U),[0,a(a4),[0,a(P),0]]],aZO=[0,a(U),[0,a(a4),0]],aZP=[0,a(U),[0,a(a4),[0,a(O),0]]],aZQ=[0,a(U),[0,a(a4),0]],aZR=a(p),aZS=[0,a(U),[0,a(a4),[0,a(P),0]]],aZT=[0,a(U),[0,a(a4),0]],aZU=[0,a(U),[0,a(a4),[0,a(O),0]]],aZV=[0,a(U),[0,a(a4),0]],aZX=[0,a(c),o$,10,o$,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZM=[0,a(c),o$,10,o$,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZJ=[0,a(C),zM,14,zM,33,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aZH=a(p),aZI=a(p),aZD=[0,a(C),Dk,14,Dk,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYX=a(p),aYY=[0,a(U),[0,a(aR),[0,a(P),0]]],aYZ=[0,a(U),[0,a(aR),0]],aY0=[0,a(U),[0,a(aR),[0,a(O),0]]],aY1=[0,a(U),[0,a(aR),0]],aY2=[0,a(af),[0,a(al),[0,a(P),0]]],aY3=[0,a(af),[0,a(al),0]],aY4=[0,a(af),[0,a(al),[0,a(O),0]]],aY5=[0,a(af),[0,a(al),0]],aY6=a(e1),aY7=[0,a(U),[0,a(aR),[0,a(P),0]]],aY8=[0,a(U),[0,a(aR),0]],aY9=[0,a(U),[0,a(aR),[0,a(O),0]]],aY_=[0,a(U),[0,a(aR),0]],aY$=[0,a(af),[0,a(al),[0,a(P),0]]],aZa=[0,a(af),[0,a(al),0]],aZb=[0,a(af),[0,a(al),[0,a(O),0]]],aZc=[0,a(af),[0,a(al),0]],aZd=[0,a(U),[0,a(aR),[0,a(P),0]]],aZe=[0,a(U),[0,a(aR),0]],aZf=[0,a(U),[0,a(aR),[0,a(O),0]]],aZg=[0,a(U),[0,a(aR),0]],aZh=[0,a(U),[0,a(aR),[0,a(P),0]]],aZi=[0,a(U),[0,a(aR),0]],aZj=[0,a(U),[0,a(aR),[0,a(O),0]]],aZk=[0,a(U),[0,a(aR),0]],aZl=[0,a(af),[0,a(al),[0,a(P),0]]],aZm=[0,a(af),[0,a(al),0]],aZn=[0,a(af),[0,a(al),[0,a(O),0]]],aZo=[0,a(af),[0,a(al),0]],aZp=a(e1),aZq=[0,a(U),[0,a(aR),[0,a(P),0]]],aZr=[0,a(U),[0,a(aR),0]],aZs=[0,a(U),[0,a(aR),[0,a(O),0]]],aZt=[0,a(U),[0,a(aR),0]],aZu=[0,a(af),[0,a(al),[0,a(P),0]]],aZv=[0,a(af),[0,a(al),0]],aZw=[0,a(af),[0,a(al),[0,a(O),0]]],aZx=[0,a(af),[0,a(al),0]],aZy=[0,a(U),[0,a(aR),[0,a(P),0]]],aZz=[0,a(U),[0,a(aR),0]],aZA=[0,a(U),[0,a(aR),[0,a(O),0]]],aZB=[0,a(U),[0,a(aR),0]],aZC=a(p),aZE=[0,a(c),os,10,os,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYW=[0,a(c),os,10,os,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYT=[0,a(C),GP,14,GP,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYR=a(ip),aYS=a(ip),aYN=[0,a(C),CU,14,CU,33,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYJ=[0,a(C),LG,14,LG,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYj=a(p),aYk=[0,a(U),[0,a(ag),[0,a(P),0]]],aYl=[0,a(U),[0,a(ag),0]],aYm=[0,a(U),[0,a(ag),[0,a(O),0]]],aYn=[0,a(U),[0,a(ag),0]],aYo=[0,a(U),[0,a(fR),[0,a(P),0]]],aYp=[0,a(U),[0,a(fR),0]],aYq=[0,a(U),[0,a(fR),[0,a(O),0]]],aYr=[0,a(U),[0,a(fR),0]],aYs=[0,a(U),[0,a(ag),[0,a(P),0]]],aYt=[0,a(U),[0,a(ag),0]],aYu=[0,a(U),[0,a(ag),[0,a(O),0]]],aYv=[0,a(U),[0,a(ag),0]],aYw=[0,a(U),[0,a(ag),[0,a(P),0]]],aYx=[0,a(U),[0,a(ag),0]],aYy=[0,a(U),[0,a(ag),[0,a(O),0]]],aYz=[0,a(U),[0,a(ag),0]],aYA=[0,a(U),[0,a(fR),[0,a(P),0]]],aYB=[0,a(U),[0,a(fR),0]],aYC=[0,a(U),[0,a(fR),[0,a(O),0]]],aYD=[0,a(U),[0,a(fR),0]],aYE=[0,a(U),[0,a(ag),[0,a(P),0]]],aYF=[0,a(U),[0,a(ag),0]],aYG=[0,a(U),[0,a(ag),[0,a(O),0]]],aYH=[0,a(U),[0,a(ag),0]],aYI=a(p),aYK=[0,a(c),pI,10,pI,20,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYi=[0,a(c),pI,10,pI,20,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYf=[0,a(C),BO,14,BO,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aYc=a(dU),aYd=a(dU),aYe=a(lT),aX9=[0,a(C),3496,5,3508,77,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aX7=a(cY),aX8=a(cw),aX_=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX5=[0,a(C),BU,5,BU,75,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aX6=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXZ=[0,a(cn),gH,14,gH,42,[0,a(pn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aXY=a(fF),aX0=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXX=[0,a(V),A8,14,A8,42,[0,a(pn),[0,a(aK),[0,a(R),0]]]],aXW=a(fF),aX1=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXS=[0,a(C),Mg,14,Mg,55,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXJ=[0,a(U),[0,a(fN),[0,a(P),0]]],aXK=[0,a(U),[0,a(fN),0]],aXL=[0,a(U),[0,a(fN),[0,a(O),0]]],aXM=[0,a(U),[0,a(fN),0]],aXN=[0,a(U),[0,a(fN),[0,a(P),0]]],aXO=[0,a(U),[0,a(fN),0]],aXP=[0,a(U),[0,a(fN),[0,a(O),0]]],aXQ=[0,a(U),[0,a(fN),0]],aXR=a(p),aXT=[0,a(c),nU,11,nU,52,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXI=[0,a(c),nU,11,nU,52,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXF=[0,a(C),Eg,14,Eg,49,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXE=a(ip),aXy=[0,a(C),D7,14,D7,70,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXu=[0,a(C),EW,14,EW,69,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXq=[0,a(C),xb,14,xb,75,[0,a(kh),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aXl=[0,a(C),C$,5,C$,44,[0,a(Bd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aW7=[0,a(U),[0,a(cl),[0,a(P),0]]],aW8=[0,a(U),[0,a(cl),0]],aW9=[0,a(U),[0,a(cl),[0,a(O),0]]],aW_=[0,a(U),[0,a(cl),0]],aW$=[0,a(U),[0,a(cl),[0,a(P),0]]],aXa=[0,a(U),[0,a(cl),0]],aXb=[0,a(U),[0,a(cl),[0,a(O),0]]],aXc=[0,a(U),[0,a(cl),0]],aXd=[0,a(U),[0,a(cl),[0,a(P),0]]],aXe=[0,a(U),[0,a(cl),0]],aXf=[0,a(U),[0,a(cl),[0,a(O),0]]],aXg=[0,a(U),[0,a(cl),0]],aXh=[0,a(U),[0,a(cl),[0,a(P),0]]],aXi=[0,a(U),[0,a(cl),0]],aXj=[0,a(U),[0,a(cl),[0,a(O),0]]],aXk=[0,a(U),[0,a(cl),0]],aXm=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aW6=[0,a(C),KA,14,KA,42,[0,a(Bd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aW2=[0,a(U),[0,a(cl),[0,a(P),0]]],aW3=[0,a(U),[0,a(cl),0]],aW4=[0,a(U),[0,a(cl),[0,a(O),0]]],aW5=[0,a(U),[0,a(cl),0]],aWX=[0,a(C),F0,5,F0,41,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWY=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWW=[0,a(C),G2,14,G2,44,[0,a(r_),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWZ=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWV=[0,a(c),iy,11,iy,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWS=[0,a(C),w8,14,w8,36,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aWN=[0,a(V),621,5,624,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aWv=a(p),aWw=a(Gl),aWx=a(Fs),aWy=a(x),aWz=a(EK),aWA=a(Hr),aWB=a(p),aWC=a(AJ),aWD=a(sk),aWE=a(x),aWF=a(rF),aWG=a(sY),aWH=a(p),aWI=a(HL),aWJ=a(tx),aWK=a(x),aWL=a("35600"),aWM=a(kf),aWO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWt=[0,a(V),665,5,kv,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aWb=a(p),aWc=a(Hd),aWd=a(tf),aWe=a(x),aWf=a("37400"),aWg=a(JM),aWh=a(p),aWi=a("146900"),aWj=a(Hz),aWk=a(x),aWl=a(sj),aWm=a("210600"),aWn=a(p),aWo=a(CY),aWp=a("167600"),aWq=a(x),aWr=a("27900"),aWs=a("195500"),aWu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aV$=[0,a(V),ky,5,jW,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aVT=a(p),aVU=a(tc),aVV=a("220000"),aVW=a(x),aVX=a("38000"),aVY=a("260000"),aVZ=a(p),aV0=a("164200"),aV1=a(zT),aV2=a(x),aV3=a(Ez),aV4=a("231200"),aV5=a(p),aV6=a("153200"),aV7=a("183700"),aV8=a(x),aV9=a(sj),aV_=a("214200"),aWa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVR=[0,a(V),rD,5,755,33,[0,a(pJ),[0,a(aK),[0,a(R),0]]]],aVz=a(p),aVA=a("148100"),aVB=a("178700"),aVC=a(x),aVD=a("30600"),aVE=a("209300"),aVF=a(p),aVG=a(Bh),aVH=a("158900"),aVI=a(x),aVJ=a("26900"),aVK=a(zd),aVL=a(p),aVM=a("123300"),aVN=a("147900"),aVO=a(x),aVP=a("24600"),aVQ=a(C4),aVS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVx=[0,a(V),804,5,sa,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aVf=a(p),aVg=a(Gl),aVh=a(Fs),aVi=a(x),aVj=a(EK),aVk=a(Hr),aVl=a(p),aVm=a(AJ),aVn=a(sk),aVo=a(x),aVp=a(rF),aVq=a(sY),aVr=a(p),aVs=a(HL),aVt=a(tx),aVu=a(x),aVv=a(zk),aVw=a(kf),aVy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aVd=[0,a(V),848,5,IL,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUX=a(p),aUY=a(Hd),aUZ=a(tf),aU0=a(x),aU1=a("34700"),aU2=a(JM),aU3=a(p),aU4=a("149600"),aU5=a(sk),aU6=a(x),aU7=a(rF),aU8=a(sY),aU9=a(p),aU_=a(CY),aU$=a(tx),aVa=a(x),aVb=a(zk),aVc=a(kf),aVe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUV=[0,a(V),895,5,901,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUP=a(p),aUQ=a("86900"),aUR=a("97100"),aUS=a(x),aUT=a("10200"),aUU=a("107300"),aUW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUN=[0,a(V),927,5,930,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUv=a(p),aUw=a("198100"),aUx=a("239000"),aUy=a(x),aUz=a("40900"),aUA=a("279900"),aUB=a(p),aUC=a("176800"),aUD=a("212800"),aUE=a(x),aUF=a("36000"),aUG=a("248800"),aUH=a(p),aUI=a("165000"),aUJ=a("197900"),aUK=a(x),aUL=a("32900"),aUM=a("230800"),aUO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aUt=[0,a(V),sB,5,974,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aUb=a(p),aUc=a("159500"),aUd=a(xS),aUe=a(x),aUf=a("33000"),aUg=a(Hn),aUh=a(p),aUi=a("142200"),aUj=a("171200"),aUk=a(x),aUl=a("29000"),aUm=a("200200"),aUn=a(p),aUo=a("132800"),aUp=a("159300"),aUq=a(x),aUr=a("26500"),aUs=a(zd),aUu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aT$=[0,a(V),1016,5,1019,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTT=a(p),aTU=a("200100"),aTV=a("141400"),aTW=a(x),aTX=a("41300"),aTY=a("282700"),aTZ=a(p),aT0=a("178600"),aT1=a("215000"),aT2=a(x),aT3=a("36400"),aT4=a("251400"),aT5=a(p),aT6=a("166700"),aT7=a(sL),aT8=a(x),aT9=a("33200"),aT_=a("233100"),aUa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTR=[0,a(V),1060,5,1063,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTz=a(p),aTA=a("161100"),aTB=a("194400"),aTC=a(x),aTD=a("33300"),aTE=a("227700"),aTF=a(p),aTG=a("143600"),aTH=a("172900"),aTI=a(x),aTJ=a("29300"),aTK=a("202200"),aTL=a(p),aTM=a("134100"),aTN=a("160900"),aTO=a(x),aTP=a("26800"),aTQ=a("187700"),aTS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTx=[0,a(V),sU,5,tE,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aTf=a(p),aTg=a(tf),aTh=a("244300"),aTi=a(x),aTj=a("41800"),aTk=a("286100"),aTl=a(p),aTm=a("180700"),aTn=a("217500"),aTo=a(x),aTp=a("36800"),aTq=a("254300"),aTr=a(p),aTs=a("168700"),aTt=a("202300"),aTu=a(x),aTv=a("33600"),aTw=a("235900"),aTy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aTd=[0,a(V),AD,5,1153,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSX=a(p),aSY=a("30871"),aSZ=a("37243"),aS0=a(x),aS1=a("6372"),aS2=a("43615"),aS3=a(p),aS4=a("27548"),aS5=a("33148"),aS6=a(x),aS7=a("5610"),aS8=a("38768"),aS9=a(p),aS_=a("25718"),aS$=a("30840"),aTa=a(x),aTb=a("5122"),aTc=a("35962"),aTe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSV=[0,a(V),sy,5,1199,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSD=a(p),aSE=a(GO),aSF=a("196700"),aSG=a(x),aSH=a("33700"),aSI=a("230400"),aSJ=a(p),aSK=a("145300"),aSL=a("175000"),aSM=a(x),aSN=a("29700"),aSO=a(Cx),aSP=a(p),aSQ=a("135700"),aSR=a("162800"),aSS=a(x),aST=a("27100"),aSU=a("189900"),aSW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSB=[0,a(V),1239,5,1242,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aSj=a(p),aSk=a("24849"),aSl=a("29987"),aSm=a(x),aSn=a("5138"),aSo=a("35125"),aSp=a(p),aSq=a("22151"),aSr=a("26679"),aSs=a(x),aSt=a("4528"),aSu=a("31207"),aSv=a(p),aSw=a("20687"),aSx=a("24818"),aSy=a(x),aSz=a("4131"),aSA=a("28949"),aSC=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aSh=[0,a(V),1284,5,1287,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aR1=a(p),aR2=a("31241"),aR3=a("37689"),aR4=a(x),aR5=a("6448"),aR6=a("44137"),aR7=a(p),aR8=a("27879"),aR9=a("33556"),aR_=a(x),aR$=a("5677"),aSa=a("39233"),aSb=a(p),aSc=a("26027"),aSd=a("31210"),aSe=a(x),aSf=a("5183"),aSg=a("36393"),aSi=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRZ=[0,a(V),1328,5,1331,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aRH=a(p),aRI=a("25147"),aRJ=a("30347"),aRK=a(x),aRL=a("5200"),aRM=a("35547"),aRN=a(p),aRO=a("22417"),aRP=a("26999"),aRQ=a(x),aRR=a("4582"),aRS=a("31581"),aRT=a(p),aRU=a("20935"),aRV=a(JN),aRW=a(x),aRX=a("4181"),aRY=a("29297"),aR0=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRF=[0,a(V),1373,5,1376,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aRn=a(p),aRo=a("31616"),aRp=a("38141"),aRq=a(x),aRr=a("6525"),aRs=a("44666"),aRt=a(p),aRu=a("28214"),aRv=a("33959"),aRw=a(x),aRx=a("5745"),aRy=a("39704"),aRz=a(p),aRA=a("26339"),aRB=a("31584"),aRC=a(x),aRD=a("5245"),aRE=a("36829"),aRG=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aRl=[0,a(V),1417,5,1420,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQ5=a(p),aQ6=a("25449"),aQ7=a("30711"),aQ8=a(x),aQ9=a("5262"),aQ_=a("35973"),aQ$=a(p),aRa=a("22686"),aRb=a("27323"),aRc=a(x),aRd=a("4637"),aRe=a("31960"),aRf=a(p),aRg=a("21186"),aRh=a("25417"),aRi=a(x),aRj=a("4231"),aRk=a("26948"),aRm=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQ3=[0,a(V),1462,5,DT,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQL=a(p),aQM=a("32185"),aQN=a("38827"),aQO=a(x),aQP=a("6642"),aQQ=a("45469"),aQR=a(p),aQS=a("28722"),aQT=a(G0),aQU=a(x),aQV=a("5848"),aQW=a("40418"),aQX=a(p),aQY=a("26813"),aQZ=a("32152"),aQ0=a(x),aQ1=a("5339"),aQ2=a("37491"),aQ4=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQJ=[0,a(V),1506,5,1509,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aQr=a(p),aQs=a("25907"),aQt=a(yr),aQu=a(x),aQv=a("5357"),aQw=a("36621"),aQx=a(p),aQy=a("23094"),aQz=a("27814"),aQA=a(x),aQB=a("4720"),aQC=a("32534"),aQD=a(p),aQE=a("21567"),aQF=a("25874"),aQG=a(x),aQH=a("4307"),aQI=a("30881"),aQK=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aQp=[0,a(V),1551,5,1554,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aP9=a(p),aP_=a(GT),aP$=a("39914"),aQa=a(x),aQb=a("6828"),aQc=a("46742"),aQd=a(p),aQe=a("29526"),aQf=a("35538"),aQg=a(x),aQh=a("6012"),aQi=a("41550"),aQj=a(p),aQk=a("27564"),aQl=a("33052"),aQm=a(x),aQn=a("5488"),aQo=a("38541"),aQq=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aP7=[0,a(V),Bt,5,1598,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPP=a(p),aPQ=a("26632"),aPR=a("32139"),aPS=a(x),aPT=a("5507"),aPU=a("37646"),aPV=a(p),aPW=a("23741"),aPX=a("28593"),aPY=a(x),aPZ=a("4852"),aP0=a("33445"),aP1=a(p),aP2=a("22171"),aP3=a("36598"),aP4=a(x),aP5=a("4428"),aP6=a("31026"),aP8=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aPN=[0,a(V),1640,5,1643,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPv=a(p),aPw=a("33999"),aPx=a("41016"),aPy=a(x),aPz=a("7016"),aPA=a("48032"),aPB=a(p),aPC=a("30341"),aPD=a("36519"),aPE=a(x),aPF=a("6178"),aPG=a("42697"),aPH=a(p),aPI=a("28325"),aPJ=a("33964"),aPK=a(x),aPL=a("5639"),aPM=a("39605"),aPO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aPt=[0,a(V),1684,5,1687,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aPb=a(p),aPc=a("27367"),aPd=a(GT),aPe=a(x),aPf=a("5659"),aPg=a("38685"),aPh=a(p),aPi=a("24396"),aPj=a("29382"),aPk=a(x),aPl=a(JF),aPm=a("34368"),aPn=a(p),aPo=a("22783"),aPp=a("27332"),aPq=a(x),aPr=a("4550"),aPs=a("31882"),aPu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aO$=[0,a(V),sx,5,1732,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOT=a(p),aOU=a("35002"),aOV=a("42226"),aOW=a(x),aOX=a("7223"),aOY=a("49449"),aOZ=a(p),aO0=a("31236"),aO1=a("37596"),aO2=a(x),aO3=a("6360"),aO4=a("43957"),aO5=a(p),aO6=a("29161"),aO7=a("34966"),aO8=a(x),aO9=a("5805"),aO_=a("40773"),aPa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOR=[0,a(V),1773,5,1776,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOz=a(p),aOA=a("28174"),aOB=a("34000"),aOC=a(x),aOD=a("5826"),aOE=a("39826"),aOF=a(p),aOG=a(JN),aOH=a("30249"),aOI=a(x),aOJ=a("5133"),aOK=a("35382"),aOL=a(p),aOM=a("23455"),aON=a("28138"),aOO=a(x),aOP=a("4684"),aOQ=a("32823"),aOS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOx=[0,a(V),1818,5,1821,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aOf=a(p),aOg=a("35114"),aOh=a("42361"),aOi=a(x),aOj=a("7246"),aOk=a("49607"),aOl=a(p),aOm=a("31336"),aOn=a("37716"),aOo=a(x),aOp=a("6380"),aOq=a("44098"),aOr=a(p),aOs=a("29254"),aOt=a("35078"),aOu=a(x),aOv=a("5824"),aOw=a("40903"),aOy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aOd=[0,a(V),r2,5,1865,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aNX=a(p),aNY=a("28264"),aNZ=a("34109"),aN0=a(x),aN1=a("5845"),aN2=a("39953"),aN3=a(p),aN4=a("25196"),aN5=a("30346"),aN6=a(x),aN7=a("5149"),aN8=a("35495"),aN9=a(p),aN_=a("23530"),aN$=a("28228"),aOa=a(x),aOb=a("4699"),aOc=a("32928"),aOe=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNV=[0,a(V),1907,5,1910,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aND=a(p),aNE=a("35500"),aNF=a("42827"),aNG=a(x),aNH=a("7326"),aNI=a("50153"),aNJ=a(p),aNK=a("31681"),aNL=a("38131"),aNM=a(x),aNN=a("6450"),aNO=a("44583"),aNP=a(p),aNQ=a("29576"),aNR=a("35464"),aNS=a(x),aNT=a("5888"),aNU=a("41353"),aNW=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNB=[0,a(V),iU,5,1954,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aNj=a(p),aNk=a("28575"),aNl=a("34484"),aNm=a(x),aNn=a("5909"),aNo=a("40392"),aNp=a(p),aNq=a("25473"),aNr=a("30680"),aNs=a(x),aNt=a("5206"),aNu=a("35885"),aNv=a(p),aNw=a("23789"),aNx=a("28539"),aNy=a(x),aNz=a("4751"),aNA=a("33290"),aNC=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aNh=[0,a(V),1996,5,j3,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aM1=a(p),aM2=a("35855"),aM3=a("43255"),aM4=a(x),aM5=a("7399"),aM6=a("50655"),aM7=a(p),aM8=a("31998"),aM9=a("38512"),aM_=a(x),aM$=a("6515"),aNa=a("45029"),aNb=a(p),aNc=a("29872"),aNd=a("35819"),aNe=a(x),aNf=a("5947"),aNg=a("41767"),aNi=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMZ=[0,a(V),2071,5,2074,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aMH=a(p),aMI=a("28861"),aMJ=a(Ll),aMK=a(x),aML=a("5968"),aMM=a("40796"),aMN=a(p),aMO=a("25728"),aMP=a("30987"),aMQ=a(x),aMR=a("5258"),aMS=a("36244"),aMT=a(p),aMU=a("24027"),aMV=a("28824"),aMW=a(x),aMX=a("4799"),aMY=a(HW),aM0=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMF=[0,a(V),2118,5,2121,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aMn=a(p),aMo=a("36626"),aMp=a("44185"),aMq=a(x),aMr=a("7558"),aMs=a("51744"),aMt=a(p),aMu=a("32686"),aMv=a(y$),aMw=a(x),aMx=a("6655"),aMy=a("45997"),aMz=a(p),aMA=a("30514"),aMB=a("36589"),aMC=a(x),aMD=a("6075"),aME=a("42665"),aMG=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aMl=[0,a(V),2162,5,2165,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aL5=a(p),aL6=a("29482"),aL7=a("35578"),aL8=a(x),aL9=a("6096"),aL_=a("41673"),aL$=a(p),aMa=a("26281"),aMb=a("31653"),aMc=a(x),aMd=a("5371"),aMe=a("37023"),aMf=a(p),aMg=a("24544"),aMh=a("29444"),aMi=a(x),aMj=a("4902"),aMk=a("34346"),aMm=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aL3=[0,a(V),2207,5,2210,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aLL=a(p),aLM=a("36835"),aLN=a("44437"),aLO=a(x),aLP=a("7601"),aLQ=a("52039"),aLR=a(p),aLS=a("32872"),aLT=a("39564"),aLU=a(x),aLV=a("6693"),aLW=a("46259"),aLX=a(p),aLY=a("30688"),aLZ=a("36798"),aL0=a(x),aL1=a("6110"),aL2=a("42908"),aL4=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aLJ=[0,a(V),2251,5,2254,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aLr=a(p),aLs=a("29650"),aLt=a("35781"),aLu=a(x),aLv=a("6131"),aLw=a("41911"),aLx=a(p),aLy=a("26431"),aLz=a("31833"),aLA=a(x),aLB=a("5402"),aLC=a("37234"),aLD=a(p),aLE=a("24684"),aLF=a("29612"),aLG=a(x),aLH=a("4930"),aLI=a("34542"),aLK=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aLp=[0,a(V),2296,5,2299,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aK9=a(p),aK_=a("36864"),aK$=a("44473"),aLa=a(x),aLb=a("7607"),aLc=a("52081"),aLd=a(p),aLe=a("32898"),aLf=a("39596"),aLg=a(x),aLh=a("6698"),aLi=a("46296"),aLj=a(p),aLk=a("30713"),aLl=a("36827"),aLm=a(x),aLn=a("6115"),aLo=a("42942"),aLq=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aK7=[0,a(V),2340,5,2343,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKP=a(p),aKQ=a("29674"),aKR=a("35810"),aKS=a(x),aKT=a("6136"),aKU=a("41945"),aKV=a(p),aKW=a("26452"),aKX=a("31858"),aKY=a(x),aKZ=a("5406"),aK0=a("37264"),aK1=a(p),aK2=a("24704"),aK3=a("29636"),aK4=a(x),aK5=a("4934"),aK6=a(G0),aK8=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aKN=[0,a(V),2385,5,2388,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKv=a(p),aKw=a("37140"),aKx=a("44807"),aKy=a(x),aKz=a("7664"),aKA=a("52472"),aKB=a(p),aKC=a("33145"),aKD=a("39893"),aKE=a(x),aKF=a("6748"),aKG=a("46643"),aKH=a(p),aKI=a("30943"),aKJ=a("37103"),aKK=a(x),aKL=a("6161"),aKM=a("43264"),aKO=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aKt=[0,a(V),2429,5,2432,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aKb=a(p),aKc=a("29897"),aKd=a("36079"),aKe=a(x),aKf=a("6182"),aKg=a("42260"),aKh=a(p),aKi=a("26650"),aKj=a("32097"),aKk=a(x),aKl=a("5447"),aKm=a("37543"),aKn=a(p),aKo=a("24889"),aKp=a("29858"),aKq=a(x),aKr=a("4971"),aKs=a(Ll),aKu=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJ$=[0,a(V),2474,5,2476,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aJT=a(p),aJU=a("37252"),aJV=a("44941"),aJW=a(x),aJX=a("7687"),aJY=a("52629"),aJZ=a(p),aJ0=a("33244"),aJ1=a("40013"),aJ2=a(x),aJ3=a("6768"),aJ4=a("46783"),aJ5=a(p),aJ6=a("31036"),aJ7=a("37215"),aJ8=a(x),aJ9=a("6179"),aJ_=a("43394"),aKa=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJR=[0,a(V),2517,5,2519,36,[0,a(bb),[0,a(aK),[0,a(R),0]]]],aJz=a(p),aJA=a("29986"),aJB=a("36187"),aJC=a(x),aJD=a("6201"),aJE=a("42386"),aJF=a(p),aJG=a("26730"),aJH=a("32193"),aJI=a(x),aJJ=a("5463"),aJK=a("37656"),aJL=a(p),aJM=a("24964"),aJN=a("29948"),aJO=a(x),aJP=a(JF),aJQ=a("34934"),aJS=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWP=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJy=[0,a(c),ah,11,ah,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJu=[0,a(C),Bc,5,Bc,28,[0,a(CN),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJv=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJt=[0,a(C),BL,14,BL,44,[0,a(CN),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJp=[0,a(C),Au,14,Au,36,[0,a(ic),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aJn=a(p),aJo=a(p),aJq=[0,a(c),ph,10,ph,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJm=[0,a(c),ph,10,ph,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJh=[0,a(V),LP,7,LP,18,[0,a(pn),[0,a(aK),[0,a(R),0]]]],aJe=a(hk),aJf=a(ry),aJg=a(fz),aJi=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJc=[0,a(cn),Me,7,Me,18,[0,a(pn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aI$=a(nB),aJa=a(BH),aJb=a(mg),aJd=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJj=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI8=[0,a(V),HB,29,HB,64,[0,a(s7),[0,a(aK),[0,a(R),0]]]],aI6=a(hk),aI7=a(fz),aI9=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI4=[0,a(cn),cW,29,cW,64,[0,a(s7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aI2=a(nB),aI3=a(mg),aI5=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI_=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIW=[0,a(c),CC,14,CC,50,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIS=[0,a(V),BZ,14,BZ,50,[0,a("Article 25"),[0,a(aK),[0,a(R),0]]]],aIN=a(F4),aIO=a(sn),aIP=a("0.0172"),aIQ=a(F4),aIR=a(sn),aIH=[0,a(C),oO,14,oO,64,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aID=[0,a(C),x4,14,x4,59,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],aIz=[0,a(f$),no,14,no,36,[0,a(Kk),[0,a(zJ),0]]],aIx=a(Fe),aIy=a(eP),aIt=[0,a(V),Ex,14,Ex,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIs=a("0.416"),aIo=[0,a(V),J0,14,J0,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIn=a(w2),aIj=[0,a(V),zB,14,zB,47,[0,a(ty),[0,a(aK),[0,a(R),0]]]],aIi=a("560085"),aIe=[0,a(V),xD,14,xD,48,[0,a("Article 26"),[0,a(aK),[0,a(R),0]]]],aId=a(AI),aH$=[0,a(V),Ey,15,Ey,49,[0,a("Article 22"),[0,a(aK),[0,a(R),0]]]],aH_=a("2211133"),aH6=[0,a(V),Hu,14,Hu,42,[0,a("Article 21"),[0,a(aK),[0,a(R),0]]]],aH5=a(iI),aH1=[0,a(V),Kz,14,Kz,41,[0,a("Article 20"),[0,a(aK),[0,a(R),0]]]],aH0=a(jX),aH2=[0,a(c),mJ,11,mJ,38,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHZ=[0,a(c),mJ,11,mJ,38,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH3=[0,a(U),[0,a("montant_forfaitaire_d832_10"),0]],aH7=[0,a(c),kD,11,kD,39,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH4=[0,a(c),kD,11,kD,39,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH8=[0,a(U),[0,a("montant_minimal_aide_d832_10"),0]],aIa=[0,a(c),ps,11,ps,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aH9=[0,a(c),ps,11,ps,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIb=[0,a(U),[0,a("coefficient_multiplicateur_d832_11"),0]],aIf=[0,a(c),mQ,11,mQ,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIc=[0,a(c),mQ,11,mQ,45,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIg=[0,a(U),[0,a("coefficient_multiplicateur_d832_18"),0]],aIk=[0,a(c),or,11,or,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIh=[0,a(c),or,11,or,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIl=[0,a(U),[0,a("montant_limite_tranches_d832_15_1"),0]],aIp=[0,a(c),nv,11,nv,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIm=[0,a(c),nv,11,nv,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIq=[0,a(U),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aIu=[0,a(c),m$,11,m$,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIr=[0,a(c),m$,11,m$,44,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIv=[0,a(U),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aIA=[0,a(c),n1,11,n1,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIw=[0,a(c),n1,11,n1,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIB=[0,a(U),[0,a(Ej),0]],aIE=[0,a(c),oF,3,oF,22,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIF=[0,a(U),[0,a(my),0]],aIC=[0,a(c),pD,10,pD,35,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aII=[0,a(c),oF,3,oF,22,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIJ=[0,a(U),[0,a(o5),0]],aIG=[0,a(c),ml,10,ml,40,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIK=[0,a(U),[0,a(gS),[0,a(ks),0]]],aIL=[0,a(U),[0,a(gS),[0,a(ks),0]]],aIT=[0,a(c),l6,11,l6,47,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIM=[0,a(c),l6,11,l6,47,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIU=[0,a(U),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aIX=[0,a(c),nS,3,nS,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aIY=[0,a(U),[0,a(j7),0]],aIV=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aIZ=[0,a(U),[0,a(eW),[0,a(af),0]]],aI0=[0,a(U),[0,a(eW),[0,a(af),0]]],aJk=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aI1=[0,a(c),c_,11,c_,46,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJl=[0,a(U),[0,a("montant_forfaitaire_charges_d832_10"),0]],aJr=[0,a(U),[0,a(ag),0]],aJw=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJs=[0,a(c),hr,11,hr,41,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aJx=[0,a(U),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aWQ=[0,a(U),[0,a(cl),0]],aWT=[0,a(c),ky,11,ky,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWR=[0,a(c),ky,11,ky,33,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aWU=[0,a(U),[0,a(xp),0]],aW0=[0,a(U),[0,a(fN),0]],aXn=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aW1=[0,a(c),iL,10,iL,14,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXo=[0,a(U),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aXr=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXs=[0,a(U),[0,a(ob),0]],aXp=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXv=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXw=[0,a(U),[0,a(nk),0]],aXt=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXz=[0,a(c),i4,3,i4,36,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXA=[0,a(U),[0,a(n8),0]],aXx=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXB=[0,a(U),[0,a(gB),[0,a(ei),0]]],aXC=[0,a(U),[0,a(gB),[0,a(ei),0]]],aXG=[0,a(c),jW,10,jW,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXD=[0,a(c),jW,10,jW,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXH=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aXU=[0,a(U),[0,a(fR),0]],aX2=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aXV=[0,a(c),gx,10,gx,25,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX3=[0,a(U),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aX$=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aX4=[0,a(c),gN,10,gN,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYa=[0,a(U),[0,a(zv),0]],aYg=[0,a(c),oE,10,oE,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYb=[0,a(c),oE,10,oE,17,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYh=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_arrondi"),0]],aYL=[0,a(U),[0,a(aR),0]],aYO=[0,a(c),oa,10,oa,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYM=[0,a(c),oa,10,oa,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYP=[0,a(U),[0,a(L4),0]],aYU=[0,a(c),m9,10,m9,15,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYQ=[0,a(c),m9,10,m9,15,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aYV=[0,a(U),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aZF=[0,a(U),[0,a(a4),0]],aZK=[0,a(c),o9,10,o9,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZG=[0,a(c),o9,10,o9,29,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],aZL=[0,a(U),[0,a(fS),0]],aZY=[0,a(U),[0,a(bD),0]],aHW=[0,a(C),GN,14,GN,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aHN=[0,a(_),[0,a(a4),[0,a(P),0]]],aHO=[0,a(_),[0,a(a4),0]],aHP=[0,a(_),[0,a(a4),[0,a(O),0]]],aHQ=[0,a(_),[0,a(a4),0]],aHR=a(p),aHS=[0,a(_),[0,a(a4),[0,a(P),0]]],aHT=[0,a(_),[0,a(a4),0]],aHU=[0,a(_),[0,a(a4),[0,a(O),0]]],aHV=[0,a(_),[0,a(a4),0]],aHX=[0,a(c),kp,10,kp,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHM=[0,a(c),kp,10,kp,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHJ=[0,a(C),Kr,14,Kr,33,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aHH=a(p),aHI=a(p),aHD=[0,a(C),z4,14,z4,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGX=a(p),aGY=[0,a(_),[0,a(aR),[0,a(P),0]]],aGZ=[0,a(_),[0,a(aR),0]],aG0=[0,a(_),[0,a(aR),[0,a(O),0]]],aG1=[0,a(_),[0,a(aR),0]],aG2=[0,a(af),[0,a(al),[0,a(P),0]]],aG3=[0,a(af),[0,a(al),0]],aG4=[0,a(af),[0,a(al),[0,a(O),0]]],aG5=[0,a(af),[0,a(al),0]],aG6=a(e1),aG7=[0,a(_),[0,a(aR),[0,a(P),0]]],aG8=[0,a(_),[0,a(aR),0]],aG9=[0,a(_),[0,a(aR),[0,a(O),0]]],aG_=[0,a(_),[0,a(aR),0]],aG$=[0,a(af),[0,a(al),[0,a(P),0]]],aHa=[0,a(af),[0,a(al),0]],aHb=[0,a(af),[0,a(al),[0,a(O),0]]],aHc=[0,a(af),[0,a(al),0]],aHd=[0,a(_),[0,a(aR),[0,a(P),0]]],aHe=[0,a(_),[0,a(aR),0]],aHf=[0,a(_),[0,a(aR),[0,a(O),0]]],aHg=[0,a(_),[0,a(aR),0]],aHh=[0,a(_),[0,a(aR),[0,a(P),0]]],aHi=[0,a(_),[0,a(aR),0]],aHj=[0,a(_),[0,a(aR),[0,a(O),0]]],aHk=[0,a(_),[0,a(aR),0]],aHl=[0,a(af),[0,a(al),[0,a(P),0]]],aHm=[0,a(af),[0,a(al),0]],aHn=[0,a(af),[0,a(al),[0,a(O),0]]],aHo=[0,a(af),[0,a(al),0]],aHp=a(e1),aHq=[0,a(_),[0,a(aR),[0,a(P),0]]],aHr=[0,a(_),[0,a(aR),0]],aHs=[0,a(_),[0,a(aR),[0,a(O),0]]],aHt=[0,a(_),[0,a(aR),0]],aHu=[0,a(af),[0,a(al),[0,a(P),0]]],aHv=[0,a(af),[0,a(al),0]],aHw=[0,a(af),[0,a(al),[0,a(O),0]]],aHx=[0,a(af),[0,a(al),0]],aHy=[0,a(_),[0,a(aR),[0,a(P),0]]],aHz=[0,a(_),[0,a(aR),0]],aHA=[0,a(_),[0,a(aR),[0,a(O),0]]],aHB=[0,a(_),[0,a(aR),0]],aHC=a(p),aHE=[0,a(c),pf,10,pf,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGW=[0,a(c),pf,10,pf,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGS=[0,a(C),Hh,5,Hh,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGQ=a(nw),aGR=a(nw),aGT=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGP=[0,a(C),Gj,14,Gj,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGN=a(ip),aGO=a(ip),aGJ=[0,a(C),AP,14,AP,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGj=a(p),aGk=[0,a(_),[0,a(ag),[0,a(P),0]]],aGl=[0,a(_),[0,a(ag),0]],aGm=[0,a(_),[0,a(ag),[0,a(O),0]]],aGn=[0,a(_),[0,a(ag),0]],aGo=[0,a(_),[0,a(fL),[0,a(P),0]]],aGp=[0,a(_),[0,a(fL),0]],aGq=[0,a(_),[0,a(fL),[0,a(O),0]]],aGr=[0,a(_),[0,a(fL),0]],aGs=[0,a(_),[0,a(ag),[0,a(P),0]]],aGt=[0,a(_),[0,a(ag),0]],aGu=[0,a(_),[0,a(ag),[0,a(O),0]]],aGv=[0,a(_),[0,a(ag),0]],aGw=[0,a(_),[0,a(ag),[0,a(P),0]]],aGx=[0,a(_),[0,a(ag),0]],aGy=[0,a(_),[0,a(ag),[0,a(O),0]]],aGz=[0,a(_),[0,a(ag),0]],aGA=[0,a(_),[0,a(fL),[0,a(P),0]]],aGB=[0,a(_),[0,a(fL),0]],aGC=[0,a(_),[0,a(fL),[0,a(O),0]]],aGD=[0,a(_),[0,a(fL),0]],aGE=[0,a(_),[0,a(ag),[0,a(P),0]]],aGF=[0,a(_),[0,a(ag),0]],aGG=[0,a(_),[0,a(ag),[0,a(O),0]]],aGH=[0,a(_),[0,a(ag),0]],aGI=a(p),aGK=[0,a(c),o1,10,o1,20,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGi=[0,a(c),o1,10,o1,20,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGe=[0,a(C),xt,5,xt,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aGb=a(dU),aGc=a(dU),aGd=a(lT),aGf=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGa=[0,a(C),Al,14,Al,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aF9=a(dU),aF_=a(dU),aF$=a(lT),aF5=[0,a(C),FN,14,FN,40,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aF1=[0,a(C),FW,14,FW,55,[0,a(Hp),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFS=[0,a(_),[0,a(fC),[0,a(P),0]]],aFT=[0,a(_),[0,a(fC),0]],aFU=[0,a(_),[0,a(fC),[0,a(O),0]]],aFV=[0,a(_),[0,a(fC),0]],aFW=[0,a(_),[0,a(fC),[0,a(P),0]]],aFX=[0,a(_),[0,a(fC),0]],aFY=[0,a(_),[0,a(fC),[0,a(O),0]]],aFZ=[0,a(_),[0,a(fC),0]],aF0=a(p),aF2=[0,a(c),nH,11,nH,52,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFR=[0,a(c),nH,11,nH,52,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFN=[0,a(C),HY,5,HY,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFM=a(nw),aFO=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFL=[0,a(C),BP,14,BP,49,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFK=a(ip),aFE=[0,a(C),A3,14,A3,70,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFA=[0,a(C),Gz,14,Gz,69,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFw=[0,a(C),z9,14,z9,75,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFs=[0,a(C),Bx,14,Bx,44,[0,a(Hp),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFt=[0,a(c),mx,11,mx,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFr=[0,a(c),mx,11,mx,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFn=[0,a(C),JB,14,JB,36,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFo=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFj=[0,a(C),G$,14,G$,40,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aFf=[0,a(V),Js,14,Js,48,[0,a(xu),[0,a(fA),[0,a(R),0]]]],aFd=a("2142091"),aFe=a("1339340"),aE$=[0,a(V),ID,14,ID,41,[0,a("Article 32"),[0,a(fA),[0,a(R),0]]]],aE9=a(sA),aE_=a("2668"),aE3=[0,a(C),Kw,14,Kw,64,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEZ=[0,a(C),IW,14,IW,59,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEV=[0,a(C),Mj,14,Mj,55,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aER=[0,a(C),xd,14,xd,36,[0,a(eR),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aEP=a(p),aEQ=a(p),aES=[0,a(c),kv,10,kv,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEO=[0,a(c),kv,10,kv,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEK=[0,a(V),Kq,14,Kq,48,[0,a(Mn),[0,a(fA),[0,a(R),0]]]],aEa=a(p),aEb=a("44630"),aEc=a("52321"),aEd=a(x),aEe=a("55788"),aEf=a(ab),aEg=a("59704"),aEh=a(ak),aEi=a("63635"),aEj=a(an),aEk=a("7119"),aEl=a("68637"),aEm=a(p),aEn=a("40814"),aEo=a("47632"),aEp=a(x),aEq=a("50787"),aEr=a(ab),aEs=a("54365"),aEt=a(ak),aEu=a("57929"),aEv=a(an),aEw=a("6434"),aEx=a("61727"),aEy=a(p),aEz=a("38740"),aEA=a("45057"),aEB=a(x),aEC=a("47802"),aED=a(ab),aEE=a("50957"),aEF=a(ak),aEG=a("54110"),aEH=a(an),aEI=a("5971"),aEJ=a("57657"),aEL=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aD_=[0,a(cn),yb,14,yb,48,[0,a(Mn),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aDA=a(p),aDB=a("44443"),aDC=a("52101"),aDD=a(x),aDE=a("55555"),aDF=a(ab),aDG=a("59454"),aDH=a(ak),aDI=a("63369"),aDJ=a(an),aDK=a("7089"),aDL=a("68350"),aDM=a(p),aDN=a("40643"),aDO=a("47433"),aDP=a(x),aDQ=a("50575"),aDR=a(ab),aDS=a("54138"),aDT=a(ak),aDU=a("57687"),aDV=a(an),aDW=a("6407"),aDX=a("61469"),aDY=a(p),aDZ=a("38578"),aD0=a("44869"),aD1=a(x),aD2=a("47602"),aD3=a(ab),aD4=a("50744"),aD5=a(ak),aD6=a("53884"),aD7=a(an),aD8=a("5946"),aD9=a("57416"),aD$=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDu=[0,a(c),Dp,14,Dp,50,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDp=[0,a(C),yZ,14,yZ,35,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aDq=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDl=[0,a(V),zF,14,zF,42,[0,a("Article 29"),[0,a(fA),[0,a(R),0]]]],aDk=a(iI),aDg=[0,a(V),y7,14,y7,41,[0,a("Article 28"),[0,a(fA),[0,a(R),0]]]],aDf=a(jX),aDb=[0,a(V),Gd,14,Gd,35,[0,a(xu),[0,a(fA),[0,a(R),0]]]],aDa=a("121726"),aDc=[0,a(c),nM,10,nM,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aC$=[0,a(c),nM,10,nM,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDd=[0,a(_),[0,a("coefficient_r_d832_25"),0]],aDh=[0,a(c),nh,11,nh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDe=[0,a(c),nh,11,nh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDi=[0,a(_),[0,a("montant_forfaitaire_d832_24"),0]],aDm=[0,a(c),m7,11,m7,39,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDj=[0,a(c),m7,11,m7,39,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDn=[0,a(_),[0,a("montant_minimal_aide_d823_24"),0]],aDr=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDo=[0,a(c),ih,12,ih,33,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDs=[0,a(_),[0,a("condition_2_du_832_25"),0]],aDv=[0,a(c),Cq,3,Cq,25,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDw=[0,a(_),[0,a(j7),0]],aDt=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aDx=[0,a(_),[0,a(eW),[0,a(af),0]]],aDy=[0,a(_),[0,a(eW),[0,a(af),0]]],aEM=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aDz=[0,a(c),gF,10,gF,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEN=[0,a(_),[0,a("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),0]],aET=[0,a(_),[0,a(ag),0]],aEW=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aEX=[0,a(_),[0,a(Je),0]],aEU=[0,a(c),nX,10,nX,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE0=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE1=[0,a(_),[0,a(my),0]],aEY=[0,a(c),mO,10,mO,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE4=[0,a(c),iq,3,iq,22,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE5=[0,a(_),[0,a(o5),0]],aE2=[0,a(c),n5,10,n5,40,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE6=[0,a(_),[0,a(gS),[0,a(j5),0]]],aE7=[0,a(_),[0,a(gS),[0,a(j5),0]]],aFa=[0,a(c),pv,11,pv,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aE8=[0,a(c),pv,11,pv,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFb=[0,a(_),[0,a("montant_forfaitaire_d832_27"),0]],aFg=[0,a(c),n3,10,n3,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFc=[0,a(c),n3,10,n3,44,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFh=[0,a(_),[0,a("coefficient_multiplicateur_d832_25"),0]],aFk=[0,a(c),oB,10,oB,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFi=[0,a(c),oB,10,oB,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFl=[0,a(_),[0,a("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"),0]],aFp=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFm=[0,a(c),iu,19,iu,41,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFq=[0,a(_),[0,a(KW),0]],aFu=[0,a(_),[0,a(fC),0]],aFx=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFy=[0,a(_),[0,a(ob),0]],aFv=[0,a(c),fI,10,fI,37,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFB=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFC=[0,a(_),[0,a(nk),0]],aFz=[0,a(c),gy,10,gy,31,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFF=[0,a(c),ij,3,ij,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFG=[0,a(_),[0,a(n8),0]],aFD=[0,a(c),go,10,go,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFH=[0,a(_),[0,a(gB),[0,a(ei),0]]],aFI=[0,a(_),[0,a(gB),[0,a(ei),0]]],aFP=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFJ=[0,a(c),iW,10,iW,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aFQ=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],aF3=[0,a(_),[0,a(fL),0]],aF6=[0,a(c),nZ,10,nZ,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF4=[0,a(c),nZ,10,nZ,36,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF7=[0,a(_),[0,a("\xc3\xa9quivalence_loyer_minimale"),0]],aGg=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aF8=[0,a(c),iE,10,iE,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGh=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_arrondi"),0]],aGL=[0,a(_),[0,a(aR),0]],aGU=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGM=[0,a(c),iz,10,iz,15,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aGV=[0,a(_),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],aHF=[0,a(_),[0,a(a4),0]],aHK=[0,a(c),o0,10,o0,29,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHG=[0,a(c),o0,10,o0,29,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],aHL=[0,a(_),[0,a(fS),0]],aHY=[0,a(_),[0,a(bD),0]],aC1=[0,a(C),r2,14,r2,33,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCZ=a(p),aC0=a(p),aCV=[0,a(C),gl,14,gl,39,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCR=[0,a(C),GG,14,GG,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCI=[0,a(aj),[0,a(fH),[0,a(P),0]]],aCJ=[0,a(aj),[0,a(fH),0]],aCK=[0,a(aj),[0,a(fH),[0,a(O),0]]],aCL=[0,a(aj),[0,a(fH),0]],aCM=a(p),aCN=[0,a(aj),[0,a(fH),[0,a(P),0]]],aCO=[0,a(aj),[0,a(fH),0]],aCP=[0,a(aj),[0,a(fH),[0,a(O),0]]],aCQ=[0,a(aj),[0,a(fH),0]],aCS=[0,a(c),l1,10,l1,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCH=[0,a(c),l1,10,l1,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCE=[0,a(C),yE,14,yE,42,[0,a(th),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aCA=[0,a(aT),kr,14,kr,36,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aCq=a(p),aCr=[0,a(aj),[0,a(a4),[0,a(P),0]]],aCs=[0,a(aj),[0,a(a4),0]],aCt=[0,a(aj),[0,a(a4),[0,a(O),0]]],aCu=[0,a(aj),[0,a(a4),0]],aCv=[0,a(aj),[0,a(a4),[0,a(P),0]]],aCw=[0,a(aj),[0,a(a4),0]],aCx=[0,a(aj),[0,a(a4),[0,a(O),0]]],aCy=[0,a(aj),[0,a(a4),0]],aCz=a(p),aCB=[0,a(c),ol,10,ol,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCp=[0,a(c),ol,10,ol,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCk=[0,a(cn),CI,14,CI,33,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aCi=a(l5),aCj=a(l5),aCl=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCh=[0,a(V),h_,14,h_,33,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aCf=a(l5),aCg=a(l5),aCm=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCb=[0,a(C),iU,14,iU,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aBv=a(p),aBw=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBx=[0,a(aj),[0,a(ag),0]],aBy=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBz=[0,a(aj),[0,a(ag),0]],aBA=[0,a(af),[0,a(al),[0,a(P),0]]],aBB=[0,a(af),[0,a(al),0]],aBC=[0,a(af),[0,a(al),[0,a(O),0]]],aBD=[0,a(af),[0,a(al),0]],aBE=a(e1),aBF=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBG=[0,a(aj),[0,a(ag),0]],aBH=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBI=[0,a(aj),[0,a(ag),0]],aBJ=[0,a(af),[0,a(al),[0,a(P),0]]],aBK=[0,a(af),[0,a(al),0]],aBL=[0,a(af),[0,a(al),[0,a(O),0]]],aBM=[0,a(af),[0,a(al),0]],aBN=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBO=[0,a(aj),[0,a(ag),0]],aBP=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBQ=[0,a(aj),[0,a(ag),0]],aBR=[0,a(aj),[0,a(ag),[0,a(P),0]]],aBS=[0,a(aj),[0,a(ag),0]],aBT=[0,a(aj),[0,a(ag),[0,a(O),0]]],aBU=[0,a(aj),[0,a(ag),0]],aBV=[0,a(af),[0,a(al),[0,a(P),0]]],aBW=[0,a(af),[0,a(al),0]],aBX=[0,a(af),[0,a(al),[0,a(O),0]]],aBY=[0,a(af),[0,a(al),0]],aBZ=a(e1),aB0=[0,a(aj),[0,a(ag),[0,a(P),0]]],aB1=[0,a(aj),[0,a(ag),0]],aB2=[0,a(aj),[0,a(ag),[0,a(O),0]]],aB3=[0,a(aj),[0,a(ag),0]],aB4=[0,a(af),[0,a(al),[0,a(P),0]]],aB5=[0,a(af),[0,a(al),0]],aB6=[0,a(af),[0,a(al),[0,a(O),0]]],aB7=[0,a(af),[0,a(al),0]],aB8=[0,a(aj),[0,a(ag),[0,a(P),0]]],aB9=[0,a(aj),[0,a(ag),0]],aB_=[0,a(aj),[0,a(ag),[0,a(O),0]]],aB$=[0,a(aj),[0,a(ag),0]],aCa=a(p),aCc=[0,a(c),nf,10,nf,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBu=[0,a(c),nf,10,nf,40,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBp=[0,a(cn),nz,14,nz,33,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aBd=a(nO),aBe=a(cw),aBf=a(nO),aBg=a(fF),aBh=a(hU),aBi=a(hU),aBj=a(fF),aBk=a(fF),aBl=a(Ds),aBm=a(xF),aBn=a(hU),aBo=a(cw),aBq=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBc=[0,a(V),n7,14,n7,33,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aA2=a(nO),aA3=a(cw),aA4=a(nO),aA5=a(fF),aA6=a(hU),aA7=a(hU),aA8=a(fF),aA9=a(fF),aA_=a(Ds),aA$=a(xF),aBa=a(hU),aBb=a(cw),aBr=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAY=[0,a(C),G1,14,G1,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAO=a(p),aAP=[0,a(aj),[0,a(fK),[0,a(P),0]]],aAQ=[0,a(aj),[0,a(fK),0]],aAR=[0,a(aj),[0,a(fK),[0,a(O),0]]],aAS=[0,a(aj),[0,a(fK),0]],aAT=[0,a(aj),[0,a(fK),[0,a(P),0]]],aAU=[0,a(aj),[0,a(fK),0]],aAV=[0,a(aj),[0,a(fK),[0,a(O),0]]],aAW=[0,a(aj),[0,a(fK),0]],aAX=a(p),aAZ=[0,a(c),mN,10,mN,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAN=[0,a(c),mN,10,mN,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAI=[0,a(cn),dC,14,dC,28,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aAG=a(dU),aAH=a(dU),aAJ=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAF=[0,a(V),cd,14,cd,28,[0,a(d7),[0,a(b9),[0,a(R),0]]]],aAD=a(dU),aAE=a(dU),aAK=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAy=[0,a(V),xH,14,xH,36,[0,a(Ee),[0,a(b9),[0,a(R),0]]]],aAu=a(Ki),aAv=a(mX),aAw=a(mX),aAx=a(Ki),aAz=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAs=[0,a(cn),j2,14,j2,36,[0,a(Ee),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],aAo=a(Le),aAp=a(mX),aAq=a(mX),aAr=a(Le),aAt=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAj=[0,a(C),DX,5,DX,50,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAk=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAi=[0,a(C),IZ,14,IZ,36,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aAh=a(p),aAl=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAg=[0,a(c),i1,10,i1,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAd=[0,a(C),HE,14,HE,28,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],az$=[0,a(V),tv,14,tv,42,[0,a(JG),[0,a(b9),[0,a(R),0]]]],az8=a("3.4"),az9=a(h6),az_=a(h6),az4=[0,a(V),on,14,on,41,[0,a(JG),[0,a(b9),[0,a(R),0]]]],az1=a("4."),az2=a(zE),az3=a(zE),azV=[0,a(V),e7,29,e7,64,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azS=a(hk),azT=a(ry),azU=a(fz),azW=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azQ=[0,a(cn),mI,29,mI,64,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],azN=a(nB),azO=a(BH),azP=a(mg),azR=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azX=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azK=[0,a(V),Lf,29,Lf,64,[0,a(Lx),[0,a(b9),[0,a(R),0]]]],azI=a(hk),azJ=a(fz),azL=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azG=[0,a(cn),pN,29,pN,64,[0,a(Lx),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],azE=a(nB),azF=a(mg),azH=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azM=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azx=a(p),azy=[0,a(V),sd,5,535,34,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azu=a(KP),azv=a(G4),azw=a(xY),azz=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azr=a(p),azs=[0,a(V),543,5,eC,34,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azo=a("26962"),azp=a("23848"),azq=a("22136"),azt=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azl=a(x),azm=[0,a(V),Ga,5,Ga,35,[0,a(gq),[0,a(b9),[0,a(R),0]]]],azc=a(x),azd=a("4421"),aze=a("30473"),azf=a(x),azg=a("3906"),azh=a("26835"),azi=a(x),azj=a("3557"),azk=a("24821"),azn=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ay$=a(p),aza=[0,a(cn),350,5,fM,34,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ay8=a(Cm),ay9=a(xv),ay_=a(Kt),azb=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ay5=a(p),ay6=[0,a(cn),hh,5,360,34,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ay2=a("26849"),ay3=a("23748"),ay4=a("22044"),ay7=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayZ=a(x),ay0=[0,a(cn),z0,5,z0,35,[0,a(gq),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayQ=a(x),ayR=a("4403"),ayS=a("30345"),ayT=a(x),ayU=a("3890"),ayV=a("26723"),ayW=a(x),ayX=a("3542"),ayY=a("24717"),ay1=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azA=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayM=[0,a(V),KS,5,KS,61,[0,a(oJ),[0,a(b9),[0,a(R),0]]]],ayJ=a(KP),ayK=a(G4),ayL=a(xY),ayN=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayH=[0,a(cn),cH,5,cH,61,[0,a(oJ),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayE=a(Cm),ayF=a(xv),ayG=a(Kt),ayI=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayO=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayB=[0,a(V),hY,14,hY,37,[0,a(oJ),[0,a(b9),[0,a(R),0]]]],ayy=a("26826"),ayz=a("23380"),ayA=a("21913"),ayC=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayw=[0,a(cn),ee,14,ee,37,[0,a(oJ),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ayt=a(Mw),ayu=a("23282"),ayv=a("21821"),ayx=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayD=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayP=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayp=a(p),ayq=[0,a(V),97,5,98,34,[0,a(dA),[0,a(b9),[0,a(R),0]]]],aym=a("29807"),ayn=a(LF),ayo=a("24348"),ayr=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayj=a(p),ayk=[0,a(V),bc,5,dV,34,[0,a(dA),[0,a(b9),[0,a(R),0]]]],ayg=a("35949"),ayh=a(rT),ayi=a("29515"),ayl=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ayd=a(x),aye=[0,a(V),bt,5,bt,35,[0,a(dA),[0,a(b9),[0,a(R),0]]]],ax6=a(x),ax7=a("5895"),ax8=a("40630"),ax9=a(x),ax_=a(BX),ax$=a(Ln),aya=a(x),ayb=a("4743"),ayc=a("33094"),ayf=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ax3=a(p),ax4=[0,a(cn),37,5,38,34,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],ax0=a("29682"),ax1=a("25859"),ax2=a("24246"),ax5=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axX=a(p),axY=[0,a(cn),47,5,48,34,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axU=a("35799"),axV=a(Ba),axW=a("29392"),axZ=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axR=a(x),axS=[0,a(cn),57,5,57,35,[0,a(dA),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axI=a(x),axJ=a("5870"),axK=a("40460"),axL=a(x),axM=a(FT),axN=a(IE),axO=a(x),axP=a("4723"),axQ=a(Ht),axT=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],ays=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axE=[0,a(V),nz,14,nz,42,[0,a("Article 12"),[0,a(b9),[0,a(R),0]]]],axB=a(p),axC=a(iI),axD=a(iI),axw=[0,a(V),i0,14,i0,29,[0,a(d7),[0,a(b9),[0,a(R),0]]]],axq=a(p),axr=a(LF),axs=a(rT),axt=a(x),axu=a(BX),axv=a(Ln),axx=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axo=[0,a(cn),EL,14,EL,29,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],axi=a(p),axj=a("25869"),axk=a(Ba),axl=a(x),axm=a(FT),axn=a(IE),axp=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axd=[0,a(V),xQ,14,xQ,44,[0,a(yK),[0,a(b9),[0,a(R),0]]]],awX=a(p),awY=a("468300"),awZ=a("670900"),aw0=a(x),aw1=a("800200"),aw2=a(ab),aw3=a("819200"),aw4=a(ak),aw5=a("849500"),aw6=a(an),aw7=a("881100"),aw8=a(T),aw9=a("912400"),aw_=a(gQ),aw$=a(A1),axa=a(gQ),axb=a("31100"),axc=a(A1),axe=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awV=[0,a(cn),eY,14,eY,44,[0,a(yK),[0,a(R),[0,a("Articles valables du 1er janvier 2020 au 1er janvier 2022"),[0,a(cp),0]]]]],awD=a(p),awE=a("458800"),awF=a("657200"),awG=a(x),awH=a("783900"),awI=a(ab),awJ=a("801500"),awK=a(ak),awL=a("832200"),awM=a(an),awN=a("863100"),awO=a(T),awP=a("893800"),awQ=a(gQ),awR=a(E9),awS=a(gQ),awT=a(sj),awU=a(E9),awW=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awx=[0,a(cn),Gy,14,Gy,40,[0,a(d7),[0,a(R),[0,a(cy),[0,a(cp),0]]]]],awf=a(p),awg=a(IM),awh=a(AF),awi=a(x),awj=a(Fh),awk=a(ab),awl=a(HO),awm=a(ak),awn=a(K5),awo=a(an),awp=a(E8),awq=a(T),awr=a(H9),aws=a(gQ),awt=a(mf),awu=a(gQ),awv=a(Ad),aww=a(mf),awy=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awe=[0,a(V),rU,14,rU,40,[0,a(d7),[0,a(b9),[0,a(R),0]]]],avY=a(p),avZ=a(IM),av0=a(AF),av1=a(x),av2=a(Fh),av3=a(ab),av4=a(HO),av5=a(ak),av6=a(K5),av7=a(an),av8=a(E8),av9=a(T),av_=a(H9),av$=a(gQ),awa=a(mf),awb=a(gQ),awc=a(Ad),awd=a(mf),awz=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avS=[0,a(c),CM,14,CM,50,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avO=[0,a(V),r$,14,r$,41,[0,a("Article 11"),[0,a(b9),[0,a(R),0]]]],avN=a(jX),avJ=[0,a(C),x0,14,x0,29,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],avI=a(Gv),avK=[0,a(c),nj,11,nj,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avH=[0,a(c),nj,11,nj,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avL=[0,a(aj),[0,a("fraction_l832_3"),0]],avP=[0,a(c),l3,11,l3,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avM=[0,a(c),l3,11,l3,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avQ=[0,a(aj),[0,a("montant_forfaitaire_d823_16"),0]],avT=[0,a(c),K0,3,K0,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avU=[0,a(aj),[0,a(j7),0]],avR=[0,a(c),eC,10,eC,23,[0,a(dQ),[0,a(j),[0,a(d),0]]]],avV=[0,a(aj),[0,a(eW),[0,a(af),0]]],avW=[0,a(aj),[0,a(eW),[0,a(af),0]]],awA=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],avX=[0,a(c),gm,10,gm,36,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awB=[0,a(aj),[0,a("taux_composition_familiale"),0]],axf=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],awC=[0,a(c),fO,11,fO,41,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axg=[0,a(aj),[0,a("abattement_forfaitaire_d823_17"),0]],axy=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axh=[0,a(c),gG,11,gG,26,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axz=[0,a(aj),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],axF=[0,a(c),ow,11,ow,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axA=[0,a(c),ow,11,ow,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axG=[0,a(aj),[0,a("montant_minimal_aide_d823_16"),0]],azB=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],axH=[0,a(c),a3,10,a3,33,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azC=[0,a(aj),[0,a("plafond_loyer_d823_16_2"),0]],azY=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azD=[0,a(c),da,10,da,45,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],azZ=[0,a(aj),[0,a("montant_forfaitaire_charges_d823_16"),0]],az5=[0,a(c),nt,11,nt,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az0=[0,a(c),nt,11,nt,38,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az6=[0,a(aj),[0,a("plafond_suppression_d823_16"),0]],aAa=[0,a(c),mV,11,mV,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],az7=[0,a(c),mV,11,mV,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAb=[0,a(aj),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],aAe=[0,a(c),mL,11,mL,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAc=[0,a(c),mL,11,mL,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAf=[0,a(aj),[0,a("loyer_\xc3\xa9ligible"),0]],aAm=[0,a(aj),[0,a(fK),0]],aAA=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAn=[0,a(c),ge,10,ge,32,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAB=[0,a(aj),[0,a("participation_minimale"),0]],aAL=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAC=[0,a(c),e7,11,e7,25,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aAM=[0,a(aj),[0,a("rapport_loyers"),0]],aA0=[0,a(aj),[0,a(ag),0]],aBs=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aA1=[0,a(c),gA,10,gA,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aBt=[0,a(aj),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],aCd=[0,a(aj),[0,a(a4),0]],aCn=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCe=[0,a(c),eY,10,eY,17,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCo=[0,a(aj),[0,a("taux_loyer_\xc3\xa9ligible_arrondi"),0]],aCC=[0,a(aj),[0,a(fH),0]],aCF=[0,a(c),mu,11,mu,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCD=[0,a(c),mu,11,mu,39,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCG=[0,a(aj),[0,a("taux_prise_compte_ressources"),0]],aCT=[0,a(aj),[0,a(bD),0]],aCW=[0,a(c),oh,10,oh,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCU=[0,a(c),oh,10,oh,35,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCX=[0,a(aj),[0,a("participation_personnelle"),0]],aC2=[0,a(c),m5,10,m5,29,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aCY=[0,a(c),m5,10,m5,29,[0,a(N),[0,a(o),[0,a(j),[0,a(d),0]]]]],aC3=[0,a(aj),[0,a(fS),0]],aC5=a(h6),aC4=[0,a(C),mk,13,mk,76,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aC_=[0,a(C),mk,13,mk,76,[0,a(e9),[0,a(dT),[0,a(ad),[0,a(aa),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],aC7=a(nw),aC8=a(Gv),aC6=[0,a(aT),nx,13,nx,63,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],aC9=[0,a(aT),nx,13,nx,63,[0,a(rL),[0,a(bG),[0,a(av),[0,a(w),[0,a(am),[0,a(v),0]]]]]]],avv=[6,0],avx=[0,0],avy=[1,0],avz=[2,0],avA=[3,0],avB=[4,0],avC=[5,0],avD=[7,0],avw=[0,a(b3),29,5,38,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],avu=a(xW),avE=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avr=[8,0],avs=[0,a(b3),47,5,49,6,[0,a(cQ),[0,a(lS),[0,a(aZ),0]]]],avq=a(GH),avt=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avg=[6,0],avi=[0,0],avj=[1,0],avk=[2,0],avl=[3,0],avm=[4,0],avn=[5,0],avo=[7,0],avh=[0,a(b3),68,5,77,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],avf=a(IG),avp=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avc=[8,0],avd=[0,a(b3),86,5,88,6,[0,a(cQ),[0,a(oR),[0,a(aZ),0]]]],avb=a(EU),ave=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],au3=[6,0],au5=[0,0],au6=[1,0],au7=[2,0],au8=[3,0],au9=[4,0],au_=[5,0],au$=[7,0],au4=[0,a(b3),bc,5,hp,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],au2=a(Bi),ava=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auZ=[8,0],au0=[0,a(b3),eX,5,cu,6,[0,a(cQ),[0,a(nQ),[0,a(aZ),0]]]],auY=a(Li),au1=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auO=[6,0],auQ=[0,0],auR=[1,0],auS=[2,0],auT=[3,0],auU=[4,0],auV=[5,0],auW=[7,0],auP=[0,a(b3),gU,5,FS,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],auN=a(By),auX=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auK=[8,0],auL=[0,a(b3),sH,5,j6,6,[0,a(cQ),[0,a(oq),[0,a(aZ),0]]]],auJ=a(x5),auM=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auz=[6,0],auB=[0,0],auC=[1,0],auD=[2,0],auE=[3,0],auF=[4,0],auG=[5,0],auH=[7,0],auA=[0,a(b3),mt,5,m6,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],auy=a(HZ),auI=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],auv=[8,0],auw=[0,a(b3),l9,5,zj,6,[0,a(mD),[0,a(me),[0,a(aZ),0]]]],auu=a(DH),aux=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avF=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],aut=[0,a(b3),11,10,11,22,[0,a(B),[0,a(aZ),0]]],avG=[0,a(is),[0,a(Ic),0]],aup=[0,a(d9),28,5,29,34,[0,a(B2),[0,a(b7),0]]],auo=a(yG),auq=[0,a(d9),6,10,6,17,[0,a(b7),0]],aum=[0,a(d9),48,5,49,34,[0,a(AL),[0,a(b7),0]]],aul=a(yn),aun=[0,a(d9),6,10,6,17,[0,a(b7),0]],auj=[0,a(d9),64,5,65,34,[0,a(JI),[0,a(b7),0]]],aui=a(Jz),auk=[0,a(d9),6,10,6,17,[0,a(b7),0]],aug=[0,a(d9),82,5,83,34,[0,a(x2),[0,a(b7),0]]],auf=a(Jt),auh=[0,a(d9),6,10,6,17,[0,a(b7),0]],aur=[0,a(d9),6,10,6,17,[0,a(b7),0]],aue=[0,a(d9),6,10,6,17,[0,a(b7),0]],aus=[0,a(gP),[0,a(al),0]],at$=[0,a(C),w5,14,w5,28,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],at_=a(p),aua=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at9=[0,a(C),HX,14,HX,28,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],at8=a(p),aub=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at2=[0,a(C),Dn,20,Dn,51,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atZ=a(p),at0=a(p),at1=a(kA),at3=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atY=[0,a(C),Et,20,Et,55,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atV=a(p),atW=a(p),atX=a(kA),at4=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atS=[0,a(C),Dz,7,Dz,51,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atO=a(J8),atP=a(eP),atQ=a(kA),atR=a(p),atT=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atN=[0,a(C),IV,7,IV,42,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atJ=a(J8),atK=a(eP),atL=a(kA),atM=a(p),atU=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atE=[0,a(C),xo,14,xo,36,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atF=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atC=[0,a(C),AN,14,AN,36,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atB=a(cY),atD=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atv=[0,a(C),JS,14,JS,36,[0,a(kI),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atw=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atu=[0,a(C),KC,14,KC,36,[0,a(kB),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atx=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atq=[0,a(C),DQ,14,DQ,36,[0,a("Article R824-3"),[0,a(ey),[0,a(eB),[0,a(Q),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],atl=[0,0],atm=[1,0],atn=[1,0],ato=[0,0],atp=[0,0],atr=[0,a(c),h5,11,h5,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atk=[0,a(c),h5,11,h5,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],ats=[0,a(kz),[0,a("mode_occupation_impay\xc3\xa9"),0]],aty=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],att=[0,a(c),gg,11,gg,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atz=[0,a(kz),[0,a("d\xc3\xa9pense_logement_brute"),0]],atG=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atA=[0,a(c),gw,11,gw,33,[0,a(cz),[0,a(t),[0,a(d),0]]]],atH=[0,a(kz),[0,a("d\xc3\xa9pense_logement_nette"),0]],at5=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],atI=[0,a(c),el,11,el,43,[0,a(cz),[0,a(t),[0,a(d),0]]]],at6=[0,a(kz),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],auc=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],at7=[0,a(c),gT,10,gT,24,[0,a(cz),[0,a(t),[0,a(d),0]]]],aud=[0,a(kz),[0,a("montant_impay\xc3\xa9"),0]],atf=[0,a(dX),o6,5,o6,43,[0,a(sV),[0,a(rH),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]]]]],atg=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],atd=[0,a(dX),dC,5,dC,42,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],ate=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],atb=[0,a(dX),rx,5,rE,43,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],atc=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as_=a("1952"),as$=[0,a(dX),yk,5,yk,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],ata=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as7=a("1953"),as8=[0,a(dX),mA,5,mA,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],as9=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as4=a("1954"),as5=[0,a(dX),Kv,5,Kv,48,[0,a(j9),[0,a(kt),[0,a(gk),[0,a(gu),[0,a(gR),[0,a(gC),[0,a(kg),[0,a(bd),[0,a(ai),0]]]]]]]]]],as6=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],ath=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],as3=[0,a(c),c6,10,c6,29,[0,a(fy),[0,a(t),[0,a(d),0]]]],ati=[0,a(te),[0,a("\xc3\xa2ge_ouverture_droit"),0]],as0=[0,a(C),EH,14,EH,36,[0,a(hd),[0,a(aJ),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]],asM=a(p),asN=a(Dd),asO=a(xC),asP=a(x),asQ=a(h6),asR=a(ab),asS=a(pm),asT=a(ak),asU=a(rB),asV=a(an),asW=a(iB),asX=a(an),asY=a(jR),asZ=a(iB),as1=[0,a(c),jU,10,jU,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],asL=[0,a(c),jU,10,jU,32,[0,a(z),[0,a(o),[0,a(j),[0,a(d),0]]]]],as2=[0,a(ks),[0,a(xp),0]],asH=[0,a(C),Mk,5,Mk,26,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ast=a(p),asu=a("1.2"),asv=a("1.5"),asw=a(x),asx=a(h6),asy=a(ab),asz=a(pm),asA=a(ak),asB=a(rB),asC=a(an),asD=a(iB),asE=a(an),asF=a(jR),asG=a(iB),asI=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ass=[0,a(C),Dx,14,Dx,36,[0,a(dS),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ase=a(p),asf=a(Dd),asg=a(xC),ash=a(x),asi=a(h6),asj=a(ab),ask=a(pm),asl=a(ak),asm=a(rB),asn=a(an),aso=a(iB),asp=a(an),asq=a(jR),asr=a(iB),asJ=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asd=[0,a(c),ii,10,ii,32,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asK=[0,a(j5),[0,a(KW),0]],ar$=[0,a(C),wI,5,wI,26,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ar_=a(cw),ar8=a(cY),ar9=a(cw),asa=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar7=[0,a(C),y6,14,y6,21,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],ar6=a(cw),ar4=a(cY),ar5=a(cw),ar0=[0,a(C),Hs,14,Hs,50,[0,a(s5),[0,a(bF),[0,a(aV),[0,a(aI),[0,a(av),[0,a(w),[0,a(D),[0,a(v),0]]]]]]]]],arZ=[1,0],arU=[0,a(V),Hq,5,Hq,26,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arF=a("0.328"),arG=a(GU),arH=[1,0],arI=a(xs),arJ=a(CZ),arK=a(GU),arL=a(w2),arM=a(zD),arN=a(CZ),arO=a("0.024"),arP=a(xI),arQ=a(zD),arR=a(cw),arS=a(p),arT=a(xI),arV=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arE=[0,a(V),KM,14,KM,38,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arm=a("0.48"),arn=a(Gu),aro=[1,0],arp=a(tB),arq=a(HG),arr=a(Gu),ars=a("0.264"),art=a(ze),aru=a(HG),arv=a("0.216"),arw=a(K8),arx=a(ze),ary=a("0.104"),arz=a(G_),arA=a(K8),arB=a(Ca),arC=a(p),arD=a(G_),ari=[0,a(V),BG,14,BG,41,[0,a(ss),[0,a(fA),[0,a(R),0]]]],arg=a("7632"),arh=a("4557"),arj=[0,a(c),mh,11,mh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arf=[0,a(c),mh,11,mh,38,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ark=[0,a(ei),[0,a("montant_forfaitaire_d832_26"),0]],arW=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arl=[0,a(c),hZ,11,hZ,35,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arX=[0,a(ei),[0,a("tranches_revenus_d832_26"),0]],ar1=[0,a(c),pk,11,pk,47,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],arY=[0,a(c),pk,11,pk,47,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar2=[0,a(ei),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],asb=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],ar3=[0,a(c),iZ,10,iZ,17,[0,a(G),[0,a(o),[0,a(j),[0,a(d),0]]]]],asc=[0,a(ei),[0,a(al),0]],arb=[0,a(f$),cA,5,cA,35,[0,a(d7),[0,a(sZ),[0,a(tD),0]]]],arc=[0,a(c),oH,10,oH,17,[0,a(dQ),[0,a(j),[0,a(d),0]]]],ara=[0,a(c),oH,10,oH,17,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq9=[0,a(f$),pq,39,pq,69,[0,a(s7),[0,a(sZ),[0,a(tD),0]]]],aq8=a(lT),aq3=[0,a(dX),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(nu),[0,a(am),[0,a(ai),0]]]]]]],aq4=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq2=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq5=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq1=[0,a(c),gn,11,gn,22,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq6=[0,a(af),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],aq_=[0,a(c),oY,11,oY,20,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq7=[0,a(c),oY,11,oY,20,[0,a(dQ),[0,a(j),[0,a(d),0]]]],aq$=[0,a(af),[0,a("taux_crds"),0]],ard=[0,a(af),[0,a(al),0]],are=[0,a(f$),cX,13,cX,24,[0,a(d7),[0,a(sZ),[0,a(tD),0]]]],aqR=a("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"),aqS=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),aqT=a("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"),aqU=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),aqV=a("situation_familiale"),aqW=a("nombre_autres_occupants_logement"),aqX=a("personnes_\xc3\xa0_charge"),aqY=a("logement"),aqZ=a("prestations_re\xc3\xa7ues"),aq0=[0,a("M\xc3\xa9nage"),0],aqF=a("zone"),aqG=a("situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),aqH=a("est_ancien_l831_2"),aqI=a("surface_m_carr\xc3\xa9s"),aqJ=a("logement_decent_l89_462"),aqK=a("usufruit"),aqL=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),aqM=a("propri\xc3\xa9taire"),aqN=a("mode_occupation"),aqO=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),aqP=a("r\xc3\xa9sidence_principale"),aqQ=[0,a("Logement"),0],aqz=a(HH),aqB=a("R\xc3\xa9sidentLogementFoyer"),aqC=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),aqD=a(CF),aqE=a(yL),aqA=[0,a("ModeOccupation"),0],aqv=a(Fc),aqx=a(Cu),aqy=a("InfosAccessionPropri\xc3\xa9t\xc3\xa9"),aqw=[0,a("InformationsCalculAPL"),0],aqp=a("construit_application_loi_1957_12_III"),aqq=a("remplit_conditions_r832_21"),aqr=a("location"),aqs=a("date_conventionnement"),aqt=a("type"),aqu=[0,a(yN),0],aqg=a("changement_logement_d842_4"),aqh=a("logement_meubl\xc3\xa9_d842_2"),aqi=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),aqj=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),aqk=a("colocation"),aql=a("logement_est_chambre"),aqm=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),aqn=a("loyer_principal"),aqo=[0,a("InformationsCalculAPLLocatif"),0],aqd=a(C5),aqf=a(Cn),aqe=[0,a("Personne\xc3\x80Charge"),0],ap3=a("anciennet\xc3\xa9_logement"),ap4=a(JD),ap5=a("situation_r822_11_13_17"),ap6=a("copropri\xc3\xa9t\xc3\xa9"),ap7=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),ap8=a("type_travaux_logement_r842_5"),ap9=a("type_travaux_logement_d832_15"),ap_=a("date_entr\xc3\xa9e_logement"),ap$=a("date_signature_pr\xc3\xaat"),aqa=a("charges_mensuelles_pr\xc3\xaat"),aqb=a("mensualit\xc3\xa9_principale"),aqc=[0,a("InformationsCalculAPLAccessionPropri\xc3\xa9t\xc3\xa9"),0],ap1=a("pr\xc3\xaat"),ap2=[0,a("Propri\xc3\xa9taire"),0],apZ=a("bailleur"),ap0=[0,a(EA),0],apW=a(AT),apY=a(HT),apX=[0,a("ChangementLogementD842_4"),0],apO=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),apP=a("patrimoine"),apQ=a("nationalit\xc3\xa9"),apR=a("contrat_de_travail"),apS=a(I6),apT=a("age_demandeur"),apU=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),apV=[0,a(rw),0],apL=a(kJ),apN=a(pK),apM=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],apB=a("situation_garde_altern\xc3\xa9e"),apC=a(sX),apD=a(sm),apE=a(r8),apF=a(rS),apG=a(sM),apH=a(rQ),apI=a(rG),apJ=a(s6),apK=[0,a(C5),0],aps=a(rG),apt=a(rQ),apu=a(sm),apv=a(sX),apw=a(sM),apx=a(rS),apy=a(r8),apz=a(s6),apA=[0,a("EnfantPrestationsFamiliales"),0],app=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),apq=a("redevance"),apr=[0,a("InformationsCalculAPLLogementFoyer"),0],apm=a(K2),apo=a(zK),apn=[0,a("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"),0],ape=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),apf=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),apg=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aph=a("parent\xc3\xa9"),api=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),apj=a("ressources"),apk=a(I6),apl=[0,a(Cn),0],apa=a(ES),apb=a(E1),apc=a(DO),apd=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],ao7=a(ES),ao8=a(E1),ao9=a(DO),ao_=[0,a("TrancheRevenu"),0],ao3=a(It),ao5=a(Cw),ao4=[0,a("NeufOuAncien"),0],aoZ=a("titulaire_pr\xc3\xaat"),ao0=a("date_signature"),ao1=a(JD),ao2=[0,a("Pr\xc3\xaat"),0],aoT=a("acquisition_aides_\xc3\xa9tat_pr\xc3\xaat_titre_II_ou_livre_III"),aoU=a("construit_am\xc3\xa9lior\xc3\xa9_conditions_l831_1_4"),aoV=a("respecte_convention_titre_II"),aoW=a("respecte_convention_titre_V"),aoX=a("type_bailleur"),aoY=[0,a(xe),0],aoQ=a("ancienne_allocation_logement"),aoR=a("ancien_loyer_principal"),aoS=[0,a("InfosChangementLogementD842_4"),0],aoN=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),aoO=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),aoP=[0,a("Patrimoine"),0],aoK=a("conforme_article_l442_1"),aoL=a("age_personne_sous_location"),aoM=[0,a("PersonneSousLocation"),0],aoB=a(ni),aoD=a(X),aoE=a(rO),aoF=a(oX),aoG=a(CW),aoH=a(iR),aoI=a(BE),aoJ=a(Hw),aoC=[0,a(Er),0],aow=a(j1),aoy=a(jT),aoz=a(JL),aox=[0,a(Ke),0],aoq=a(A2),aos=a(C7),aot=a(hc),aou=a(D$),aov=a(zn),aor=[0,a("PriseEnChargeEnfant"),0],aog=a(n6),aoi=a(nq),aoj=a(l0),aok=a(KF),aol=a(zr),aom=a(pM),aon=a(Kg),aoo=a(mG),aop=a(nC),aoh=[0,a(Jw),0],aod=a(Lz),aof=a(Ar),aoe=[0,a("SituationFamilialeCalculAPL"),0],an_=a("\xc3\x89tudiantLog\xc3\xa9EnChambre"),aoa=a("\xc3\x89tudiantLog\xc3\xa9EnChambreR\xc3\xa9habilit\xc3\xa9e"),aob=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),aoc=a(Lw),an$=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],an5=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),an7=a("R\xc3\xa9sidenceSociale"),an8=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),an9=a(h7),an6=[0,a("TypeLogementFoyer"),0],an1=a(hc),an3=a("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"),an4=a("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"),an2=[0,a(Gt),0],anU=a("C\xc3\xa9libataire"),anW=a("Mari\xc3\xa9s"),anX=a("Pacs\xc3\xa9s"),anY=a(zt),anZ=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),an0=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),anV=[0,a("SituationFamiliale"),0],anQ=a("AidePersonnalis\xc3\xa9eLogement"),anS=a(pG),anT=a(mE),anR=[0,a("TypeAidesPersonnelleLogement"),0],anM=a("Pas\xc3\x89ligible"),anO=a(pG),anP=a(mE),anN=[0,a(b2),0],anJ=a("Impay\xc3\xa9Loyer"),anL=a("Impay\xc3\xa9Pr\xc3\xaat"),anK=[0,a("ModeOccupationImpay\xc3\xa9"),0],anE=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),anG=a("Mensualit\xc3\xa9"),anH=a(LZ),anF=[0,a("D\xc3\xa9penseLogement"),0],anA=a(EA),anC=a("AccessionPropri\xc3\xa9t\xc3\xa9"),anD=a(yN),anB=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],anw=a(zI),any=a(Fz),anz=a(Ho),anx=[0,a("ZoneDHabitation"),0],ant=a("Fran\xc3\xa7aise"),anv=a("\xc3\x89trang\xc3\xa8re"),anu=[0,a("Nationalit\xc3\xa9"),0],anp=a(G7),anr=a("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),ans=a("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"),anq=[0,a("DateDeNaissanceOuMoisDeGrossesse"),0],anl=a(Bb),ann=a(IU),ano=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),anm=[0,a("Parent\xc3\xa9"),0],ani=a("PasDeGardeAltern\xc3\xa9e"),ank=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),anj=[0,a("SituationGardeAltern\xc3\xa9e"),0],anf=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),anh=a(h7),ang=[0,a("ParentOuAutre"),0],anc=a(CT),ane=a(Mb),and=[0,a("TypeContratTravail"),0],am7=a(X),am9=a(rO),am_=a(Kc),am$=a(iR),ana=a("AllocationSoutienEnfantHandicap\xc3\xa9"),anb=a("AllocationAdulteHandicap\xc3\xa9"),am8=[0,a("PrestationRe\xc3\xa7ue"),0],am3=a(K_),am5=a(Fw),am4=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],am0=a(K_),am2=a(Fw),am1=[0,a("LimiteTranche"),0],amX=a(pK),amZ=a(kJ),amY=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],amS=a("ObjectifD\xc3\xa9cenceLogement"),amU=a("Pr\xc3\xa9vuDansListeR321_15"),amV=a(JP),amW=a(np),amT=[0,a("TypeTravauxLogementR842_5"),0],amO=a(yd),amQ=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),amR=a(np),amP=[0,a("TypeTravauxLogementD832_15"),0],amL=a(rw),amN=a(yx),amM=[0,a("TitulairePr\xc3\xaat"),0],amF=a(Bq),amH=a(yt),amI=a(Ie),amJ=a(Aj),amK=a(h7),amG=[0,a("TypePr\xc3\xaat"),0],amC=a(Cr),amE=a("BailleurPriv\xc3\xa9"),amD=[0,a("TypeBailleur"),0],bM_=a(ac),bMK=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bML=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bMI=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bMJ=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bMC=a("AccessionProprieteLocalUsageExclusifHabitation"),bMD=a(HH),bME=a(yL),bMF=a("ResidentLogementFoyer"),bMG=a(CF),bMH=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bMy=a("InfosAccessionPropriete"),bMz=a(Fc),bMA=a(Cu),bMB=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'InformationsCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'InformationsCalculAPL.t'")],bMv=a("AutrePersonneACharge"),bMw=a("EnfantACharge"),bMx=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bMr=a(AT),bMs=a(HT),bMu=[1,0],bMt=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bMn=a(kJ),bMo=a(pK),bMq=[0,0],bMp=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bMj=a(K2),bMk=a(zK),bMm=[0,0],bMl=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bMf=a(Cw),bMg=a(It),bMi=[0,0],bMh=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bL0=a(xg),bL1=a(y1),bL2=a(oX),bL3=a(DE),bL4=a(iR),bL5=a(X),bL6=a(ru),bL7=a(ni),bL9=[0,0],bL_=[2,0],bL$=[1,0],bMa=[5,0],bMb=[6,0],bMc=[3,0],bMd=[7,0],bMe=[4,0],bL8=[0,[11,a(be),[2,0,[11,a(C8),0]]],a(Es)],bLT=a(tt),bLU=a(j1),bLV=a(jT),bLX=[1,0],bLY=[0,0],bLZ=[2,0],bLW=[0,[11,a(be),[2,0,[11,a(yO),0]]],a(FU)],bLI=a(hc),bLJ=a(rW),bLK=a(sF),bLL=a(s4),bLM=a(rK),bLO=[4,0],bLP=[3,0],bLQ=[0,0],bLR=[1,0],bLS=[2,0],bLN=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bLp=a(n6),bLq=a(nq),bLr=a(FP),bLs=a(l0),bLt=a(nC),bLu=a(D5),bLv=a(yf),bLw=a(pM),bLx=a(mG),bLz=[7,0],bLA=[5,0],bLB=[4,0],bLC=[6,0],bLD=[8,0],bLE=[2,0],bLF=[3,0],bLG=[1,0],bLH=[0,0],bLy=[0,[11,a(be),[2,0,[11,a(BC),0]]],a(xX)],bLk=a(Ar),bLl=a(Lz),bLn=[0,0],bLo=[1,0],bLm=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bLb=a(Lw),bLc=a("EtudiantLogeEnChambre"),bLd=a("EtudiantLogeEnChambreRehabilitee"),bLe=a("PersonnesAgeesSelon3DeD842_16"),bLg=[2,0],bLh=[1,0],bLi=[0,0],bLj=[3,0],bLf=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bK4=a(h7),bK5=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bK6=a("LogementPersonnesAgeesOuHandicapees"),bK7=a("ResidenceSociale"),bK9=[1,0],bK_=[0,0],bK$=[2,0],bLa=[3,0],bK8=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bKX=a(hc),bKY=a("ResidenceAlterneeAllocataireUnique"),bKZ=a("ResidenceAlterneeAllocationsPartagee"),bK1=[2,0],bK2=[1,0],bK3=[0,0],bK0=[0,[11,a(be),[2,0,[11,a(Cb),0]]],a(A_)],bKL=a("Celibataire"),bKM=a("CelibataireSepareDeFait"),bKN=a("ConcubinageDontSepareDeFait"),bKO=a(zt),bKP=a("Maries"),bKQ=a("Pacses"),bKS=[2,0],bKT=[3,0],bKU=[5,0],bKV=[4,0],bKW=[0,0],bKR=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bKE=a("AidePersonnaliseeLogement"),bKF=a(pG),bKG=a(mE),bKI=[2,0],bKJ=[1,0],bKK=[0,0],bKH=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bKA=a(LZ),bKB=a("Mensualite"),bKC=a("TotalAnnuelEcheances"),bKD=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bKt=a(xe),bKu=a("Beneficiaire"),bKv=a("EtablissementHabilite"),bKx=[2,0],bKy=[1,0],bKz=[0,0],bKw=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bKp=a(kJ),bKq=a("OuiAvecLoyerOuCharges"),bKs=[1,0],bKr=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bKi=a(zI),bKj=a(Fz),bKk=a(Ho),bKm=[2,0],bKn=[1,0],bKo=[0,0],bKl=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bKd=a("Etrangere"),bKe=a("Francaise"),bKg=[0,0],bKh=[1,0],bKf=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bJ9=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bJ_=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bJ$=a(G7),bKb=[1,0],bKc=[2,0],bKa=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bJ2=a(Bb),bJ3=a("CollateralDeuxiemeTroisiemeDegre"),bJ4=a(IU),bJ6=[1,0],bJ7=[2,0],bJ8=[0,0],bJ5=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],bJY=a("GardeAlterneeCoefficientPriseEnCharge"),bJZ=a("PasDeGardeAlternee"),bJ1=[0,0],bJ0=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],bJU=a(h7),bJV=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),bJX=[1,0],bJW=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],bJP=a(Mb),bJQ=a(CT),bJS=[0,0],bJT=[1,0],bJR=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeContratTravail.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeContratTravail.t'")],bJC=a("AllocationAdulteHandicape"),bJD=a(Kc),bJE=a("AllocationSoutienEnfantHandicape"),bJF=a(iR),bJG=a(X),bJH=a(ru),bJJ=[1,0],bJK=[0,0],bJL=[3,0],bJM=[4,0],bJN=[2,0],bJO=[5,0],bJI=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],bJx=a(kJ),bJy=a(pK),bJA=[0,0],bJB=[1,0],bJz=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],bJo=a(JP),bJp=a("ObjectifDecenceLogement"),bJq=a(np),bJr=a("PrevuDansListeR321_15"),bJt=[1,0],bJu=[3,0],bJv=[0,0],bJw=[2,0],bJs=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],bJh=a(np),bJi=a(yd),bJj=a("TravauxSurLogementDejaAcquisD832_15_2"),bJl=[1,0],bJm=[0,0],bJn=[2,0],bJk=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],bJc=a(rw),bJd=a(yx),bJf=[1,0],bJg=[0,0],bJe=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bI3=a(h7),bI4=a(Bq),bI5=a(Ie),bI6=a(yt),bI7=a(Aj),bI9=[3,0],bI_=[1,0],bI$=[2,0],bJa=[0,0],bJb=[4,0],bI8=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bIY=a("BailleurPrive"),bIZ=a(Cr),bI1=[0,0],bI2=[1,0],bI0=[0,[11,a(be),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bIW=[0,a(LY),a(zW),a(Ls),a(IP),a(yl),a(nK),a(gz),a(AZ),a(zC),a(Fd),a(CK),a(He),a(A6),a(Hm),a(D4),a(Km),a(Jg),a(HQ),a(EC),a(Jy),a(E5),a(Gi),a(IQ),a(wV)],bIX=[0,a(gz),a(IP),a(Km),a(Jg),a(HQ),a(yl),a(E5),a(Ls),a(Fd),a(AZ),a(EC),a(A6),a(CK),a(Hm),a(IQ),a(zW),a(He),a(Jy),a(wV),a(Gi),a(zC),a(LY),a(D4),a(nK)],bNx=a("AidesLogementLib"),bNz=a(ac);function
+bY(a){if(typeof
+a==="number")return 0;else
+switch(a[0]){case
+0:return[0,bY(a[1])];case
+1:return[1,bY(a[1])];case
+2:return[2,bY(a[1])];case
+3:return[3,bY(a[1])];case
+4:return[4,bY(a[1])];case
+5:return[5,bY(a[1])];case
+6:return[6,bY(a[1])];case
+7:return[7,bY(a[1])];case
+8:var
+c=a[1];return[8,c,bY(a[2])];case
+9:var
+b=a[1];return[9,b,b,bY(a[3])];case
+10:return[10,bY(a[1])];case
+11:return[11,bY(a[1])];case
+12:return[12,bY(a[1])];case
+13:return[13,bY(a[1])];default:return[14,bY(a[1])]}}function
+c3(a,b){if(typeof
+a==="number")return b;else
+switch(a[0]){case
+0:return[0,c3(a[1],b)];case
+1:return[1,c3(a[1],b)];case
+2:return[2,c3(a[1],b)];case
+3:return[3,c3(a[1],b)];case
+4:return[4,c3(a[1],b)];case
+5:return[5,c3(a[1],b)];case
+6:return[6,c3(a[1],b)];case
+7:return[7,c3(a[1],b)];case
+8:var
+c=a[1];return[8,c,c3(a[2],b)];case
+9:var
+d=a[2],e=a[1];return[9,e,d,c3(a[3],b)];case
+10:return[10,c3(a[1],b)];case
+11:return[11,c3(a[1],b)];case
+12:return[12,c3(a[1],b)];case
+13:return[13,c3(a[1],b)];default:return[14,c3(a[1],b)]}}function
+bL(a,b){if(typeof
+a==="number")return b;else
+switch(a[0]){case
+0:return[0,bL(a[1],b)];case
+1:return[1,bL(a[1],b)];case
+2:var
+c=a[1];return[2,c,bL(a[2],b)];case
+3:var
+d=a[1];return[3,d,bL(a[2],b)];case
+4:var
+e=a[3],f=a[2],g=a[1];return[4,g,f,e,bL(a[4],b)];case
+5:var
+h=a[3],i=a[2],j=a[1];return[5,j,i,h,bL(a[4],b)];case
+6:var
+k=a[3],l=a[2],m=a[1];return[6,m,l,k,bL(a[4],b)];case
+7:var
+n=a[3],o=a[2],p=a[1];return[7,p,o,n,bL(a[4],b)];case
+8:var
+q=a[3],r=a[2],s=a[1];return[8,s,r,q,bL(a[4],b)];case
+9:var
+t=a[1];return[9,t,bL(a[2],b)];case
+10:return[10,bL(a[1],b)];case
+11:var
+u=a[1];return[11,u,bL(a[2],b)];case
+12:var
+v=a[1];return[12,v,bL(a[2],b)];case
+13:var
+w=a[2],x=a[1];return[13,x,w,bL(a[3],b)];case
+14:var
+y=a[2],z=a[1];return[14,z,y,bL(a[3],b)];case
+15:return[15,bL(a[1],b)];case
+16:return[16,bL(a[1],b)];case
+17:var
+A=a[1];return[17,A,bL(a[2],b)];case
+18:var
+B=a[1];return[18,B,bL(a[2],b)];case
+19:return[19,bL(a[1],b)];case
+20:var
+C=a[2],D=a[1];return[20,D,C,bL(a[3],b)];case
+21:var
+E=a[1];return[21,E,bL(a[2],b)];case
+22:return[22,bL(a[1],b)];case
+23:var
+F=a[1];return[23,F,bL(a[2],b)];default:var
+G=a[2],H=a[1];return[24,H,G,bL(a[3],b)]}}function
+p6(a,c,b){return a[1]===c?(a[1]=b,1):0}function
+aB(a){throw[0,fT,a]}function
+bA(a){throw[0,g0,a]}var
+kY=[bl,Nb,cK(0)];function
+t5(b,a){return MQ(b,a)?b:a}function
+fl(a){return 0<=a?a:-a|0}var
+t6=i9(Nd),t7=i9(Ne),Nc=sl,fU=h1,Ng=i9(Nf);function
+bf(d,c){var
+a=ay(d),e=ay(c),b=bR(a+e|0);eF(d,0,b,0,a);eF(c,0,b,a,e);return cB(b)}function
+Nh(a){return a?Ni:Nj}bOm(0);var
+Nm=MU(1),eI=MU(2);function
+Nn(b){function
+a(b){var
+a=b;for(;;){if(a){var
+c=a[2],d=a[1];try{hv(d)}catch(a){a=m(a);if(a[1]!==t3)throw a;var
+e=a}var
+a=c;continue}return 0}}return a(bOn(0))}function
+jd(b,a){return tR(b,a,0,ay(a))}function
+t8(a){jd(eI,a);MV(eI,10);return hv(eI)}var
+p9=[0,Nn];function
+Np(c){for(;;){var
+a=p9[1],d=[0,1],b=1-p6(p9,a,function(a,b){return function(d){if(p6(a,1,0))k(c,0);return k(b,0)}}(d,a));if(b)continue;return b}}function
+p_(a){return k(p9[1],0)}tU(a(wM),p_);function
+p$(b,c,g){var
+a=k(c,0);if(a){var
+d=a[2],e=a[1],f=function(a){return p$(b,d,a)};return[0,k(b,e),f]}return 0}function
+t9(d,c){var
+b=c;for(;;){var
+a=k(b,0);if(a){var
+e=a[2];k(d,a[1]);var
+b=e;continue}return 0}}function
+fV(a){if(0<=a&&!(iA>>0){if(!(25>>0))c=1}else
+if(23!==b)c=1;return c?a+32|0:a}function
+t_(a){var
+b=a-224|0,c=0;if(30>>0){if(!(25>>0))c=1}else
+if(23!==b)c=1;return c?a+r3|0:a}var
+qb=bOA(0),fW=(4*qb|0)-1|0;function
+Nx(a){return 25>>0?a:a+r3|0}function
+fX(c){var
+b=0,a=c;for(;;){if(a){var
+b=b+1|0,a=a[2];continue}return b}}function
+t$(a){return a?a[1]:aB(Ny)}function
+ua(a){return a?a[2]:aB(Nz)}function
+kZ(d,c){if(0<=c){var
+a=d,b=c;for(;;){if(a){var
+e=a[2],f=a[1];if(0===b)return f;var
+a=e,b=b-1|0;continue}return aB(NA)}}return bA(NB)}function
+eJ(d){var
+a=d,b=0;for(;;){if(a){var
+c=[0,a[1],b],a=a[2],b=c;continue}return b}}function
+je(b,a){if(a){var
+c=a[2],d=k(b,a[1]);return[0,d,je(b,c)]}return 0}function
+ub(c,b){var
+a=b;for(;;){if(a){var
+d=a[2];k(c,a[1]);var
+a=d;continue}return 0}}function
+uc(e){var
+f=0;return function(g){var
+b=f,a=g;for(;;){if(a){var
+c=a[2],d=a[1];if(k(e,d)){var
+b=[0,d,b],a=c;continue}var
+a=c;continue}return eJ(b)}}}function
+jf(b,a){return a<=b?b:a}function
+eK(a,c){var
+b=bR(a);bNW(b,0,a,c);return b}function
+ud(a){var
+b=dJ(a),c=bR(b);gW(a,0,c,0,b);return c}function
+k0(a){return cB(ud(a))}function
+ue(c,b,a){if(0<=b&&0<=a&&!((dJ(c)-a|0)>>0))e=1}else
+if(65<=d)e=1}else{var
+f=0;if(32!==d)if(43<=d)switch(d+AB|0){case
+5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else
+if(2===n)p=1;if(!p){var
+j=j+1|0;continue}var
+e=eG(k),a=[0,0],r=dJ(e)-1|0,w=0;if(!(r<0)){var
+i=w;for(;;){var
+f=kM(e,i),g=0;if(32<=f){var
+l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else
+if(56>>0){g=1;q=1}if(!q){var
+m=1;g=2}}else
+if(11<=f){if(13===f)g=1}else
+if(8<=f)g=1;switch(g){case
+0:var
+m=4;break;case
+1:var
+m=2;break}a[1]=a[1]+m|0;var
+z=i+1|0;if(r!==i){var
+i=z;continue}break}}if(a[1]===dJ(e))var
+t=ud(e);else{var
+b=bR(a[1]);a[1]=0;var
+s=dJ(e)-1|0,x=0;if(!(s<0)){var
+h=x;for(;;){var
+c=kM(e,h),d=0;if(35<=c)if(92===c)d=2;else
+if(cu<=c)d=1;else
+d=3;else
+if(32<=c)if(34<=c)d=2;else
+d=3;else
+if(14<=c)d=1;else
+switch(c){case
+8:b$(b,a[1],92);a[1]++;b$(b,a[1],98);break;case
+9:b$(b,a[1],92);a[1]++;b$(b,a[1],hp);break;case
+10:b$(b,a[1],92);a[1]++;b$(b,a[1],iH);break;case
+13:b$(b,a[1],92);a[1]++;b$(b,a[1],114);break;default:d=1}switch(d){case
+1:b$(b,a[1],92);a[1]++;b$(b,a[1],48+(c/cA|0)|0);a[1]++;b$(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;b$(b,a[1],48+(c%10|0)|0);break;case
+2:b$(b,a[1],92);a[1]++;b$(b,a[1],c);break;case
+3:b$(b,a[1],c);break}a[1]++;var
+y=h+1|0;if(s!==h){var
+h=y;continue}break}}var
+t=b}var
+o=cB(t)}var
+u=ay(o),v=eK(u+2|0,34);eF(o,0,v,1,u);return cB(v)}}function
+uo(d,f){var
+g=fl(f),e=Pz[1];switch(d[2]){case
+0:var
+b=Cj;break;case
+1:var
+b=eg;break;case
+2:var
+b=69;break;case
+3:var
+b=pj;break;case
+4:var
+b=71;break;case
+5:var
+b=e;break;case
+6:var
+b=cX;break;case
+7:var
+b=72;break;default:var
+b=70}var
+c=uk(16);hF(c,37);switch(d[1]){case
+0:break;case
+1:hF(c,43);break;default:hF(c,32)}if(8<=d[2])hF(c,35);hF(c,46);cN(c,a(ac+g));hF(c,b);return um(c)}function
+k2(m,a){if(13<=m){var
+g=[0,0],h=ay(a)-1|0,n=0;if(!(h<0)){var
+c=n;for(;;){if(!(9>>0))g[1]++;var
+q=c+1|0;if(h!==c){var
+c=q;continue}break}}var
+i=g[1],j=bR(ay(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){c1(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=ay(a)-1|0,o=0;if(!(l<0)){var
+b=o;for(;;){var
+f=ep(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var
+p=b+1|0;if(l!==b){var
+b=p;continue}break}}return cB(j)}return a}function
+PA(b,c){switch(b){case
+1:var
+a=OM;break;case
+2:var
+a=ON;break;case
+4:var
+a=OP;break;case
+5:var
+a=OQ;break;case
+6:var
+a=OR;break;case
+7:var
+a=OS;break;case
+8:var
+a=OT;break;case
+9:var
+a=OU;break;case
+10:var
+a=OV;break;case
+11:var
+a=OW;break;case
+0:case
+13:var
+a=OL;break;case
+3:case
+14:var
+a=OO;break;default:var
+a=OX}return k2(b,pR(a,c))}function
+PB(b,c){switch(b){case
+1:var
+a=Pa;break;case
+2:var
+a=Pb;break;case
+4:var
+a=Pd;break;case
+5:var
+a=Pe;break;case
+6:var
+a=Pf;break;case
+7:var
+a=Pg;break;case
+8:var
+a=Ph;break;case
+9:var
+a=Pi;break;case
+10:var
+a=Pj;break;case
+11:var
+a=Pk;break;case
+0:case
+13:var
+a=O$;break;case
+3:case
+14:var
+a=Pc;break;default:var
+a=Pl}return k2(b,pR(a,c))}function
+PC(b,c){switch(b){case
+1:var
+a=Pn;break;case
+2:var
+a=Po;break;case
+4:var
+a=Pq;break;case
+5:var
+a=Pr;break;case
+6:var
+a=Ps;break;case
+7:var
+a=Pt;break;case
+8:var
+a=Pu;break;case
+9:var
+a=Pv;break;case
+10:var
+a=Pw;break;case
+11:var
+a=Px;break;case
+0:case
+13:var
+a=Pm;break;case
+3:case
+14:var
+a=Pp;break;default:var
+a=Py}return k2(b,pR(a,c))}function
+PD(b,c){switch(b){case
+1:var
+a=OZ;break;case
+2:var
+a=O0;break;case
+4:var
+a=O2;break;case
+5:var
+a=O3;break;case
+6:var
+a=O4;break;case
+7:var
+a=O5;break;case
+8:var
+a=O6;break;case
+9:var
+a=O7;break;case
+10:var
+a=O8;break;case
+11:var
+a=O9;break;case
+0:case
+13:var
+a=OY;break;case
+3:case
+14:var
+a=O1;break;default:var
+a=O_}return k2(b,bN9(a,c))}function
+fn(b,e,a){function
+f(d){switch(b[1]){case
+0:var
+c=45;break;case
+1:var
+c=43;break;default:var
+c=32}return bN6(a,e,c)}function
+j(c){var
+b=pO(a);return 3===b?a<0.?PF:PG:4<=b?PH:c}switch(b[2]){case
+5:var
+d=tJ(uo(b,e),a),c=0,k=ay(d);for(;;){if(c===k)var
+i=0;else{var
+g=aL(d,c)+Jv|0,h=0;if(23>>0){if(55===g)h=1}else
+if(21>>0)h=1;if(!h){var
+c=c+1|0;continue}var
+i=1}var
+l=i?d:bf(d,PE);return j(l)}case
+6:return f(0);case
+7:return cB(qd(Nx,eG(f(0))));case
+8:return j(f(0));default:return tJ(uo(b,e),a)}}function
+jM(d,x,w,v){var
+b=x,a=w,c=v;for(;;)if(typeof
+c==="number")return k(b,a);else
+switch(c[0]){case
+0:var
+y=c[1];return function(c){return bg(b,[5,a,c],y)};case
+1:var
+z=c[1];return function(c){var
+e=0;if(40<=c)if(92===c)var
+d=Nr;else
+if(cu<=c)e=1;else
+e=2;else
+if(32<=c)if(39<=c)var
+d=Ns;else
+e=2;else
+if(14<=c)e=1;else
+switch(c){case
+8:var
+d=Nt;break;case
+9:var
+d=Nu;break;case
+10:var
+d=Nv;break;case
+13:var
+d=Nw;break;default:e=1}switch(e){case
+1:var
+f=bR(4);b$(f,0,92);b$(f,1,48+(c/cA|0)|0);b$(f,2,48+((c/10|0)%10|0)|0);b$(f,3,48+(c%10|0)|0);var
+d=cB(f);break;case
+2:var
+g=bR(1);b$(g,0,c);var
+d=cB(g);break}var
+h=ay(d),i=eK(h+2|0,39);eF(d,0,i,1,h);return bg(b,[4,a,cB(i)],z)};case
+2:var
+A=c[2],B=c[1];return ql(b,a,A,B,function(a){return a});case
+3:return ql(b,a,c[2],c[1],OK);case
+4:return k3(b,a,c[4],c[2],c[3],PA,c[1]);case
+5:return k3(b,a,c[4],c[2],c[3],PB,c[1]);case
+6:return k3(b,a,c[4],c[2],c[3],PC,c[1]);case
+7:return k3(b,a,c[4],c[2],c[3],PD,c[1]);case
+8:var
+g=c[4],h=c[3],i=c[2],f=c[1];if(typeof
+i==="number"){if(typeof
+h==="number")return h?function(d,c){return bg(b,[4,a,fn(f,d,c)],g)}:function(c){return bg(b,[4,a,fn(f,qj(f),c)],g)};var
+S=h[1];return function(c){return bg(b,[4,a,fn(f,S,c)],g)}}else{if(0===i[0]){var
+m=i[2],n=i[1];if(typeof
+h==="number")return h?function(d,c){return bg(b,[4,a,dt(n,m,fn(f,d,c))],g)}:function(c){return bg(b,[4,a,dt(n,m,fn(f,qj(f),c))],g)};var
+T=h[1];return function(c){return bg(b,[4,a,dt(n,m,fn(f,T,c))],g)}}var
+o=i[1];if(typeof
+h==="number")return h?function(e,d,c){return bg(b,[4,a,dt(o,e,fn(f,d,c))],g)}:function(d,c){return bg(b,[4,a,dt(o,d,fn(f,qj(f),c))],g)};var
+U=h[1];return function(d,c){return bg(b,[4,a,dt(o,d,fn(f,U,c))],g)}}case
+9:return ql(b,a,c[2],c[1],Nh);case
+10:var
+a=[7,a],c=c[1];continue;case
+11:var
+a=[2,a,c[1]],c=c[2];continue;case
+12:var
+a=[3,a,c[1]],c=c[2];continue;case
+13:var
+C=c[3],D=c[2],p=uk(16);qk(p,D);var
+u=um(p);return function(c){return bg(b,[4,a,u],C)};case
+14:var
+E=c[3],F=c[2];return function(d){var
+e=d[1],c=bB(e,bY(ch(F)));if(typeof
+c[2]==="number")return bg(b,a,bL(c[1],E));throw cC};case
+15:var
+G=c[1];return function(d,c){return bg(b,[6,a,function(a){return W(d,a,c)}],G)};case
+16:var
+H=c[1];return function(c){return bg(b,[6,a,c],H)};case
+17:var
+a=[0,a,c[1]],c=c[2];continue;case
+18:var
+l=c[1];if(0===l[0]){var
+I=c[2],J=l[1][1],K=0,b=function(b,c,d){return function(a){return bg(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var
+L=c[2],M=l[1][1],N=0,b=function(b,c,d){return function(a){return bg(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case
+19:throw[0,a1,PJ];case
+20:var
+O=c[3],P=[8,a,PK];return function(a){return bg(b,P,O)};case
+21:var
+Q=c[2];return function(c){return bg(b,[4,a,pR(PL,c)],Q)};case
+22:var
+R=c[1];return function(c){return bg(b,[5,a,c],R)};case
+23:var
+e=c[2],j=c[1];if(typeof
+j==="number")switch(j){case
+0:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+1:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+2:throw[0,a1,PM];default:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e])}else
+switch(j[0]){case
+0:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+1:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+2:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+3:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+4:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+5:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+6:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+7:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+8:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);case
+9:var
+t=j[2];return d<50?rr(d+1|0,b,a,t,e):bX(rr,[0,b,a,t,e]);case
+10:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e]);default:return d<50?by(d+1|0,b,a,e):bX(by,[0,b,a,e])}default:var
+q=c[3],r=c[1],s=k(c[2],0);return d<50?rq(d+1|0,b,a,q,r,s):bX(rq,[0,b,a,q,r,s])}}function
+rr(e,d,c,a,b){if(typeof
+a==="number")return e<50?by(e+1|0,d,c,b):bX(by,[0,d,c,b]);else
+switch(a[0]){case
+0:var
+f=a[1];return function(a){return dK(d,c,f,b)};case
+1:var
+g=a[1];return function(a){return dK(d,c,g,b)};case
+2:var
+h=a[1];return function(a){return dK(d,c,h,b)};case
+3:var
+i=a[1];return function(a){return dK(d,c,i,b)};case
+4:var
+j=a[1];return function(a){return dK(d,c,j,b)};case
+5:var
+k=a[1];return function(a){return dK(d,c,k,b)};case
+6:var
+l=a[1];return function(a){return dK(d,c,l,b)};case
+7:var
+m=a[1];return function(a){return dK(d,c,m,b)};case
+8:var
+n=a[2];return function(a){return dK(d,c,n,b)};case
+9:var
+o=a[3],p=a[2],q=cr(ch(a[1]),p);return function(a){return dK(d,c,c3(q,o),b)};case
+10:var
+r=a[1];return function(e,a){return dK(d,c,r,b)};case
+11:var
+s=a[1];return function(a){return dK(d,c,s,b)};case
+12:var
+t=a[1];return function(a){return dK(d,c,t,b)};case
+13:throw[0,a1,PN];default:throw[0,a1,PO]}}function
+by(d,b,e,a){var
+c=[8,e,PP];return d<50?jM(d+1|0,b,c,a):bX(jM,[0,b,c,a])}function
+rq(g,b,e,a,d,c){if(d){var
+h=d[1];return function(d){return PI(b,e,a,h,k(c,d))}}var
+f=[4,e,c];return g<50?jM(g+1|0,b,f,a):bX(jM,[0,b,f,a])}function
+bg(a,b,c){return hy(jM(0,a,b,c))}function
+dK(a,b,c,d){return hy(rr(0,a,b,c,d))}function
+PI(a,b,c,d,e){return hy(rq(0,a,b,c,d,e))}function
+ql(e,d,c,a,b){if(typeof
+a==="number")return function(a){return bg(e,[4,d,k(b,a)],c)};else{if(0===a[0]){var
+f=a[2],g=a[1];return function(a){return bg(e,[4,d,dt(g,f,k(b,a))],c)}}var
+h=a[1];return function(f,a){return bg(e,[4,d,dt(h,f,k(b,a))],c)}}}function
+k3(f,e,d,g,c,b,a){if(typeof
+g==="number"){if(typeof
+c==="number")return c?function(g,c){return bg(f,[4,e,hG(g,W(b,a,c))],d)}:function(c){return bg(f,[4,e,W(b,a,c)],d)};var
+k=c[1];return function(c){return bg(f,[4,e,hG(k,W(b,a,c))],d)}}else{if(0===g[0]){var
+h=g[2],i=g[1];if(typeof
+c==="number")return c?function(g,c){return bg(f,[4,e,dt(i,h,hG(g,W(b,a,c)))],d)}:function(c){return bg(f,[4,e,dt(i,h,W(b,a,c))],d)};var
+l=c[1];return function(c){return bg(f,[4,e,dt(i,h,hG(l,W(b,a,c)))],d)}}var
+j=g[1];if(typeof
+c==="number")return c?function(h,g,c){return bg(f,[4,e,dt(j,h,hG(g,W(b,a,c)))],d)}:function(g,c){return bg(f,[4,e,dt(j,g,W(b,a,c))],d)};var
+m=c[1];return function(g,c){return bg(f,[4,e,dt(j,g,hG(m,W(b,a,c)))],d)}}}function
+fo(b,e){var
+a=e;for(;;)if(typeof
+a==="number")return 0;else
+switch(a[0]){case
+0:var
+f=a[1],g=un(a[2]);fo(b,f);return jd(b,g);case
+1:var
+c=a[2],d=a[1];if(0===c[0]){var
+h=c[1];fo(b,d);jd(b,PQ);var
+a=h;continue}var
+i=c[1];fo(b,d);jd(b,PR);var
+a=i;continue;case
+6:var
+m=a[2];fo(b,a[1]);return k(m,b);case
+7:fo(b,a[1]);return hv(b);case
+8:var
+n=a[2];fo(b,a[1]);return bA(n);case
+2:case
+4:var
+j=a[2];fo(b,a[1]);return jd(b,j);default:var
+l=a[2];fo(b,a[1]);return MV(b,l)}}function
+fp(b,e){var
+a=e;for(;;)if(typeof
+a==="number")return 0;else
+switch(a[0]){case
+0:var
+f=a[1],g=un(a[2]);fp(b,f);return jm(b,g);case
+1:var
+c=a[2],d=a[1];if(0===c[0]){var
+h=c[1];fp(b,d);jm(b,PS);var
+a=h;continue}var
+i=c[1];fp(b,d);jm(b,PT);var
+a=i;continue;case
+6:var
+m=a[2];fp(b,a[1]);return jm(b,k(m,0));case
+7:var
+a=a[1];continue;case
+8:var
+n=a[2];fp(b,a[1]);return bA(n);case
+2:case
+4:var
+j=a[2];fp(b,a[1]);return jm(b,j);default:var
+l=a[2];fp(b,a[1]);return uj(b,l)}}function
+PU(a){if(gZ(a,PV))return PW;var
+d=ay(a);function
+f(d){var
+c=PX[1],b=hD(dC);return k(bg(function(a){fp(b,a);return aB(hE(b))},0,c),a)}function
+g(e){var
+b=e;for(;;){if(b===d)return b;var
+c=aL(a,b);if(9!==c&&32!==c)return b;var
+b=b+1|0;continue}}function
+o(e,c){var
+b=c;for(;;){if(b===d)return b;if(25>>0)return b;var
+b=b+1|0;continue}}function
+p(g,f){var
+b=f;for(;;){if(b===d)return b;var
+c=aL(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else
+if(45===c)e=1;if(e){var
+b=b+1|0;continue}return b}}var
+e=g(0),j=o(e,e),b=d1(a,e,j-e|0),c=g(j),h=p(c,c);if(c===h)var
+i=0;else
+try{var
+q=kS(d1(a,c,h-c|0)),i=q}catch(a){a=m(a);if(a[1]!==fT)throw a;var
+i=f(0)}if(g(h)!==d)f(0);var
+n=0;if(M(b,PY)&&M(b,PZ))var
+l=M(b,P0)?M(b,P1)?M(b,P2)?M(b,P3)?f(0):1:2:3:0;else
+n=1;if(n)var
+l=4;return[0,i,l]}function
+up(d,c){var
+a=c[1],b=0;return bg(function(a){fo(d,a);return 0},b,a)}function
+jo(a){return up(eI,a)}function
+aG(b){var
+a=b[1];return bg(function(b){var
+a=hD(64);fp(a,b);return hE(a)},0,a)}var
+qm=[0,0];function
+qo(h,g){var
+a=h[1+g];if(1-(typeof
+a==="number"?1:0)){if(d0(a)===ma)return k(aG(P4),a);if(d0(a)===on){var
+c=tJ(Nl,a),b=0,f=ay(c);for(;;){if(f<=b)return bf(c,Nk);var
+d=aL(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else
+if(45===d)e=1;if(e){var
+b=b+1|0;continue}return c}}return P5}return k(aG(P6),a)}function
+uq(b,a){if(b.length-1<=a)return P7;var
+c=uq(b,a+1|0),d=qo(b,a);return W(aG(P8),d,c)}function
+k4(a){function
+o(e){var
+b=e;for(;;){if(b){var
+f=b[2],g=b[1];try{var
+d=0,c=k(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var
+b=f;continue}return 0}}var
+g=o(qm[1]);if(g)return g[1];if(a===p7)return Qb;if(a===t2)return Qc;if(a[1]===t1){var
+c=a[2],h=c[3],p=c[2],q=c[1];return lP(aG(qn),q,p,h,h+5|0,Qd)}if(a[1]===a1){var
+d=a[2],i=d[3],r=d[2],s=d[1];return lP(aG(qn),s,r,i,i+6|0,Qe)}if(a[1]===t4){var
+e=a[2],j=e[3],t=e[2],u=e[1];return lP(aG(qn),u,t,j,j+6|0,Qf)}if(0===d0(a)){var
+f=a.length-1,v=a[1][1];if(2>>0)var
+l=uq(a,2),m=qo(a,1),b=W(aG(P9),m,l);else
+switch(f){case
+0:var
+b=P_;break;case
+1:var
+b=P$;break;default:var
+n=qo(a,1),b=k(aG(Qa),n)}return bf(v,b)}return a[1]}function
+qp(t,s){var
+d=bNU(s),f=d.length-1-1|0,p=0;if(!(f<0)){var
+b=p;for(;;){var
+a=aX(d,b)[1+b],e=function(a){return function(b){return b?0===a?Qg:Qh:0===a?Qi:Qj}}(b);if(0===a[0])var
+g=a[5],h=a[4],i=a[3],j=a[6]?Qk:Qm,l=a[2],m=a[7],n=e(a[1]),c=[0,bNL(aG(Ql),n,m,l,j,i,h,g)];else
+if(a[1])var
+c=0;else
+var
+o=e(0),c=[0,k(aG(Qn),o)];if(c){var
+q=c[1];k(up(t,Qo),q)}var
+r=b+1|0;if(f!==b){var
+b=r;continue}break}}return 0}function
+k5(c){for(;;){var
+a=qm[1],b=1-p6(qm,a,[0,c,a]);if(b)continue;return b}}var
+Qq=Qp.slice();function
+Qr(d,c){var
+e=k4(d);k(jo(Qs),e);qp(eI,c);var
+a=bOl(0);if(a<0){var
+b=fl(a);t8(aX(Qq,b)[1+b])}return hv(eI)}var
+Qt=[0];tU(a(Dj),function(d,h){try{try{var
+b=h?Qt:MO(0);try{p_(0)}catch(a){}try{var
+a=Qr(d,b),c=a}catch(a){a=m(a);var
+f=k4(d);k(jo(Qv),f);qp(eI,b);var
+g=k4(a);k(jo(Qw),g);qp(eI,MO(0));var
+c=hv(eI)}var
+e=c}catch(a){a=m(a);if(a!==p7)throw a;var
+e=t8(Qu)}return e}catch(a){return 0}});var
+Qy=[bl,Qx,cK(0)];k5(function(a){return a[1]===Qy?[0,bf(Qz,k4(a[2]))]:0});function
+k6(a){var
+b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function
+fq(a){a[4]=-a[4]|0;return 0}try{var
+bNI=M2(bNH),us=bNI}catch(a){a=m(a);if(a!==b5)throw a;try{var
+bNG=M2(bNF),ur=bNG}catch(a){a=m(a);if(a!==b5)throw a;var
+ur=QB}var
+us=ur}var
+QC=qe(us,82),k7=[bu,function(w){var
+m=bOB(0),c=[0,dY(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aX(c[1],b)[1+b]=b;var
+v=b+1|0;if(54!==b){var
+b=v;continue}var
+g=[0,QA],k=54+jf(55,j)|0,r=0;if(!(k<0)){var
+d=r;for(;;){var
+e=d%55|0,l=bOp(d,j),s=aX(i,l)[1+l],h=bf(g[1],a(ac+s));g[1]=bOk(h,0,ay(h));var
+f=g[1],n=aL(f,3)<<24,o=aL(f,2)<<16,p=aL(f,1)<<8,q=((aL(f,0)+p|0)+o|0)+n|0,t=(aX(c[1],e)[1+e]^q)&tw;aX(c[1],e)[1+e]=t;var
+u=d+1|0;if(k!==d){var
+d=u;continue}break}}c[2]=0;return c}}];function
+ut(h,k){var
+l=h?h[1]:QC,b=16;for(;;){if(!(k<=b)&&!(qb<(b*2|0))){var
+b=b*2|0;continue}if(l){var
+i=d0(k7),a=dP===i?k7[1]:bu===i?fm(k7):k7;a[2]=(a[2]+1|0)%55|0;var
+c=a[2],d=aX(a[1],c)[1+c],e=(a[2]+24|0)%55|0,f=(aX(a[1],e)[1+e]+(d^(d>>>25|0)&31)|0)&tw,g=a[2];aX(a[1],g)[1+g]=f;var
+j=f}else
+var
+j=0;return[0,0,dY(b,0),j,b]}}function
+uu(a){var
+c=0>>0))uA(a,q)}else
+k9(a)}var
+S=a[9]-R|0,T=1===H?1:a[9]>>3|0,fV(gX(b,a>>>3|0)|1<<(a&7)))}function
+lk(b){var
+a=qB(0);jq(a,b);return a}function
+ll(c){var
+b=bR(32),a=0;for(;;){c1(b,a,fV(gX(c,a)^iA));var
+d=a+1|0;if(31!==a){var
+a=d;continue}return b}}function
+qC(d,c){var
+b=bR(32),a=0;for(;;){var
+e=gX(c,a);c1(b,a,fV(gX(d,a)|e));var
+f=a+1|0;if(31!==a){var
+a=f;continue}return b}}function
+SC(c,b){try{var
+a=0;for(;;){var
+e=gX(b,a);if(0!==(gX(c,a)&e))throw kY;var
+f=a+1|0;if(31!==a){var
+a=f;continue}var
+d=1;return d}}catch(a){a=m(a);if(a===kY)return 0;throw a}}function
+uY(e,d){var
+a=0;for(;;){var
+c=gX(d,a);if(0!==c){var
+b=0;for(;;){if(0!==(c&1<>>0)if(9<=r)var
+j=[0,[9,k+mR|0],g+1|0];else
+l=1;else
+if(r)l=2;else{var
+G=y[1];y[1]++;var
+t=z(g+1|0),o=t[2],A=0,H=t[1];if((o+1|0)